3 분 소요


image


설치

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

General Docker Commands

Version and System Info

docker version          # 도커 CLI 및 데몬 버전 표시
docker system info      # 도커 환경에 대한 데이터 목록
docker help             # 도움말 인덱스 보기
docker <command> --help # 특정 명령어에 대한 도움말 정보 보기

Login and Logout

docker login            # 도커 허브 로그인
docker logout           # 도커 허브 로그아웃

이미지 관리

이미지 목록

docker images           # 모든 이미지 목록
docker images -a        # 중간 이미지를 포함한 모든 이미지 목록

이미지 다운로드

docker pull <image-name:version> # 도커 허브에서 이미지 다운로드

이미지 빌드

docker build -t <image-name> . # 현재 디렉토리의 도커파일에서 이미지 빌드
docker build -f <Dockerfile-path> -t <image-name> . # 특정 도커파일에서 이미지 빌드
docker build --build-arg foo=bar . # 빌드 인수가 포함된 이미지 빌드
docker build --pull . # FROM 지침에 참조된 업데이트된 이미지 버전을 가져옵니다  
docker build --quiet . # 출력을 방출하지 않고 이미지를 빌드합니다

Tag and Push Images

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

Remove dangling images

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

Untag image

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> # interactively 컨테이너 실행

컨테이너 목록

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) # 모든 컨테이너 제거

remove all stopped containers

docker container prune

Attach to Containers

docker attach <container-name>  # 실행 중인 컨테이너 내부로 연결
docker exec -it <container-name> bash # 실행 중인 컨테이너에 새로운 쉘 실행

Inspect Containers

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        # 분리(detached) 모드에서 서비스 시작
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에서 이미지 빌드

Example Dockerfile

FROM <base-image>
RUN <command>
COPY <source> <destination>
EXPOSE <port>
CMD ["<command>", "<argument>"]

Security and Secrets

Docker Secrets

docker secret create <secret-name> <file> # 시크릿 만들기
docker secret ls                         # 모든 시크릿 목록
docker secret rm <secret-name>          # 시크릿 제거

Docker Security

  • Use Docker secrets to centrally manage sensitive data and securely transmit it to containers.
  • Secrets are encrypted during transit and at rest in a Docker swarm.

정리

사용하지 않는 자원 제거

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

댓글남기기