docker 컨테이너 사용해보기

2020. 1. 21. 06:12devops/docker

docker 컨테이너 사용해보기

docker run -i -t ubuntu:14.04

docker run을 통해 이미지를 실행할 수 있으며 이미지가 깔려있지 않으면 자동으로 docker hub에서 찾아서 이미지를 다운 받은 후 container로 실행시킵니다. 

 

옵션 

-i : 상호 입출력 가능하게 한다. 

-t : tty를 활성화해서 배시 셸을 사용하도록 컨테이너를 설정한다. 

위 사진을 보면 ubuntu 이미지를 찾아서 pull 받은 다음 두 옵션 사용으로 인해 ubuntu 셸로 바로 접근했습니다. 저 셸 환경에서 빠져나오고 싶으면 exitctrl + D을 쳐주면 종료하며 빠져나올 수 있습니다. 

 

그런데 만약 종료하지 않고 빠져나오고 싶으면 ctrl + P,  Q를 입력하면 됩니다. 

 

이번에는 centos7을 pull 받아서 실행해보겠습니다. 

Centos7 image pull

이전에 다운받은 ubutnu와 centos 등이 docker images를 통해 확인할 수 있습니다. 

이미지 확인

create 명령어 

--name을 통해 container의 이름을 설정할 수 있습니다. 이름을 mycentos로 설정한 후 centos:7의 이미지를 사용합니다. 밑에 출력된 무작위의 16진수 해시값은 컨테이너의 고유 ID입니다. 일반적으로는 길어서 앞의 12자리만 사용합니다. 

 

create명령어는 컨테이너만 생성할 뿐 컨테이너로 들어가지 않습니다. 

docker start는 만든 컨테이너를 실행하고 attach를 써서 내부로 들어갑니다. ctrl + p를 써서 빠져나옵니다. 

 

ubuntu를 사용할때와는 다르게 run이 아닌 create, start, attach를 써서 들어갔습니다. run은 위의 과정을 모두 사용하는 것에 반면에 create는 딱 create까지만 실행해줍니다. 


컨테이너 목록 확인

docker ps 

-a 옵션

이전에 종료되었던 container까지 확인할 수 있습니다. 

각 출력되는 요소별 내용은 

 

ContainerID

컨테이너에 자동적으로 할당되는 고유한 ID입니다. 너무 길어서 일부분만 확인할 수 있지만 inspect 명령어를 사용하여 전체 ID를 확인할 수 있습니다. 

docker inspect mycentos | grep Id

Image

컨테이너를 생성할 때 사용된 이미지의 이름입니다. 위 출력을 통해 centos:7과 ubuntu:14.04 등을 사용한 것을 확인할 수 있습니다. 

 

Command

Container를 시작할 때 실행되는 명령어입니다. image내에서 기본적으로 /bin/bash로 설정되어있습니다. 이를 통해 bash환경으로 들어가 입출력을 진행할 수 있습니다. 

 

여기 명령어를 변경하고 싶으면 run 명령어 제일 뒷편에 작성하면됩니다. 

docker -i -t ubuntu:14.04 echo hello world

그런데 /bin/bash 명령어가 없다면 bash환경으로 못들어가고 hello world만 출력하고 종료됩니다. 

 

Created 

컨테이너가 생성되고 난 뒤 흐른 시간을 나타냅니다. 

 

Status

컨테이너의 상태를 나타내며 실행중이면 UP, 종료되면 Exited, 일시 중지된 상태인 Pause가 있습니다. \

 

Ports
컨테이너가 개방한 포트와 호스트에 연결한 포트를 나열합니다. 

 

Names

container의 고유의 이름입니다. --name옵션을 사용하여 이름을 붙일 수 있습니다. 

변경하고 싶다면 아래 명령어로 rename original name new name

docker rename mycentos yourcentos

 

컨테이너 삭제 

docker rm 명령어를 사용하여 컨테이너를 삭제할 수 있습니다. 이전에 생성한 mycentos를 생성해보겠습니다. 

 

docker rm container이름

실제로 사용해보니 위와 같은 오류가 발생합니다. 오류명을 읽어보니 centos가 실행중이니 종료하고 삭제하라는 의미입니다. 

// 정지 후 삭제 
docker stop mycentos
docker rm mycentos

// 강제로
docker rm -f mycentos

 

존재하는 모든 컨테이너 삭제(실행하는 컨테이너는 삭제할 수 없습니다.)

docker container prune                                                                                                                     1 ↵  9014  12:17:23
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] N

경고메세지와 함께 yes or no 선택할 수 있습니다. 

 

docker ps를 활용하여 전체 삭제할 수 있습니다. (conainer의 실행 유무와 상관없이 종료할 수 있습니다.)

docker ps -a -q //id만 출력

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

 

'devops > docker' 카테고리의 다른 글

docker 네트워크  (1) 2020.01.22
container를 외부에 노출하기  (0) 2020.01.22
docker image, container  (0) 2020.01.20
docker 설치-macOS  (0) 2020.01.20
docker란?  (0) 2020.01.20