Ossian Story
article thumbnail

[Docker] Docker Container 실행


Container 실행


Docker에 대한 개념은 "[Docker] Docker란 무엇일까?" 포스팅을 통해 참조 부탁드립니다.


Container는 "run" 명령어로 새로운 Container를 생성 합니다.

Container Image 없을 경우 다운로드 후 Container를 생성하고 실행합니다.

•docker run [ Option ] [ Image ] [ Command ] ...

$> docker run centos
 
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
d9aaf4d82f24: Pull complete 
Digest: sha256:4565fe2dd7f4770e825d4bd9c761a81b26e49cc9e3c9631c58cfc3188be9505a
Status: Downloaded newer image for centos:latest
 
$>



Container는 프로세스이기 때문에 해당 Container에서 실행중인 프로세스가 없다면 종료됩니다.

따라서 위의 경우 "docker run centos"로 Container는 생성하였지만 프로세스를 할당하지 않았기 때문에 자동으로 종료된 것입니다.



Container 확인


"docker ps"로 현재 실행중인 Container를 확인할 수 있습니다. docker run으로 실행했던 Container는 종료되어 표시되지 않습니다.

•docker ps

$> docker ps
 
CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES



"docker ps -a" 옵션으로 전체 Container List를 확인할 수 있습니다.

•docker ps -a

$> docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
1a6c3f13ddd4        centos              "/bin/bash"         17 minutes ago      Exited (017 minutes ago                       naughty_neuman




Container 실행 - Nginx


docker run으로 Nginx를 실행합니다.

•docker run [ Option ] [ Image ] [ Command ]

$> docker run --80:80 nginx



Docker ps로 Nginx Container가 실행중인지 확인합니다.

•docker ps

$> docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
bd85b84d8ce0        nginx               "nginx -g 'daemon ..."   9 seconds ago       Up 8 seconds        0.0.0.0:80->80/tcp   keen_montalcini



[ Docker Host IP:80 ]로 접근하여 Nginx Webpage가 열린다면 Container가 정상적으로 실행된 것입니다.



Docker run 옵션


Container 실행 시 다양한 Docker run [ Option ]이 있습니다. 이중 주로 사용하는 Option은 아래와 같습니다.

OptionDescription-
-i Container가 STDIN을 유지하도록 설정합니다.
 터미널 입력을 하고자 할 때 "-it"로 사용합니다.
-t Container에 터미널을 할당합니다.
-d Container를 Deamon 형태로 실행합니다. 백그라운드 실행
-p Host와 Container의 Port를 연결합니다. Host > Container로 Port Forwarding
-v Host와 Container의 디렉토리를 연결합니다. Host의 디렉토리를 Container에 Mount
-rm 프로세스 종료 시 Container 자동 삭제
--name Container의 이름을 설정합니다.

 

Docker run 옵션에 따라 Nginx Container의 실행 명령을 해석하면 아래와 같습니다.

•nginx을 [ -d ] 백그라운드로 [ -p 80:80 ] Host의 80 Port 와 Container의 80 Port 연결해서 실행 

$> docker run --80:80 nginx




실행중인 Container에 접속하기


docker ps로 실행중인 Nginx Container ID 또는 Name을 확인합니다.

$> docker ps
 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
bd85b84d8ce0        nginx               "nginx -g 'daemon ..."   39 minutes ago      Up 39 minutes       0.0.0.0:80->80/tcp   keen_montalcini



docker exec로 Container에 접속합니다.

•docker exec -it [ Container ID or Name ] /bin/bash

$> docker exec -it keen_montalcini bin/bash



Hostname이 Container ID로 변경된 것을 확인할 수 있으며 Container에서 작업을 할 수 있습니다.

root@bd85b84d8ce0: find / -name 'index.html'
/usr/share/nginx/html/index.html






'[Cloud & Virtual] > Docker' 카테고리의 다른 글

[Docker] Docker를 위한 Core OS - Install  (0) 2016.08.01
[Docker] Install -CentOS 6.x  (0) 2016.07.31
[Docker] Docker란 무엇일까?  (0) 2016.07.16
profile

Ossian Story

@ossians