이제 Docker 데몬을 올려 놓았다고 가정한다.
docker info 명령으로 현재 Docker 의 컨테이너 수, 이미지 수, Docker 버전, ROOT Dir, ... 등의 정보를 확인할 수 있다.
$ docker info Containers: 2 Images: 2 Server Version: 1.9.1 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 6 Dirperm1 Supported: false Execution Driver: native-0.2 Logging Driver: json-file Kernel Version: 3.13.0-74-generic Operating System: Ubuntu 14.04.3 LTS CPUs: 1 Total Memory: 992.5 MiB Name: ip-172-31-11-122 ID: BVTB:PMXW:2IG2:3LE6:K2Q5:DLNS:AWMG:M3JE:3EKO:U6V4:ZZMD:7QUM | cs |
이미지 다운로드
Docker 설치 후에 보유한 이미지가 없으므로 일단 어떤 이미지든 다운 받아본다.
다운받는 방법은 pull / run 이 있는데 pull 은 Docker Hub 에서 이미지를 검색하여 다운로드 하는 방식이고,
run 은 이미지를 로컬에서 먼저 검색한 후 없으면 Docker Hub 에서 다운받아 실행하는 방법이다.
즉, pull 은 다운로드만, run 은 다운로드 후 실행. 이미 다운로드 되어 있으면 실행만.
$ docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu fcee8bcfe180: Pull complete 4cdc0cbc1936: Pull complete d9e545b90db8: Pull complete c4bea91afef3: Pull complete Digest: sha256:b53bb7b0d18842214ac7472c2a8801e8682c247d30f1ba4bab0083a2e2e091ea Status: Downloaded newer image for ubuntu:latest | cs |
이미지를 다운로드 할 때, 해시코드로 작성된 이미지 ID를 보여주지만 대부분의 명령에서는 전체 ID 를 사용하지 않고 ID의 첫 12글자를 보여준다.
전체 ID 의 확인이 필요할 때는 docker inspect [image] 나 docker images --no-trunc=true 명령을 사용한다.
이미지 실행
$ docker run ubuntu:14.04 /bin/echo 'Hello world' | cs |
ubuntu 는 실행할 이미지 이름이며 콜론(:) 뒤에는 버전이다. 명시하지 않으면 가장 최신 버전을 실행한다.
이미지를 지정하면 Docker 는 먼저 Docker 호스트 에서 해당 이미지를 찾아보고, 없으면 공개 이미지 레지스트리인 Docker Hub 에서 이미지를 다운받는다.
그 후 컨테이너가 실행되면 Docker 는 새로운 Ubuntu 14.04 환경을 생성하고, 입력한 명령어(/bin/echo 'Hello world')를 새로운 컨테이너에서 실행하고, 컨테이너는 중지(stopped)된다.
$ docker run -t -i ubuntu:14.04 /bin/bash root@af8bae53bdd3:/# | cs |
이번에는 두개의 옵션(flag)이 추가됐다.
-t (tty) 는 새 컨테이너 안에 터미널(가상 장치: TTY)을 할당하는 것이다.
-i (interactive) 는 컨테이너의 표준 입력을 사용하여 대화형 연결을 할 수 있다.
명령문(/bin/bash)대로 컨테이너 안에서 Bash 쉘을 시작하고, Bash 쉘 프로세스를 종료하면 컨테이너도 중지한다.
위의 Hello World 를 데몬화 하기.
$ docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" 023959abc767d858171dd91c812fee2dd1a37eb232911317c951ece4b7e2691c | cs |
-d (detach) 옵션은 컨테이너를 백그라운드에서 실행하게 하고 컨테이너 ID 를 반환한다.
/bin/sh 로 시작되는 명령문은 1초마다 hello world 를 계속해서 출력한다.
백그라운드에서 실행하게 하였기 때문에 명령에 대한 결과가 출력되지는 않는다.
실행중인 컨테이너 확인
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 023959abc767 ubuntu:14.04 "/bin/sh -c 'while tr" 7 seconds ago Up 7 seconds boring_hodgkin 611bed8edf61 ubuntu "/bin/bash" 2 hours ago Exited (0) 2 hours ago awesome_leavitt 5c7c984d5d45 hello-world "/hello" 4 hours ago Exited (0) 4 hours ago naughty_bardeen | cs |
-a(all) 옵션은 모든 컨테이너를 보여주고, 옵션을 사용하지 않으면 실행 중인 컨테이너만 출력한다.
docker 는 컨테이너가 시작되면 위 출력 내용처럼 이름을 자동으로 할당한다.
docker logs 명령을 사용하여 위에 백그라운드에서 실행 중인 컨테이너 내부를 볼 수 있다.
$ docker logs [컨테이너 이름] | cs |
실행중인 이미지 중지
$ docker stop boring_hodgkin boring_hodgkin | cs |
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.