컨테이너 사용하기
이전 장에서 도커 이미지와 컨테이너에 대해 간단히 알아보았다. 이제는 도커 컨테이너를 사용하는 방법에 대해 알아보자.
컨테이너 생성 + 실행
먼저 컨테이너를 실행하는 명령어에 대해 알아보자. 도커는 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
컨테이너를 생성 및 실행시키고 조회하고 삭제하는 방법에 대해 알아보았다. 그 다음장에는 컨테이너 볼륨에 대해 알아보자.
'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 |
댓글