





밑의 private registry같은 경우는 도커 허브는 아니고, 개인 pc에 프라이빗하게 registry를 만들어서 쓸 수 있는데, 그 때 개인 pc나 서비스의 이름으로 사용 가능(서버의 주소)
docker image repository 부터 Docker image를 가져오는 커맨드
$ docker pull –help
ex) docker pull ubuntu:18.04
현재 버전이 달라도 :18.04 를 하면 18을 돌릴 수 있음

로컬에 존재하는 docker image 리스트를 출력
$ docker images -help
ex) docker images

현재 실행중인 도커 컨테이너 리스트를 출력
$ docker ps --help
ex) docker ps
ex) docker ps -a (전체 내역을 볼 수 있음)

도커 컨테이너를 실행시키는 커맨드
$ docker run --help
ex) docker run -it --name demo1 ubuntu:18.04 /bin/bash
:-i 옵션 + -t 옵션/bin/bash/bin/bash 는 bash 터미널을 사용하는 것을 의미합니다.
docker 접속 이후 $가 아닌 #으로 보이는데, 이는 최고 관리자임을 의미
Docker 컨테이너 내부에서 명령을 내리거나, 내부로 접속하는 커맨드
$ docker exec -help
ex) docker run -it -d --name demo2 ubuntu:18.04
docker ps
docker exec -it demo2 /bin/bash
아까와 동일하게 container 내부에 접속할 수 있는 것을 확인 가능

도커 컨테이너의 log를 확인하는 커맨드
docker run$ docker logs --help
ex) docker run --name demo3 -d busybox sh -c "while true; do $(echo date); sleep 1; done“
docker logs demo3
docker logs demo3 -f


실행 중인 도커 컨테이너를 중단시키는 커맨드
$ docker stop --help
ex) docker stop demo3
docker stop demo2
docker stop demo1

실행 중인 도커 컨테이너를 삭제하는 커맨드
$ docker rm --help
ex) docker rm demo3
docker rm demo2
docker rm demo1
실행 중인 도커 이미지 확인

도커 이미지를 삭제하는 커맨드
$ docker rmi --help
ex) docker images
docker rmi ubuntu

magical_ganguly로 해당 이름으로 rm을 시도해야 삭제 가능Dockerfile 이라는 이름으로 빈 file 을 하나 만듦
$ cd $HOME # home 디렉토리로 이동합니다.
$ mkdir docker-practice # docker-practice 라는 이름의 폴더를 생성합니다.
$ cd docker-practice # docker-practice 폴더로 이동합니다.
$ touch Dockerfile # Dockerfile 이라는 빈 파일을 생성합니다.
$ ls # 정상적으로 생성되었는지 확인합니다.
: Dockerfile 이 base image 로 어떠한 이미지를 사용할 것인지를 명시하는 명령어입니다
FROM <image>[:<tag>] [AS <name>]
# 예시
FROM ubuntu
FROM ubuntu:18.04
FROM nginx:latest AS ngx
: <src> 의 파일 혹은 디렉토리를 <dest> 경로에 복사하는 명령어입니다.
COPY <src>... <dest>
# 예시
COPY a.txt /some-directory/b.txt
COPY my-directory /some-directory-2
: 명시한 커맨드를 도커 컨테이너에서 실행하는 것을 명시하는 명령어입니다
RUN <command>
RUN ["executable-command", "parameter1", "parameter2"]
# 예시
RUN pip install torch
RUN pip install -r requirements.txt
: 이후 작성될 명령어를 컨테이너 내의 어떤 디렉토리에서 수행할 것인지를 명시하는 명령어입니다.
WORKDIR /path/to/workdir
# 예시
WORKDIR /home/demo
: 컨테이너 내부에서 지속적으로 사용될 environment variable 의 값을 설정하는 명령어입니다.
ENV <key> <value>
ENV <key>=<value>
# 예시
# default 언어 설정
RUN locale-gen ko_KR.UTF-8
ENV LANG ko_KR.UTF-8
ENV LANGUAGE ko_KR.UTF-8
ENV LC_ALL ko_KR.UTF-8
: 컨테이너에서 뚫어줄 포트/프로토콜을 지정할 수 있습니다. protocol 을 지정하지 않으면 TCP 가 디폴트로 설정됩니다
EXPOSE <port>
EXPOSE <port>/<protocol>
# 예시
EXPOSE 8080
docker build 명령어로 Dockerfile 로부터 Docker Image 를 만듦
# base image 를 ubuntu 18.04 로 설정합니다.
FROM ubuntu:18.04
# apt-get update 명령을 실행합니다.
RUN apt-get update
# DOCKER CONTAINER 가 시작될 때, "Hello World" 를 출력합니다.
CMD ["echo", "Hello FastCampus"]
$ docker build --help
# 자세한 옵션들에 대한 설명은 생략
# Dockerfile 이 있는 경로에서 다음 명령을 실행합니다.
$ docker build -t my-image:v1.0.0 .
# grep : my-image 가 있는지를 잡아내는 (grep) 하는 명령어
$ docker images | grep my-image
$ docker run my-image:v1.0.0
간단하게 도커 레지스트리를 직접 띄워본 뒤에, 방금 빌드한 my-image:v1.0.0 을 도커 레지스트리에 push
$ docker run -d -p 5000:5000 --name registry registry
$ docker ps
# 정상적으로 registry 이미지가 registry 라는 이름으로 생성되었음을 확인할 수 있습니다.
$ docker tag my-image:v1.0.0 localhost:5000/my-image:v1.0.0
$ docker images | grep my-image
$ docker push localhost:5000/my-image:v1.0.0
$ curl -X GET http://localhost:5000/v2/_catalog
$ curl -X GET http://localhost:5000/v2/my-image/tags/list


