본문 바로가기

[Docker]

[Docker] Docker 기본 CLI 익히기

Docker를 실제로 사용하기 위해 기본적으로 사용되는 커맨드를 익혀보자

 

먼저 컨테이너를 만들기 위해서는 이미지(image)가 필요하다.

 

image가 뭐지?

이미지(Image)프로그램을 실행하는 데 필요한 설치 과정, 설정, 버전 정보 등을 포함하고 있다. 즉, 프로그램을 실행하는 데 필요한 모든 것을 포함하고 있다.

 

간단하게 비유하자면 

이미지는 건물을 만들기 위한 설계도, 컨테이너는 설계도를 바탕으로 지은 실제 건물이라고 할 수 있다.

 

따라서 이미지를 바탕으로 여러개의 컨테이너를 만들 수 도 있고, 컨테이너 안에 내용을 추가하거나 삭제하여도 이미지는 그대로 존재한다.

 

 

그러면 이미지는 어디있지?

https://hub.docker.com/_/docker

 

docker - Official Image | Docker Hub

Docker Official Images are a curated set of Docker open source and drop-in solution repositories. Why Official Images? These images have clear documentation, promote best practices, and are designed for the most common use cases.

hub.docker.com

Docker 이미지들을 올리고 받을 수 있는 "이미지 저장소(Registry)"

 

Docker Hub에서 사람들이 올려놓은 이미지를 가지고 내 호스트 컴퓨터에 컨테이너를 만들 수 있다!

 

실제로 해보자

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

 

1. Docker Hub에서 원하는 이미지를 찾고 이미지 다운받기(nginx로 연습)

이미지 명 뒤에 버전을 입력하지 않으면 자동으로 최신 버전으로 다운받아진다.

 

다운받아진 이미지

Docker.desktop의 images에 들어가보면 잘 다운받아진 모습

docker image ls # 이걸로도 다운받은 이미지 리스트 출력 가능

  

 

2. 다운받은 이미지로 컨테이너를 만들어보자

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

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

생성된 컨테이너

잘 생성된 것을 확인할 수 있다.

 

하지만 아직 생성만 하고 실행은 하지 않았기에 이름 앞에 동그라미에 불이 들어오지 않은 모습

docker start a272 # 컨테이너 ID의 앞에 몇글자만 넣어도 실행 가능!

start를 통해 제대로 컨테이너가 실행되었다.

 

그런데 이미지 다운, 컨테이너 생성하고 실행하기 너무 귀찮다....

한번에 할 수 있는 방법이 없을까?

docker run -d nginx # 이미지 다운(pull), 컨테이너 생성(create), 컨테이너 실행(start) 한번에 하기

run 명령어를 통해서 한번에 해결가능하다. 

주의 할 점은 run 명령어는 포그라운드 모드로 실행되기 때문에 백그라운드에서 실행하라는 명령어인 -d를 추가해줘야한다.

포그라운드로 실행하면 터미널을 사용하지 못하기 때문에 백그라운드로 실행하자.

 

3. 실행중인 컨테이너 내부에 들어가보자

docker exec -it a272 bash  # 컨테이너 ID
ls # 컨테이너 내부 파일 조회
cd /etc/nginx   # 디렉토리 변경
cat nginx.conf  # 파일 출력

exit # 나오기

컨테이너 내부로 bash모드로 들어온 모습

컨테이너 안으로 들어가 내부 파일을 조회하거나 출력할 수 있다.

 

추가적인 커맨드

# ========================
# Docker 컨테이너 관련 명령어
# ========================

docker ps                             # 실행중인 컨테이너 조회 (running 상태만)
docker ps -a                          # 모든 컨테이너 조회 (running + stopped)

docker rm [컨테이너ID]               # 특정 컨테이너 삭제 (중지된 것만 삭제 가능)
docker rm $(docker ps -a -q)         # 모든 컨테이너 삭제 (중지된 컨테이너 전부)
docker rm -f $(docker ps -a -q)      # 모든 컨테이너 강제 삭제 (실행중 + 중지 포함)


# ========================
# Docker 이미지 관련 명령어
# ========================

docker images                         # 로컬 이미지 목록 조회
docker rm image [이미지ID]                # 특정 이미지 삭제
docker rm image $(docker images -q)       # 모든 이미지 삭제
docker rm image -f $(docker images -q)    # 모든 이미지 강제 삭제 (사용중이어도 삭제)


# ========================
# Docker run 명령어 관련 (컨테이너 실행)
# ========================

docker run -p 4000:80 nginx         # 호스트의 8080 포트 → 컨테이너 80포트 연결

 

중간중간 이미지나 컨테이너를 조회하고 삭제하는데 사용되는 명령어들이다.

 

마지막에 있는 Docker run에서 포트를 설정하게 되면 위 그림과 같이 호스트의 4000번 포트를 컨테이너의 80번 포트로 연결하도록 설정한다.

'[Docker]' 카테고리의 다른 글

[Docker] Docker의 기본 개념  (0) 2025.04.13