본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

도커 컨테이너와 이미지를 만들고 실행·관리하는 명령행 도구이다.

  • 경로 : /usr/bin/docker
  • 패키지 : docker-ce (Docker 공식 저장소에서 설치)
  • 데몬 : dockerd (systemctl start docker)
  • Rocky Linux 8 기본 저장소에는 도커 대신 호환 도구인 podman이 들어 있으며, podman-docker 패키지를 설치하면 docker 명령으로 podman을 쓸 수 있다.
  • 이미지·컨테이너 데이터 기본 위치 : /var/lib/docker/
# docker [옵션] 명령 [인수]
이미지
  • pull 이미지[:태그] : 레지스트리(기본 Docker Hub)에서 이미지를 내려받는다. 태그를 생략하면 latest이다.
  • images : 로컬에 있는 이미지 목록을 출력한다.
  • build -t 이름[:태그] 경로 : 경로의 Dockerfile로 이미지를 만든다.
  • rmi 이미지 : 이미지를 삭제한다.
  • tag 원본 대상 : 이미지에 새 이름(태그)을 붙인다.
  • push 이미지 : 이미지를 레지스트리에 올린다.
컨테이너
  • run [옵션] 이미지 [명령] : 이미지로 새 컨테이너를 만들고 실행한다.
  • ps : 실행 중인 컨테이너 목록을 출력한다. -a를 붙이면 중지된 컨테이너도 출력한다.
  • exec [옵션] 컨테이너 명령 : 실행 중인 컨테이너 안에서 명령을 실행한다.
  • stop 컨테이너 / start 컨테이너 / restart 컨테이너 : 컨테이너를 중지·시작·재시작한다.
  • rm 컨테이너 : 중지된 컨테이너를 삭제한다. -f를 붙이면 실행 중인 컨테이너도 강제로 삭제한다.
  • logs [-f] 컨테이너 : 컨테이너의 표준 출력 로그를 출력한다.
  • inspect 대상 : 컨테이너나 이미지의 상세 정보를 JSON으로 출력한다.
  • cp : 컨테이너와 호스트 사이에 파일을 복사한다.
  • commit 컨테이너 이미지 : 컨테이너의 현재 상태를 새 이미지로 저장한다.

run 주요 옵션

편집 원본 편집
  • -d, --detach : 컨테이너를 백그라운드에서 실행한다.
  • -i, --interactive : 표준 입력을 열어 둔다.
  • -t, --tty : 가상 터미널을 할당한다. 보통 -it로 함께 써서 셸에 접속한다.
  • -p 호스트포트:컨테이너포트 : 호스트 포트를 컨테이너 포트에 연결(포워딩)한다.
  • -P : 이미지에 EXPOSE된 모든 포트를 호스트의 임의 포트에 연결한다.
  • -v 호스트경로:컨테이너경로 : 호스트 디렉터리나 볼륨을 컨테이너에 마운트한다.
  • --name 이름 : 컨테이너 이름을 지정한다.
  • -e 변수=값 : 환경 변수를 지정한다.
  • --rm : 컨테이너가 종료되면 자동으로 삭제한다.
  • --restart 정책 : 재시작 정책(no, on-failure, always, unless-stopped)을 지정한다.

Dockerfile 주요 지시어

편집 원본 편집
  • FROM : 기반 이미지를 지정한다.
  • RUN : 이미지 빌드 중 명령을 실행한다.
  • COPY / ADD : 파일을 이미지 안으로 복사한다. ADD는 URL과 압축 파일 자동 해제도 지원한다.
  • WORKDIR : 작업 디렉터리를 지정한다.
  • ENV : 환경 변수를 지정한다.
  • EXPOSE : 컨테이너가 사용할 포트를 명시한다.
  • CMD / ENTRYPOINT : 컨테이너 시작 시 실행할 명령을 지정한다.
# nginx 이미지를 내려받아 백그라운드로 실행하고, 호스트 8080 포트를 컨테이너 80 포트에 연결한다.
# docker pull nginx
# docker run -d --name web -p 8080:80 nginx

# 호스트 디렉터리를 웹 문서 경로에 마운트하여 실행한다.
# docker run -d --name web2 -p 8081:80 -v /srv/html:/usr/share/nginx/html nginx

# 실행 중인 컨테이너에 셸로 접속한다.
# docker exec -it web /bin/bash

# 모든 컨테이너와 이미지 목록을 확인한다.
# docker ps -a
# docker images

# 컨테이너를 중지하고 삭제한다.
# docker stop web
# docker rm web

# 현재 디렉터리의 Dockerfile로 이미지를 만든다.
# docker build -t myapp:1.0 .
  • docker run의 -d, -it, -p, -v, --name 옵션의 의미와 포트 연결 형식(호스트:컨테이너)이 자주 출제된다.
  • ps는 실행 중인 컨테이너만, ps -a는 전체 컨테이너를 보여 준다.
  • 컨테이너 삭제는 rm, 이미지 삭제는 rmi이다.
  • Dockerfile 지시어(FROM, RUN, CMD, EXPOSE 등)의 역할을 묻는 문제가 나온다.