2020. 1. 21. 06:12ㆍdevops/docker
docker 컨테이너 사용해보기
docker run -i -t ubuntu:14.04
docker run을 통해 이미지를 실행할 수 있으며 이미지가 깔려있지 않으면 자동으로 docker hub에서 찾아서 이미지를 다운 받은 후 container로 실행시킵니다.
옵션
-i : 상호 입출력 가능하게 한다.
-t : tty를 활성화해서 배시 셸을 사용하도록 컨테이너를 설정한다.
위 사진을 보면 ubuntu 이미지를 찾아서 pull 받은 다음 두 옵션 사용으로 인해 ubuntu 셸로 바로 접근했습니다. 저 셸 환경에서 빠져나오고 싶으면 exit 및 ctrl + D을 쳐주면 종료하며 빠져나올 수 있습니다.
그런데 만약 종료하지 않고 빠져나오고 싶으면 ctrl + P, Q를 입력하면 됩니다.
이번에는 centos7을 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 |