컨테이너를 생성할 때, 필요한 요소이며 iso파일과 비슷한 개념입니다.
컨테이너를 생성하고 실행할 때 읽기 전용으로 사용됩니다.
아래와 같이 이미지에는 repository
, image
, tag
가 있습니다.
[repository] / [image] : [tag]
repository
는 저장소로 명시되지 않으면 도커 허브의 공식 이미지를 뜻합니다.image
는 해당 이미지가 어떤 역할을 하는지 나타냅니다.tag
는 버전관리 혹은 리비전 관리에 사용합니다. 생략할 경우 latest를 뜻합니다.ex. ubuntu:latest
이미지를 통해 도커 컨테이너를 생성하면 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성됩니다.
이 컨테이너는 이미지를 읽기 전용으로 사용하되 이미지에서 변경된 사항만 컨테이너 계층에 저장합니다. 따라서, 컨테이너에서 어떤 일을 하든 원래 이미지는 영향을 받지 않습니다.
도커 버전 확인을 위한 커맨드입니다.
ex. docker run -i -t ubuntu:14.04
도커 컨테이너를 생성하고 실행하는 커맨드입니다.
이미지가 로컬 엔진에 없을 경우, 도커 허브에서 자동으로 이미지를 내려받습니다.
ye-geeee@192 ~ docker run -i -t ubuntu:14.04
root@91e008573de6:/#
root@91e008573de6:/# ls
bin dev home media opt root sbin sys usr
boot etc lib mnt proc run srv tmp var
root@91e008573de6:/#
ye-geeee@192 ~
run을 할 경우, 컨테이너를 생성, 실행 그리고 컨테이너 내부에 들어오는 것까지 동작을 수행합니다.
호스트 이름은 이때 무작위 16진수 해쉬값이고, 91e008573de6은 고유 ID의 앞부분입니다.
컨테이너를 빠져 나올 때는 두 가지 방법이 있습니다.
exit
cmd 또는 Ctrl + D : 컨테이너 내부를 따져나오면서 동시에 컨테이너를 정지시킵니다.도커 이미지 다운 받을 때 사용하는 커맨드입니다.
gang-yeji@192 ~ docker pull centos:7
7: Pulling from library/centos
6717b8ec66cd: Pull complete
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
docker.io/library/centos:
도커 엔진에 존재하는 이미지의 목록을 출력합니다.
ye-geeee@192 ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 5a4e492065c7 3 weeks ago 514MB
ubuntu 14.04 423c4ed354ff 3 months ago 187MB
centos 7 e5df02c43685 10 months ago 301MB
도커 컨테이너를 생성하는 커맨드입니다.
—name
옵션에 컨테이너 이름을 설정합니다. 아래 나오는 16진수 해시값이 컨테이너의 고유 ID입니다.
create
커맨드로는 컨테이너 내부로 진입하지 않습니다.
✘ ye-geeee@192 ~ docker create -i -t --name mycentos centos:7
2727851ed7ec07ff566f58ef2a3cf5d9b1b7508136e885b137d03edba8234d7a
생성한 컨테이너를 실행시킬 때 사용하는 커맨드입니다.
컨테이너를 실행시킬 때에는 컨테이너명 대신 16진수 컨테이너 ID를 사용할 수도 있습니다. ID 전체를 넣을 필요 없이 식별되는 2~3자리만 기입을 하면 됩니다.
✘ ye-geeee@192 ~ docker start mycentos
mycentos
실행 중인 컨테이너를 중지시킬 때 사용하는 커맨드입니다.
도커 컨테이너 내부에 진입하기 위해 사용하는 커맨드입니다.
✘ ye-geeee@192 ~ docker attach mycentos
[root@2727851ed7ec /]#
지금까지 생성한 도커 컨테이너 목록을 확인합니다.
✘ ye-geeee@192 ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2727851ed7ec centos:7 "/bin/bash" 7 minutes ago Up 5 minutes mycentos
91e008573de6 ubuntu:14.04 "/bin/bash" 22 minutes ago Up 22 minutes sad_yonath
cdd5df6f6e10 mysql:latest "docker-entrypoint.s…" 2 weeks ago Up 2 weeks 0.0.0.0:3306->3306/tcp, 33060/tcp moniapp-db
✘ ye-geeee@192 ~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2727851ed7ec centos:7 "/bin/bash" 9 minutes ago Up 6 minutes mycentos
91e008573de6 ubuntu:14.04 "/bin/bash" 23 minutes ago Up 23 minutes sad_yonath
78d292dfd430 ubuntu:14.04 "/bin/bash" 4 days ago Exited (0) 4 days ago agitated_kapitsa
cdd5df6f6e10 mysql:latest "docker-entrypoint.s…" 2 weeks ago Up 2 weeks 0.0.0.0:3306->3306/tcp, 33060/tcp moniapp-db
✘ ye-geeee@192 ~ docker ps --format "table {{.ID}}"
CONTAINER ID
2727851ed7ec
91e008573de6
cdd5df6f6e10
-a
옵션 : 옵션을 사용하지 않으면, 현재 정지 되지 않은 컨테이너만 출력합니다. 이 옵션을 사용하면 전체 컨테이너를 확인할 수 있습니다.--format "table {{.ID}}"
옵션: "table {{.[Column명]}}\t{{.[Column명}}" 에 보고 싶은 정보들만 넣어줍니다.컨테이너명을 변경할 때 사용하는 커맨드입니다.
도커 컨테이너를 삭제할 때 사용하는 커맨드입니다.
✘ ye-geeee@192@192 ~ docker rm agitated_kapitsa
agitated_kapitsa
✘ ye-geeee@192@192 ~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2727851ed7ec centos:7 "/bin/bash" 15 minutes ago Up 13 minutes centos
91e008573de6 ubuntu:14.04 "/bin/bash" 30 minutes ago Up 30 minutes sad_yonath
cdd5df6f6e10 mysql:latest "docker-entrypoint.s…" 2 weeks ago Up 2 weeks 0.0.0.0:3306->3306/tcp, 33060/tcp moniapp-db
✘ ye-geeee@192 ~ docker rm centos
Error response from daemon: You cannot remove a running container 2727851ed7ec07ff566f58ef2a3cf5d9b1b7508136e885b137d03edba8234d7a. Stop the container before attempting removal or force remove
✘ ye-geeee@192@192 ~ docker stop centos
centos
gang-yeji@192 ~ docker rm centos
centos
실행중인 도커 컨테이너는 삭제할 수 없으므로 docker stop [컨테이너명]
을 통해 중지한 후에 컨테이너를 삭제합니다.
전체 컨테이너를 일괄로 모두 삭제할 때 사용하는 커맨드입니다.
외부에 컨테이너 애플리케이션을 노출하기 위해서는 eth0의 IP와 포트를 호스트의 IP와 포트에 바인딩해야 합니다.
run
을 할 때에 -p
옵션을 통해 포트 바인딩을 합니다.
✘ ye-geeee@192 ~ docker run -i -t -p 7000:80 ubuntu:14.04
root@909090adb7a2:/#