Docker를 사용하면서 많이 이용되는 CLI를 몇개 공부 했다.
- 도커 이미지 생성,삭제
- 도커 컨테이너 생성,삭제
- 로그 확인
- 컨테이너 포트 연결
도커 이미지 다운로드
# docker pull 이미지명
$ docker pull nginx # docker pull nginx:latest와 동일하게 작동
특정 버전 도커 이미지 다운로드
# docker pull 이미지명:태그명
$ docker pull nginx:stable-perl
태그명은 도커허브에 들어가서 확인 가능하다.
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 |