본문 바로가기
  • 🦄 창민이 개발일지
서버

docker 명령어 모음

by 창민이 개발일지 2022. 6. 17.

도커 사용법 및 명령어

 

도커 버전 확인(도커 설치 확인)

docker --verstion

 

docker 이미지 검색

cli 검색 방식

sudo docker search [검색 단어] # ex sudo docker search centos

 

현재 가지고 있는 도커 이미지 리스트 출력

docker images

docker 이미지 받아오기

docker pull <이미지 이름>

최신 버전의 centos 받아오기

docker pull centos

특정 버전 (특정 tag)의 centos 받아오기

  • Docker Hub에서 Image와 Tag 확인
sudo docker pull centos:centos7

 

docker 이미지 삭제

sudo docker rmi [이미지 id 또는 이미지 이름]
 

Docker Container

Docker images에서 container로 실행

sudo docker run <옵션> <사용자 컨테이너 이름> <이미지 이름:Tag이름> <실행할 파일>
sudo docker run -it --name 컨테이너이름 이미지이름 실행할 파일

# ex) centos
sudo docker run -it --name testcentos centos:latest bin/bash

Docker 컨테이너 시작

sudo docker start [컨테이너 이름 or ID]

Docker 컨테이너 재시작

sudo docker container restart [컨테이너 이름 or ID]

Docker 컨테이너 종료

sudo docker stop [컨테이너 이름 or ID]

Docker 컨테이너 접속

sudo docker attach [컨테이너 이름 or ID]

# 또는
docker exec -it [컨테이너 이름 or ID] bash

 

Docker run 옵션

  • -i: interactive
    • 표준 입력(stdin)을 활성화하며, 컨테이너와 연결(attach)되어 있지 않더라도 표준 입력을 유지
    • 보통 이 옵션을 사용하여 Bash에 명령을 입력
  • -t: tty
    • tty 모드를 사용.
    • Bash를 사용하려면 이 옵션을 설정
    • 이 옵션을 설정하지 않으면 명령을 입력할 수는 있지만, 셀이 표시되지 않음.
  • --name 컨테이너이름
    • 컨테이너 이름을 설정
  • -d: detach
    • Detached 모드로 설정
    • 데몬 모드라고 부르며, 컨테이너가 백그라운드로 실행됨.
  • p: publish
    • 호스트와 컨테이너의 포트를 연결(포트 포워딩)
    • ex) -p 8888:8888
  • v: volume 
    • 데이터 볼륨을 설정
    • 호스트와 컨테이너의 디렉토리를 연결하여, 파일을 컨테이너에 저장하지 않고 호스트에 바로 저장.(마운트)
  • --rm
    • 프로세스 종료시 컨테이너 자동 제거
  • -e: env
    • 컨테이너 내에서 사용할 환경변수를 설정
    • 보통 설정 값이나 비밀번호를 전달할때 사용.
      • -e GRANT_SUDO=yes
  • -u, --user: 
    • 컨테이너가 실행될 리눅스 사용자 계정 이름 또는 UID를 설정
  • --gpus 
    • 컨테이너에서 호스트의 NVDIA GPU를 사용할 수 있도록 설정.
    • 호스트는 NVIDIA GPU가 장착된 Linux 서버이여야됨
    • NVIDIA driver가 설치되어 있어야 함.
  • --restart
    • 재시작 옵션
    • no: 재시작하지 않음.(기본값)
    • on-failure: 에러로 인해 종료될시 재시작
    • always: 항상 재시작.(수동으로 종료한 경우, docker가 재시작되면 같이 재시작
    • unless-stopped: 컨테이너가 종료되지 않는다면, 항상 재시작. 종료되었다면 직접 시작하기 전까지는 Docker가 재시작되도 컨테이너는 재시작 x
    • ex) docker run restart always 

포트포워딩 설정

  • -p host내부 프로세스 포트번호:컨테이너 내부 프로세스 포트번호
sudo docker run -p 80:80 -i -t --name testcentos centos:latest bin/bash
 
 
 

Docker 포그라운드 또는 백그라운드로 실행가기

Docker 컨테이너에서 나가기

  • 나가면 컨테이너가 종료되는 방식
exit

나가면 컨테이너가 종료되지 않는 방식

  •  Ctrl+P  Ctrl+Q를 차례대로 입력

 

실행중인 container 확인 및 삭제

동작 중인 container 확인

sudo docker ps

정지된 container 확인

sudo docker ps -a

container 삭제

sudo docker rm [container id]

실행중인 container 삭제

 # 중지하고 삭제
sudo docker stop [container id] # 컨테이너 실행 중지
sudo docker rm [container id]

# 강제 삭제
docker rm -f [container id]
 
 

Docker 컨테이너 커밋(컨테이너 -> 이미지)

  • 현재까지 작업해 놓은 ubuntu 컨테이너를 그대로 저장(백업)
sudo docker commit [백업할 컨테이너 id or 이름] [이미지 이름]

Docker 이미지및 컨테이너 세부사항 보기

# 이미지
docker image inspect [이미지 명]

# 컨테이너
docker container inspect [컨테이너 명]

컨테이너 옵션 재설정

docker update [옵션] [컨테이너 명]

# docker update restart always code-server
 
 

도커 볼륨

  • 도커 볼륨은 /var/lib/docker/volumes에 생성된다.

도커 볼륨 생성

docker create [도커볼륨 이름]

도커 볼륨 리스트 출력

docker volume ls

도커 볼륨 정보 확인

docker volume inspect [도커볼륨 이름]

도커 컨테이너 바인드 마운트로 볼륨 생성

docker run -v [호스트_폴더이름]:[컨테이너_폴더_이름]

도커 컨테이너 도커볼륨으로 볼륨 생성

docker run -v [도커_볼륨_이름]:[컨테이너_폴더_이름]