home > devops > docker > [docker] 자주 사용하는 docker 명령어

[docker] 자주 사용하는 docker 명령어
devops docker command

intro : 자주 사용하는 docker 명령어에 대해서 알아보자.

이미지 관련 명령어

이미지 다운로드

docker 명령어를 통해 이미지를 다운로드 받는 명령어는 다음과 같다.

docker pull nginx 

image1

(docker 명령어를 통해 nginx 이미지를 다운받는 모습)

이미지 조회/삭제

docker 명령어를 통해 다운받은 모든 이미지를 조회하는 명령어는 다음과 같다.

docker image ls

image2

(nginx 이미지가 조회되는 모습)

docker 명령어를 통해 특정 이미지를 삭제하는 명령어는 다음과 같다.

// 아래 이미지에서 nginx 이미지 ID 값을 조회하고 이미지를 삭제한다. 
docker image rm [이미지 명] 혹은 [이미지 ID]
docker image rm 42e9

image3

(nginx 이미지를 삭제하는 모습)

중지된 컨테이너에서 사용하고 있는 이미지를 강제 삭제하는 명령어는 다음과 같다.

docker image rm -f [이미지 명] 혹은 [이미지 ID]

가끔 전체 이미지를 삭제하는 명령어가 필요할때가 있는데 다음과 같은 명령어를 사용하면 된다.

// 컨테이너에서 사용하고 있지 않은 이미지만 전체 삭제
docker image rm $(docker images -q)

// 위 명령어는 모든 이미지를 삭제하고자 시도하지만, 아래 명령어는 컨테이너가 참조하지 않는 이미지만 삭제
docker image prune -a

// 컨테이너에서 사용하고 있는 이미지를 포함해서 전체 이미지 삭제
docker image rm -f $(docker images -q)

image4

(컨테이너에서 사용하고 있지 않은 이미지 전체 삭제하는 모습)

컨테이너 관련 명령어

컨테이너 생성 및 실행

컨테이너를 생성하는 명령어는 다음과 같다. 이 명령어는 컨테이너를 생성할 뿐이지 실행하는 것은 아니다.

docker create nginx

image5

(nginx 컨테이너를 생성하는 모습)

생성한 컨테이너를 실행하는 명령어는 다음과 같다.

docker start 컨테이너명[또는 컨테이너 ID]
docker start 27d88

image6

(컨테이너를 실행하는 모습)

컨테이너 생성 + 실행 한번에 하기

기존에는 컨테이너를 생성하고 실행을 따로따로 명령어를 실행했는데 위 과정을 한번에 처리해주는 명령어가 있다.

// 포어그라운드로 실행되어서 Ctrl + C로 종료할수 있음
docker run 이미지명[:태그명]
docker run nginx

image7

(컨테이너를 생성 + 실행 한번에 하는 모습)
// 백그라운드로 실행하는 법
docker run -d nginx

image8

(백그라운드로 컨테이너를 실행하는 모습)

컨테이너를 이름을 따로 지정해서 실행하는 명령어는 다음과 같다.

docker run -d --name [컨테이너 이름] 이미지명[:태그명]
docker run -d --name webserver nginx

image9

(webserver 라는 이름으로 컨테이너를 실행하는 모습)

docker를 통해 실행한 컨테이너를 호스트 컴퓨터에서 접속을 하기 위해서는 다음과 같이 명령어를 실행하여 포트포워딩을 해야한다.

docker run -d -p 4000:80 nginx

image10

(4000번 포트로 접속하면 nginx 컨테이너의 80포트로 접속할수 있게 포트포워딩한 모습)

image11

(정상적으로 컨테이너에 접근 가능한 모습)

컨테이너 조회/중지/삭제

실행중인 컨테이너를 조회하는 명령어는 다음과 같다.

docker ps 

image12

(실행중인 컨테이너를 조회하는 모습)

모든 컨테이너를 조회하는 명령어는 다음과 같다.

docker ps -a

image13

(모든 컨테이너를 조회하는 모습)

컨테이너를 중지하는 명령어는 다음과 같다.

docker stop 컨테이너명[또는 컨테이너 ID]
docker kill 컨테이너명[또는 컨테이너 ID]
docker stop 4a32

image14

(컨테이너를 종료하는 모습)

중지 되어 있는 특정 컨테이너를 삭제하는 명령어는 다음과 같다.

docker rm 컨테이너명[또는 컨테이너 ID]

image15

(특정 컨테이너를 종료하는 모습)

실행되고 있는 특정 컨테이너를 삭제하는 명령어는 다음과 같다.

docker rm -f 컨테이너명[또는 컨테이너 ID]

가끔 모든 컨테이너를 삭제해야하는 경우가 있는데 다음과 같은 명령어를 사용하면 된다.

// 중지되어 있는 모든 컨테이너 삭제
docker rm $(docker ps -qa)

// 실행중이거나 중지되어있는 모든 컨테이너 삭제
docker rm -f $(docker ps -qa)

image16

(모든 컨테이너를 삭제한 모습이다.)

컨테이너 로그 조회

docker logs [컨테이너 ID 또는 컨테이너명]
docker logs 2d5f

image17

(실행된 nginx 컨테이너의 로그를 조회하는 모습이다.)

최근 로그 10줄만 조회하는 명령어는 다음과 같다.

dokcer logs --tail [로그 끝부터 표시할 줄 수] [컨테이너 ID 또는 컨테이너명]
dokcer logs --tail 10 [컨테이너 ID 또는 컨테이너명]
docker logs --tail 10 2d5f

image18

(실행된 nginx 컨테이너의 로그를 10줄만 조회하는 모습이다.)

기존 로그 조회 + 생성되는 로그를 실시간으로 보고 싶은 경우는 다음과 같은 명령어를 실행하면 된다.

docker logs -f [컨테이너 ID 또는 컨테이너명]

기존 로그는 조회하지 않고, 생성되는 로그를 실시간으로 조회하는 명령어 이다.

docker logs --tail 0 -f [컨테이너 ID 또는 컨테이너명]

실행중인 컨테이너 내부에 접속하기

docker exec -it [nginx가 실행되고 있는 컨테이너 ID] bash
docker exec -it 0ebad bash

image19

(nginx 안으로 접근한 모습이다.)

다음으로

이번시간에는 자주 사용하는 docker 명령어에 대해서 학습하였다. 다음으로는 docker 볼륨을 활용해 데이터 유실 방지하는 방법에 대해 학습해 볼 예정이다.