본문 바로가기
DevOps/Docker

2. Docker Container

by 비어원 2022. 4. 24.
728x90

컨테이너 사용하기

이전 장에서 도커 이미지와 컨테이너에 대해 간단히 알아보았다. 이제는 도커 컨테이너를 사용하는 방법에 대해 알아보자.

 

 

컨테이너 생성 + 실행

먼저 컨테이너를 실행하는 명령어에 대해 알아보자. 도커는 docker run 명령어를 통해 컨테이너를 생성하고 즉시 실행한다.

$ docker run -it ubuntu:14.04
Unable to find image 'ubuntu:14.04' locally
14.04: Pulling from library/ubuntu
2e6e20c8e2e6: Pull complete
0551a797c01d: Pull complete
512123a864da: Pull complete
Digest: sha256:60840958b25b5947b11d7a274274dc48ab32a2f5d18527f5dae2962b64269a3a
Status: Downloaded newer image for ubuntu:14.04
  • -i, -t 옵션은 컨티에너와 상호 입출력을 가능하게 한다. (i: interactive, t: tty)

docker run 명령어를 입력하면 로컬에 해당 도커 이미지가 있는지 확인한 후 없으면 도커 이미지 저장소에서 자동으로 도커 이미지를 다운로드한다. 다운로드가 완료되면 이미지를 통해 컨테이너를 생성하고 실행한다. 이와 동시에 -i, -t 플래그 때문에 자동으로 컨테이너 내부로 들어오게 된다.

쉘 화면을 보면 사용자가 root@xxxxxxx로 변경되었음을 알 수 있다. 여기서 ls 명령어를 치면 컨테이너 환경의 파일시스템을 확인할 수 있다.

root@791139c2ed31:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

exit 명령어를 통해 컨테이너 내부에서 나갈 수 있다.

root@791139c2ed31:/# exit
exit
  • exit 또는 Ctrl + D 명령어는 shell을 종료함으로써 컨테이너를 정지시킴과 동시에 컨테이너에서 빠져나온다.
  • Ctrl + P, Q 를 입력하면 단순히 컨테이너 shell만 종료시킨다.

 

컨테이너 이미지 받아오기

docker pull 명령어를 통해 이미지 저장소에서 컨테이너 이미지를 받아오기만 할 수도 있다. 이 명령어를 통해 centos 이미지를 받아보자.

$ docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:7
docker.io/library/centos:7

 

이미지 목록 확인

docker images 명령어를 통해 로컬에 있는 도커 이미지 목록을 확인할 수 있다.

$ docker images
REPOSITORY  TAG       IMAGE ID       CREATED         SIZE
centos      7         eeb6ee3f44bd   5 months ago    204MB
ubuntu      14.04     13b66b487594   11 months ago   197MB

docker pull을 한 centos 이미지가 목록에 있는 것을 확인할 수 있다.

 

컨테이너 생성

docker create 명령어를 통해 컨테이너를 생성만 할 수도 있다.

$ docker create -it --name centos centos:7
b30e2415990303490b1ae2cd39645dfca972c4817c77833435f2f7ec89a7f0c0
  • --name 플래그를 통해 도커 컨테이너의 이름을 부여할 수 있다.

컨테이너를 생성만 하면 컨테이너 내부로 자동으로 들어가지 않는다. 생성된 컨테이너 내부로 들어가려면 docker start 를 사용하여 컨테이너를 시작시키고 docker attach 명령어를 사용하여 내부로 들어갈 수 있다.

$ docker start centos
centos
$ docker attach centos
[root@b30e24159903 /]#

이전에 사용했던 docker run 명령어는 docker create + docker start 와 같으며 docker run -it 옵션을 추가하면 docker attach 까지 사용하는 것과 같다.

 

컨테이너 목록 확인

docker ps 명령어를 통해 현재 생성된 컨테이너의 목록을 확인할 수 있다.

$ docker ps
CONTAINER ID   IMAGE        COMMAND      CREATED         STATUS         PORTS       NAMES
b30e24159903   centos:7     "/bin/bash"  5 minutes ago   Up 3 minutes               centos

$ docker ps -a
CONTAINER ID   IMAGE        COMMAND      CREATED         STATUS         PORTS       NAMES
b30e24159903   centos:7     "/bin/bash"  5 minutes ago   Up 3 minutes               centos
791139c2ed31   ubuntu:14.04 "/bin/bash"  32 minutes ago  Exited (0) 28 minutes ago  mystifying_margulis
  • 정지된 컨테이너를 포함하여 모든 컨테이너 목록을 확인하려면 -a 플래그를 추가하면 된다.
  • CONTAINER_ID: 컨테이너에게 자동으로 할당되는 고유한 ID이다.
  • IMAGE: 컨테이너 생성에 사용된 이미지 이름이다.
  • COMMAND: 컨테이너가 시작될 때 실행될 명령어이다. 보통 이미지에 미리 내장되어 있지만 docker run이나 docker create 명령어 뒤에 커맨드를 작성하여 커맨드를 덮어씌울 수 있다.
  • CREATED: 컨테이너가 생성된 후 흐른 시간이다.
  • STATUS: 컨테이너의 상태를 나타낸다. (Up / Exited / Pause 등)
  • PORTS: 컨테이너가 개방한 포트와 호스트에 연결된 포트를 나열한다.
  • NAMES: 컨테이너 고유 이름

 

컨테이너 삭제

컨테이너를 삭제하려면 docker rm 명령어를 사용한다. 한 번 삭제한 컨테이너는 재복구가 불가능하다.

$ docker rm mystifying_margulis
$ docker rm 791139c2ed31
  • 도커 컨테이너 이름 또는 컨테이너ID 둘 다 사용 가능하다.

만약 실행 중인 컨테이너를 삭제하려고 시도한다면 에러가 발생한다.

$ docker rm centos
Error response from daemon: You cannot remove a running container b30e2415990303490b1ae2cd39645dfca972c4817c77833435f2f7ec89a7f0c0. Stop the container before attempting removal or force remove

실행 중인 컨테이너는 삭제가 불가능하기 때문에 삭제하기 전에 컨테이너를 정지해야 한다.

$ docker stop centos
$ docker rm centos

또는 -f 플래그를 추가하여 강제로 삭제할 수 있다.

$ docker rm -f centos

그리고 아래 명령어를 통해 모든 정지된 컨테이너를 삭제할 수도 있다. 정지된 컨테이너를 정리할 때 유용하게 사용할 수 있는 명령어이다.

$ docker container prune

 

 

컨테이너를 생성 및 실행시키고 조회하고 삭제하는 방법에 대해 알아보았다. 그 다음장에는 컨테이너 볼륨에 대해 알아보자.

728x90

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

6. Dockerfile  (0) 2022.05.14
5. Docker Image  (0) 2022.05.14
4. Docker Network  (0) 2022.05.14
3. Docker Volume  (0) 2022.04.24
1. Docker 소개 및 설치  (0) 2022.04.24

댓글