Docker 치트시트
자주 사용하는 Docker 명령어 파라미터
다음은 Docker 치트 시트로, 설치를 컨테이너 실행 및 정리까지 아우르는 가장 중요한 명령어와 개념을 다룹니다:

이 가이드는 개발 도구: 현대적인 개발 워크플로우 완벽 가이드의 일부입니다.
설치
Ubuntu에 Docker를 설치하는 전체 가이드(공식 APT 저장소, docker.io, Snap, 루트리스(rootless) 모드 및 Compose 플러그인 설정 비교)는 Ubuntu에 Docker 설치를 참조하세요.
설치 후 sudo 없이 명령어를 실행하려면 사용자를 docker 그룹에 추가하세요:
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
설치 가이드에는 docker 그룹 소속의 보안 tradeoff(상충 관계) 및 루트리스 대안도 포함되어 있습니다.
일반적인 Docker 명령어
버전 및 시스템 정보
docker version # Docker CLI 및 데몬 버전 표시
docker system info # Docker 환경 데이터 목록
docker help # 도움말 인덱스 보기
docker <command> --help # 특정 명령어의 도움말 정보 보기
로그인 및 로그아웃
docker login # Docker Hub에 로그인
docker logout # Docker Hub에서 로그아웃
이미지 관리
이미지 목록
docker images # 모든 이미지 목록
docker images -a # 중간 이미지 포함 모든 이미지 목록
이미지 가져오기(Pull)
docker pull <image-name:version> # Docker Hub에서 이미지 다운로드
이미지 빌드
docker build -t <image-name> . # 현재 디렉토리의 Dockerfile에서 이미지 빌드
docker build -f <Dockerfile-path> -t <image-name> . # 특정 Dockerfile에서 이미지 빌드
docker build --build-arg foo=bar . # 빌드 인수를 사용하여 이미지 빌드
docker build --pull . # FROM 지시문에서 참조된 이미지의 업데이트된 버전 가져오기
docker build --quiet . # 출력 없이 이미지 빌드
이미지 태그 및 푸시(Push)
docker tag <local-image-name> <username>/<preferred-image-name>
docker push <username>/<preferred-image-name>
이미지 제거
docker rmi <image-name> # 특정 이미지 제거
docker image prune # 사용되지 않는 이미지 제거
docker image prune -a # 모든 사용되지 않는 이미지 제거
떠다니는(dangling) 이미지 제거
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
이미지 태그 제거(Untag)
docker rmi repository/image-name:tag
컨테이너 관리
컨테이너 실행
docker run -itd --name <container-name> <image-name> # 디아티치드(detached) 모드로 컨테이너 실행
docker run -it -p <host-port>:<docker-port> <image-name> # 포트 매핑과 함께 컨테이너 실행
docker run -it --name <container-name> <image-name> # 인터랙티브 모드로 컨테이너 실행
컨테이너 목록
docker ps # 실행 중인 컨테이너 목록
docker ps -a # 모든 컨테이너 목록
docker ps -s # CPU 및 메모리 사용량과 함께 실행 중인 컨테이너 목록
컨테이너 시작, 중지 및 재시작
docker start <container-name> # 중지된 컨테이너 시작
docker stop <container-name> # 실행 중인 컨테이너 중지
docker restart <container-name> # 컨테이너 재시작
컨테이너 제거
docker rm <container-name> # 중지된 컨테이너 제거
docker rm -f <container-name> # 컨테이너 강제 제거
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) # 모든 컨테이너 제거
중지된 모든 컨테이너 제거
docker container prune
컨테이너에 연결
docker attach <container-name> # 실행 중인 컨테이너에 연결
docker exec -it <container-name> bash # 실행 중인 컨테이너에서 명령어 인터랙티브 실행
컨테이너 검사
docker inspect <container-name> # 컨테이너 검사
docker logs <container-name> # 컨테이너 로그 보기
docker port <container-name> # 컨테이너 포트 매핑 표시
네트워크 관리
docker network ls # 모든 네트워크 목록
docker network create <network-name> # 새 네트워크 생성
docker network rm <network-name> # 네트워크 제거
볼륨 관리
docker volume ls # 모든 볼륨 목록
docker volume create <volume-name> # 새 볼륨 생성
docker volume rm <volume-name> # 볼륨 제거
docker run -v <host-path>:<container-path> <image-name> # 볼륨 마운트
Docker Compose
다중 컨테이너 스택 및 일상적인 Compose 명령어는 Docker Compose 치트 시트를 참조하세요. Compose 프로젝트가 부팅 시 시작되고 Linux 서버에서 재부팅을 견디려면 systemd로 Linux 서비스로 Docker Compose 실행에서 유닛 파일 및 운영 관습에 대해 다룹니다.
기본 명령어
docker-compose up # docker-compose.yml에 정의된 서비스 시작
docker-compose up -d # 디아티치드 모드로 서비스 시작
docker-compose down # 서비스 중지 및 제거
docker-compose ps # 실행 중인 서비스 목록
docker-compose logs # 서비스 로그 보기
docker-compose start # 서비스 시작
docker-compose stop # 서비스 중지
docker-compose pause # 서비스 일시 정지
docker-compose unpause # 서비스 일시 정지 해제
Dockerfile 명령어
Dockerfile에서 이미지 빌드
docker build -t <image-name> <Dockerfile-path> # Dockerfile에서 이미지 빌드
Dockerfile 예제
FROM <base-image>
RUN <command>
COPY <source> <destination>
EXPOSE <port>
CMD ["<command>", "<argument>"]
보안 및 시크릿(Secrets)
Docker Secrets
docker secret create <secret-name> <file> # 시크릿 생성
docker secret ls # 모든 시크릿 목록
docker secret rm <secret-name> # 시크릿 제거
Docker 보안
- Docker 시크릿을 사용하여 민감한 데이터를 중앙에서 관리하고 컨테이너로 안전하게 전송하세요.
- 시크릿은 전송 중 및 Docker swarm의 휴지 상태(at rest)에서 암호화됩니다.
정리
사용되지 않는 리소스 제거
docker system prune # 사용되지 않는 데이터(이미지, 컨테이너, 네트워크, 볼륨) 제거
docker image prune # 사용되지 않는 이미지 제거
docker container prune # 사용되지 않는 컨테이너 제거
docker network prune # 사용되지 않는 네트워크 제거
docker volume prune # 사용되지 않는 볼륨 제거
태그가 없는(untagged) 이미지 제거
때때로 큰 빌드가 완료된 후 docker images 명령어에서 다음과 같은 화면이 나타날 수 있습니다:

docker rmi $(docker images --filter “dangling=true” -q --no-trunc)
위 방법은 구식이며 호환되지 않습니다. dangling=true 파라미터는_OBSOLETED_되었습니다. 대신 다음을 사용하세요:
docker system prune
다음과 같이 묻습니다:
WARNING! This will remove:
- all stopped containers
- all volumes not used by at least one container
- all networks not used by at least one container
- all dangling images
이 경고에 대해 Yes라고 결정할 수 있습니다…
이 치트 시트는 Docker 컨테이너, 이미지, 네트워크, 볼륨 등을 관리하는 데 필요한 필수 명령어와 개념을 다룹니다. 더 심화된 내용은 온라인에서 사용할 수 있는 상세 가이드와 튜토리얼을 참조하세요.