본문 바로가기

기술

[Docker] 내맘대로 명령어 정리

이미지 검색하기

$ sudo docker search <이미지 이름>

pull 명령으로 이미지 받기

$ sudo docker pull <이미지 이름>:<태그>

이미지 목록 출력하기

$ sudo docker images

컨테이너 생성하기

$ sudo docker run <옵션> <이미지 이름> <실행할 파일>

옵션

  • -d : detached mode. 흔히 말하는 백그라운드 모드
  • -p : 호스트와 컨테이너의 포트를 연결(포워딩)
  • -v, --volume : 호스트와 컨테이너의 디렉토리를 연결(마운트)
  • -e : 컨테이너 내에서 사용할 환경변수 설정
  • --name : 컨테이너 이름 설정
  • --rm : 프로세스 종료 시 컨테이너 자동 제거
  • -it : -i(interactive)와 -t(Pseudo-tty)를 동시에 사용한 것으로 실행된 Bash 셸에 입력 및 출력 가능.
  • --link : 컨테이너 연결 [컨테이너 이름:태그]

예시: ubuntu의 bash 실행

$ sudo docker run -i -t --name hello ubuntu /bin/bash

예시: ubuntu nginx 호스트 포워딩

$ sudo docker --name hello-nginx -d -p 80:80 -v /root/data:/data hello:0.1
  • 백그라운드 모드
  • -p 80:80 : 호스트의 80번 포트와 컨테이너의 80번 포트를 연결하고 외부에 노출. http://<호스트 IP>:80으로 접속할 시 컨테이너의 80번 포트로 접속됨
  • -v /root/data:/data : 호스트의 /root/data 디렉토리를 컨테이너의 /data 디렉토리에 연결. /root/data 디렉토리에 파일을 넣으면 컨테이너에서 해당 파일 확인 가능.

TIP

명령을 실행하는 현재 디렉토리의 절대 경로 : $(pwd)

컨테이너 목록 확인

$ sudo docker ps

옵션

  • -a : 정지된 컨테이너까지 모두 출력

컨테이너 실행하기

$ sudo docker start <컨테이너 이름>

컨테이너 재시작하기

$ sudo docker restart <컨테이너 이름>

컨테이너 접속하기

$ sudo docker attach <컨테이너 이름>

다음은 실행되고 있는 컨테이너에 표준 입력(stdin)과 표준 출력(stdout)을 연결

컨테이너 명령 내리기

$ sudo docker exec <컨테이너 이름> <명령> <매개 변수>

예시

$ sudo docker exec hello echo "Hello world"

예시 shell access

#Nginx
$ docker exec -ti nginx bash
#Web
$ docker exec -ti web bash
#Database
$ docker exec -ti db bash

컨테이너 정지하기

$ sudo docker stop <컨테이너 이름>

컨테이너 삭제하기

$ sudo docker rm <컨테이너 이름>

이미지 삭제하기

$ sudo docker rmi <이미지 이름>:<태그>