도커 실용 팁

자주 사용되는 도커 명령어 매개변수

Page content

다음은 Docker cheat sheet입니다.
이 문서는 설치부터 컨테이너 실행 및 정리까지 중요한 명령어와 개념을 다룹니다:

docker logo

설치

Ubuntu에서

sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
sudo apt install docker-ce
sudo systemctl start docker

Docker Compose 설치

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version

일반 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        # 중간 이미지를 포함한 모든 이미지 목록 보기

이미지 끌어오기

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 . # 출력 없이 이미지 빌드

이미지 태그 및 푸시

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          # 모든 사용되지 않는 이미지 삭제

부유 이미지 삭제

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

이미지 태그 제거

docker rmi repository/image-name:tag

컨테이너 관리

컨테이너 실행

docker run -itd --name <container-name> <image-name> # 분리 모드에서 컨테이너 실행
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

기본 명령어

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>"]

보안 및 비밀 정보

Docker 비밀 정보

docker secret create <secret-name> <file> # 비밀 정보 생성
docker secret ls                         # 모든 비밀 정보 목록 보기
docker secret rm <secret-name>          # 비밀 정보 삭제

Docker 보안

  • Docker 비밀 정보를 사용하여 민감한 데이터를 중심적으로 관리하고 컨테이너로 안전하게 전달하세요.
  • 비밀 정보는 전송 중 및 Docker 스웜 내에서 저장 시 암호화됩니다.

정리

사용되지 않는 자원 삭제

docker system prune          # 사용되지 않는 데이터(이미지, 컨테이너, 네트워크, 볼륨) 삭제
docker image prune           # 사용되지 않는 이미지 삭제
docker container prune       # 사용되지 않는 컨테이너 삭제
docker network prune         # 사용되지 않는 네트워크 삭제
docker volume prune          # 사용되지 않는 볼륨 삭제

태그가 없는 이미지 삭제

종종 큰 컴파일 후 docker images 명령어로 다음과 같은 이미지가 나타납니다:

많은 태그가 없는 이미지

이러한 태그가 있는 이미지를 삭제하려면:

docker rmi $(docker images --filter “dangling=true” -q --no-trunc)

위 명령어는 오래되고 호환되지 않습니다. dangling=true 매개변수는 사용되지 않습니다. 대신 다음을 사용하세요:

docker system prune

이 명령어는 다음과 같은 경고를 표시합니다:

경고! 다음을 삭제할 것입니다:
	- 모든 중지된 컨테이너
	- 최소 하나의 컨테이너에 의해 사용되지 않는 모든 볼륨
	- 최소 하나의 컨테이너에 의해 사용되지 않는 모든 네트워크
	- 모든 부유 이미지

이 경고에 대해 “예"라고 선택할 수 있습니다…

이 cheat sheet는 Docker 컨테이너, 이미지, 네트워크, 볼륨 등을 관리하기 위해 필요한 필수 명령어와 개념을 다룹니다. 더 깊이 있는 내용을 원하시면 온라인에서 제공되는 자세한 가이드와 튜토리얼을 참조하세요.

유용한 링크