# 생성된 컨테이너가 없을 때 생성 및 접속 docker run -it --name <컨테이너 이름> <이미지> ex : docker run -it --name ubuntu20.04 ubuntu:20.04
# 생성된 컨테이너가 없을 때 생성 및 접속하되, 백그라운드로 실행 및 container ID 출력 docker run -dit --name <컨테이너 이름> <이미지> ex : docker run -dit --name ubuntu20.04 ubuntu:20.04
# 생성된 컨테이너가 없을 때 생성 및 접속하되, 종료 시 삭제 docker run --rm -it --name <컨테이너 이름> <이미지> ex : docker run --rm -it --name ubuntu20.04 ubuntu:20.04
# 생성된 컨테이너가 없을 때 디렉토리를 마운트하며 생성 및 접속 docker run -it --name <컨테이너 이름> --volume="$PWD:/<컨테이너 내 경로>" <이미지> ex 1 : docker run -it --name ubuntu20.04 --volume="$PWD:/test_dir" ubuntu:20.04 ex 2 : docker run -it --name ubuntu20.04 -v $PWD:/test_dir ubuntu:20.04
# port를 지정하며 실행 docker run -it -p <host port:container port>/<protocol> --name <컨테이너 이름> <이미지> ex 1 : docker run -it -p 80:80 --name ubuntu20.04 ubuntu:20.04 ex 2 : docker run -it -p 80:80/tcp --name ubuntu20.04 ubuntu:20.04
# 종료되어 있는 컨테이너를 시작 docker start <container 이름 or ID> ex : docker start ubuntu20.04
# 생성한 컨테이너에 접속(container 실행시 사용) docker attach <container 이름 또는 container ID> ex : docker attach ubuntu20.04
# 생성된 컨테이너가 있을 때 실행(외부에서 컨테이너 진입할 때 사용) docker exec -it <container name> <command> ex : docker exec -it ubuntu20.04 /bin/bash
image download
1 2
docker pull <image 이름> ex : docker pull ubuntu:20.04
# Usage docker run <options> Image <command> <ARG...>
# run 옵션 -i(--interactive) : 사용자가 입출력을 할 수 있는 상태 -t(--tty) : 가상 터미널 환경을 에뮬레이션 한다. -v(--volume) : 공유 디렉토리 설정 -d(--detach) : 컨테이너를 일반 프로세스가 아닌 데몬프로세스 형태로 실행하여 프로세스가 끝나도 유지되도록 한다 -e(--env) : docker -e KEY=value와 같이 사용하며 컨테이너에 환경변수를 설정한다. -p : port의 줄임말로 특정 포트를 컨테이너에 포트 포워딩하기 위해 사용한다. --rm : 컨테이너가 종료되면 이를 자동으로 삭제한다.
# 실행 중인 컨테이너가 없을 때 docker run -it --name <container name> <image name> <command> <ARG...> ex : docker run -it --name ubuntu20.04 ubuntu:20.04 /bin/bash
# 도커 실행 시 항상 재시작하겠끔 컨테이너 생성 docker run --restart always --name ubuntu20.04 -dt ubuntu:20.04 /bin/bash
# 컨테이너 생성 시 호스트의 현재 경로를 공유 디렉토리로 지정하면서 컨테이너 생성 docker run -it --volume="$PWD:/[컨테이너 내에 생성될 경로]" [이미지] [명령] ex : docker run -it --volume="$PWD:/test_dir" ubuntu:20.04 /bin/bash ex2 : docker run -it --name ubuntu20.04 -v $PWD:/test_dir ubuntu:20.04 /bin/bash ex3(windows) : docker run -it --name ubuntu20.04 -v ${PWD}:/test_dir ubuntu:20.04 /bin/bash
# -e docker run -it -e <KEY=value> <image name> <command> ex : docker run -it --name ubuntu20.04 -e test=test1 ubuntu:20.04 /bin/bash
# -p docker run -it -p <host port:container port> <image name> <command> ex : docker run -it --name ubuntu20.04 -p 7000:7000 ubuntu:20.04 /bin/bash ex2 : docker run -it --name ubuntu20.04 -p 7000:7000/tcp ubuntu:20.04 /bin/bash ex3 : docker run -it --name ubuntu20.04 -p 7000:7000/tcp -p 7001:7001 ubuntu:20.04 /bin/bash
# 로컬 파일 또는 디렉토리를 docker 이미지에 복사하려는 경우는 COPY 사용 COPY <src>...<dst> ex) copy . /app
# COPY와 동일한 기능이나 추가로 압축 파일이나 원격지의 파일을 # 추출 또는 다운로드하여 docker 이미지에 복사하려는 경우는 ADD 사용 ADD <src>...<dst> ex1) ADD test.tar.xz / ex2) ADD http://test.com/download.php?id=1 /
RUN "실행할 명령어" RUN ["명령어", "인자1", "인자2"]
WORKDIR "작업할 디렉토리"
expose <local port>
====================
2. 만들어진 dockerfile이 존재하는 위치에서 아래 명령어 입력 - 빌드 컨텍스트 경로 지정 부분에 있는 경로를 기준으로 COPY나 ADD 명령이 수행됨 docker build --tag "태그:버전" [빌드 컨텍스트 경로 지정] ex 1) docker build --tag xeanbaek/ubuntu20.04:1.0 ./ ex 2) docker build -t xeanbaek/ubuntu20.04:1.0 .