DevOps/Docker

[Docker] 기초 시리즈 (8) 자주 사용하는 도커 명령어 모음

유자맛바나나 2022. 5. 14. 16:00

 

[도커 기초 시리즈 포스팅]

[Docker] 기초 시리즈 (1) 도커의 개념과 사용이유

[Docker] 기초 시리즈 (2) Ubuntu에 도커 엔진 설치

[Docker] 기초 시리즈 (3) 이미지와 컨테이너 관계, 도커 아키텍처

[Docker] 기초 시리즈 (4) 도커 이미지의 구조

[Docker] 기초 시리즈 (5) 도커 이미지 다루기 - Docker Hub(Registry)

[Docker] 기초 시리즈 (6) 도커 이미지 다루기 - 이미지 직접 생성

[Docker] 기초 시리즈 (7) 자주 사용하는 Dockerfile 명령어

[Docker] 기초 시리즈 (8) 자주 사용하는 도커 명령어 모음 (Now)

[Docker] 기초 시리즈 (9) 도커 컨테이너 - 개념, 기본 사용법

[Docker] 기초 시리즈 (10) 도커 컨테이너 - Volume 관리

 

❑ 도커 명령어(docker cli) 모음

Official Reference | https://docs.docker.com/engine/reference/commandline/cli/

 

Use the Docker command line

 

docs.docker.com

 

about 도커 정보, 제어

dockerd
  • 도커 데몬 실행
$ sudo dockerd

 

-v
  • 도커 버전 확인
$ docker -v

 

system prune
  • 사용되지 않는 모든 도커 요소(컨테이너, 이미지, 네트워크, 볼륨 등) 삭제
  • 확인 질문에 y로 답하면 됨
$ docker system prune -a

 

about 도커 허브

login
  • docker hub에 로그인한다.
$ docker login -u [ID]
예) $ docker login -u citronbanana

 

search
  • docker hub에서 이미지를 검색한다
$ docker search [이미지명]
예) $ docker search nginx

 

pull
  • 도커 이미지를 docker hub에서 다운로드. 태그를 작성하지 않을 경우 최신 버전을 받는다.
$ docker pull [이미지명]:[태그]
예) $ docker pull ubuntu:20.04

 

push
  • 도커 이미지를 docker hub에 업로드. (주의) 이미지 명 앞에 유저의 도커 허브 ID를 작성해야 한다.
$ docker push [도커 허브 ID/이미지 명]:[태그]
예) $ docker push citronbanana/myImage:0.0.1

*도커 허브 ID: citronbanana

 

about 컨테이너

create
  • 도커 이미지로 컨테이너 생성하기
$ docker create [옵션] [이미지명]:[태그]

 

start
  • 컨테이너 시작하기 (이미지에 CMD로 지정해놓은 작업 시키기)
$ docker start [컨테이너 id 또는 이름]

 

attach
  • 컨테이너로 들어가기 (컨테이너 내 CLI 이용하기)
$ docker attach [컨테이너 id 또는 이름]

 

run
  • 이미지를 다운받아(없을 시에만) 바로 컨테이너 실행하여 진입하기
  • (pull, create, start, attach 를 한꺼번에 실행하는 것과 같음)
$ docker run [이미지명]:[태그]
예) $ docker run -it ubuntu:20.04


Options

-d 백그라운드 모드로 실행(뒤에서 - 안 보이는 곳(백그라운드)에서 알아서 돌라고 하기)
-i 도커 호스트의 표준 입력(키보드, 마우스 등)을 컨테이너와 연결 (i: interactive)
-t TTY(리눅스 Teletypewriter) 할당. 터미널 명령어를 정상적으로 수행하도록 함.
i와 t 옵션은 보통 쉘 스크립트 작성이 필요한 컨테이너를 실행할 때 한 쌍으로 묶어(docker run -it) 사용한다
--name [이름] 컨테이너 이름 지정
-p [Host Port]:[컨테이너 Port] 호스트 머신의 포트와 컨테이너의 포트를 연결
--rm 컨테이너가 종료되면(내부에서 돌아가는 작업이 끝나면) 컨테이너를 제거
-v [Host 디렉토리]:[컨테이너 디렉토리] 호스트와 컨테이너의 디렉토리를 연결

 

exec
  • 실행중인 컨테이너에 추가로 명령어를 전달함.
  • (예시 설명) 처음부터 백그라운드(-d)로 실행했다면 shell이 실행되고 있지 않아 attach를 해도 내부로 접속되지 않는다. 이럴땐 예시 처럼 exec으로 bash shell을 실행시킨다.
$ docker exec [컨테이너 명] [param]
예) $ docker exec -it [컨테이너 명] /bin/bash

 

stop
  • 컨테이너 중지
$ docker stop [컨테이너 id 또는 이름]

 

stop $(docker ps -aq)
  • 모든 컨테이너 중지
$ docker stop $(docker ps -aq)

 

restart
  • 동작중인 컨테이너 재시작
$ docker restart [컨테이너 id 또는 이름]

 

exit
  • 도커 컨테이너의 내부 쉘에서 빠져나오기 (컨테이너를 종료)
$ exit (단축키: Ctrl + D)

 

Ctrl +P, Q
  • 도커 컨테이너의 내부 쉘에서 빠져나오기 (컨테이너를 종료하지 않음)
$ Ctrl + P, Q

 

ps
  • 동작중인 컨테이너들 보기
$ docker ps


Options

-a 동작하지 않는 것을 포함한 모든 컨테이너 보기

 

rm
  • 컨테이너 삭제. 기본적으로 Running 중인 컨테이너는 삭제 불가
$ docker rm [컨테이너 id 또는 이름]


Options

-f
*force의 약자
Running 중인 컨테이너도 강제로 중지시키고 삭제시킴

 

rm `docker ps -a -q`
  • 모든 컨테이너 삭제
$ docker rm `docker ps -a -q`

 

top
  • 컨테이너 안에서 실행되고 있는 프로세스를 조회
$ docker top [컨테이너 명]

 

logs
  • 컨테이너가 실행되며 남기는 log 정보를 확인
$ docker logs [컨테이너 명]


Options

-f
*follow의 약자
컨테이너의 log를 실시간으로 모니터링(follow). 컨테이너에 log가 추가될 때 마다 바로 display된다.

 

about 이미지

images
  • 호스트 시스템에서 도커 이미지 조회.
  • [참고] IMAGE ID가 동일한 REPOSITORY 들은 실제로 이미지는 한 개다. 한 개의 이미지를 여러 가지 이름으로 관리한다고 보면 된다.
$ docker images


Options

<이미지 명>:<태그> 옵션에 맞는 이미지만 조회
예) docker images webserver:1.0
--no-trunc IMAGE ID를 요약하지 않고 FULL ID로 보여준다

 

build
  • 도커파일로 이미지 생성 (Dockerfile 파일이 있는 디렉토리 기준이며 마지막 . 은 상대주소를 의미함)
$ docker build -t [이미지 명]:[태그] .

 

commit
  • 작업한 도커 컨테이너로 이미지 생성
$ docker commit [컨테이너 명] [생성할 이미지 명]:[태그]
예) $ docker commit my-container my-image


Options

-a 커밋 작성자 작성
예) docker commit -a "citronbanana" my-container my-image
-m 도커 커밋 메시지를 작성
예) docker commit -m "first commit of citronbanana" my-container my-image

 

rmi
  • 이미지 삭제
$ docker rmi [옵션] [이미지 id]


Options

-f 컨테이너가 있을 시 강제삭제

 

tag
  • 이미지 이름, 태그 변경
$ docker tag [기존 이미지 이름]:[태그] [변경할 이미지 이름]:[태그]

 

inspect
  • 이미지 또는 컨테이너의 상세 정보를 확인한다.
docker inspect [옵션] [이미지 또는 컨테이너 명]:[태그]


Options

--format '{{.[inspect 내 옵션1].[옵션 1의 하위 옵션]}}' [이미지 또는 컨테이너 명]
예) docker inspect --format '{{.NetworkSettings.IPAddress}}' MyNginx
상세 정보에서 조회하는 항목 필터

 

about 도커 컴포즈

도커 컴포즈 실행 (docker-compose 파일이 있는 디렉토리 기준)
$ docker-compose up


Options

-d 백그라운드에서 데몬으로 돌도록 함