Deployment/Docker

Docker CLI

연향동큰손 2025. 3. 21. 15:22

 

 

Docker를 사용하면서 많이 이용되는 CLI를 몇개 공부 했다.

 

  • 도커 이미지 생성,삭제
  • 도커 컨테이너 생성,삭제
  • 로그 확인
  • 컨테이너 포트 연결

 

도커 이미지 다운로드

# docker pull 이미지명
$ docker pull nginx # docker pull nginx:latest와 동일하게 작동

 

 

특정 버전 도커 이미지 다운로드

# docker pull 이미지명:태그명
$ docker pull nginx:stable-perl

 

태그명은 도커허브에 들어가서 확인 가능하다.

 

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.

hub.docker.com

 

다운받은 이미지 조회

$ docker image ls

 

 

이미지 삭제

$ docker image rm [이미지 ID 또는 이미지명]

 

 

중지된 컨테이너에서 사용하고 있는 이미지 강제 삭제하기

$ docker image rm -f [이미지 ID 또는 이미지명]

 

 

전체 이미지 삭제

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

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

 

다운받은 이미지를 바탕으로 컨테이너 생성

# docker create 이미지명[:태그명]
$ docker create nginx

$ docker ps -a # 모든 컨테이너 조회

 

 

컨테이너 실행

# docker start 컨테이너명[또는 컨테이너 ID]
$ docker start 컨테이너명[또는 컨테이너 ID]

$ docker ps # 실행중인 컨테이너 조회

# Nginx 컨테이너 중단 후 삭제하기
$ docker ps # 실행 중인 컨테이너 조회
$ docker stop {nginx를 실행시킨 Contnainer ID} # 컨테이너 중단
$ docker rm {nginx를 실행시킨 Contnainer ID} # 컨테이너 삭제
$ docker image rm nginx # Nginx 이미지 삭제

 

 

컨테이너 생성 + 실행

# docker run 이미지명[:태그명]
$ docker run nginx # 포그라운드에서 실행 (추가적인 명령어 조작을 할 수가 없음)

# Ctrl + C로 종료할 수 있음

 

만약 로컬 환경에 다운받은 이미지가 없으면 도커허브로 부터 이미지를 다운받아서 실행시킨다.

 

포그라운드에서 실행했을때 화면

 

 

※ 컨테이너를 백그라운드에서 실행시키는 방법

# docker run -d 이미지명[:태그명]
$ docker run -d nginx

# Nginx 컨테이너 중단 후 삭제하기
$ docker ps # 실행 중인 컨테이너 조회
$ docker stop {nginx를 실행시킨 Contnainer ID} # 컨테이너 중단
$ docker rm {nginx를 실행시킨 Contnainer ID} # 컨테이너 삭제
$ docker image rm nginx # Nginx 이미지 삭제

 

 

컨테이너에 이름을 붙혀서 실행시키기

# docker run -d --name [컨테이너 이름] 이미지명[:태그명]
$ docker run -d --name my-web-server nginx

# Nginx 컨테이너 중단 후 삭제하기
$ docker ps # 실행 중인 컨테이너 조회
$ docker stop {nginx를 실행시킨 Contnainer ID} # 컨테이너 중단
$ docker rm {nginx를 실행시킨 Contnainer ID} # 컨테이너 삭제
$ docker image rm nginx # Nginx 이미지 삭제

 

컨테이너 생성후 포트를 확인하고 웹페이지에서 localhost:80으로 들어가면 연결이 안된다고 나오는 것을 확인할 수 있다.

 

그 이유는 컨테이너가 호스트 컴퓨터와 분리되어 따로 포트를 사용하기 때문이다.

 

 

docker ps -a를 통해 실행중인 컨테이너의 포트를 확인하면 80/tcp라고 쓰여 있지만 사실은 호스트 컴퓨터의 80포트를 사용중이라는 뜻이 아니라 컨테이너의 80포트를 사용중이라는 말이다.

 

따라서 호스트 컴퓨터의 원하는 포트를 지정해주고 싶다면 컨테이너를 생성해줄때 호스트 컴퓨터의 포트를 연결해줘야 한다.

 

# docker run -d -p [호스트 포트]:[컨테이너 포트] 이미지명[:태그명]
$ docker run -d -p 4000:80 nginx

 

 

실행중인 컨테이너 확인

$ docker ps

 

 

실행중인 컨테이너 + 중지된 컨테이너 모두 조회

$ docker ps -a

 

 

실행중인 컨테이너 중지

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

 

 

컨테이너 삭제

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

 

 

실행중인 컨테이너 강제로 삭제

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

 

 

★중지된 컨테이너 모두 삭제

$ docker rm $(docker ps -qa)

 

 

실행 되고있는 컨테이너 모두 삭제

$ docker rm -f $(docker ps -qa)

 

 


 

컨테이너가 잘 돌아가고 있는지 확인을 하고 싶은때는 컨테이너에 대한 로그를 확인할 수 있다.

 

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

$ docker run -d nginx
$ docker logs [nginx가 실행되고 있는 컨테이너 ID]

 

 

최근 로그 10줄만 조회

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

 

 

최근 로그 + 실시간으로 생성되는 로그 확인

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

# Nginx의 컨테이너에 실시간으로 쌓이는 로그 확인하기
$ docker run -d -p 80:80 nginx
$ docker logs -f

 

 

★기존 로그 조회하지 않고 실시간으로 생성되는 로그만 보기

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

'Deployment > Docker' 카테고리의 다른 글

Docker Volume(도커 볼륨)  (0) 2025.03.23
Docker를 활용하여 Nginx 설치 및 실행  (0) 2025.03.19
Docker란 무엇인가  (0) 2025.03.19