컨테이너는 docker run 명령으로 실행할 수 있다. 이 때 두 종류의 컨테이너를 실행 할 수 있다.
포그라운드(forground)로 실행되며, 키보드와 모니터를 이용해서 유저와 상호작용 할 수 있다.
백그라운드로 실행 할 수 있다.
그 밖에 아래와 같은 도커 명령들을 살펴볼 것이다.
docker ps : 컨테이너의 목록 확인
docker logs : 컨테이너의 표준출력을 확인할 수 있다.
docker stop : 실행중인 컨테이너 종료
도커 컨테이너를 실행해 보자.
# sudo docker run -i -t ubuntu /bin/bash
docker version명령으로 도커 클라이언트와 도커 데몬의 버전을 확인 할 수 있다.
# docker version
Client version: 1.2.0
Client API version: 1.14
Go version (client): go1.2.1
Git commit (client): fa7b24f
OS/Arch (client): linux/amd64
Server version: 1.2.0
Server API version: 1.14
Go version (server): go1.2.1
Git commit (server): fa7b24f
도커의 버전과 함께, 도커의 기동을 위해서 필요한 git, go에 대한 버전정보도 함께 출력한다.
도커 클라이언트 명령어 확인
아무런 명령없이 실행하면, 도커에서 사용 할 수 있는 명령들을 출력한다.
# docker
Commands:
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders from a container's filesystem to the host path
diff Inspect changes on a container's filesystem
events Get real time events from the server
...
명령어별 도움말 보기
도커 명령어를 입력하고 엔터를 입력하면 자세한 사용법을 출력한다.
# docker attach
Usage: docker attach [OPTIONS] CONTAINER
Attach to a running container
--no-stdin=false Do not attach STDIN
...
명령 다음에 --help를 이용해도 동일한 도움말 화면을 볼 수 있다.
# docker attach --help
Usage: docker attach [OPTIONS] CONTAINER
Attach to a running container
도커로 웹 애플리케이션 실행하기
도커 클라이언트를 이용하면 하나 이상의 도커 컨테이너를 만들 수 있다. 특히 유용한 기능은 컨테이너에게 실행할 명령을 전달할 수 있다는 점이다. 컨테이너에서 hello world를 실행하는 예제다.
# docker run ubuntu echo /bin/echo "hello world"
hello world
ubuntu 이미지로 부터 컨테이너가 실행되고, /bin/echo "hello world"를 실행한다. 실행결과를 표준출력 하고, 컨테이너는 종료된다. Django와 node.js와 같은 애플리케이션 이미지로 부터, 웹 서비스 컨테이너를 실행 하는 식으로 확장할 수 있다. Python Flask 애플리케이션을 포함한 training/webapp이미지로 테스트를 했다.
# docker run -d -P training/webapp python app.py
로컬에 training/webapp이 없다면, 자동으로 다운로드 한다.
-d : 데몬모드로 실행한다.
-P : 도커 데몬이 로컬의 적당한 포트를 선택해서, 애플리케이션 포트로 포트포워딩 한다.
49154 포트를 컨테이너의 5000번 포트로 포워딩하고 있다. 로컬의 포트는 도커가 적당한 걸 선택하는데, 애플리케이션의 포트를 어떻게 선택했는지 궁금할 수 있겠다. 이미지를 만들 때, 포워딩에 사용할 포트를 설정 할 수 있다. 이 정보는 Working with Docker Images를 참고하자.
curl로 테스트해보자.
# curl -v localhost:49154
* Rebuilt URL to: localhost:49154/
* Hostname was NOT found in DNS cache
* Trying ::1...
* Connected to localhost (::1) port 49154 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.37.1
> Host: localhost:49154
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Content-Type: text/html; charset=utf-8
< Content-Length: 12
< Server: Werkzeug/0.10.4 Python/2.7.6
< Date: Sat, 16 May 2015 07:22:26 GMT
<
* Closing connection 0
-P옵션을 사용하면 32768 ~ 61000 사이의 포트를 선택한다. -p(소문자다)옵션을 이용해서 아래와 같이 포트를 특정 할 수 있다.
# docker run -d -p 5000:5000 training/webapp python app.py
이제 호스트의 5000번 포트로 애플리케이션 서버에 연결할 수 있다.
네트워크 포트정보 확인
docker ps명령으로 포트정보를 확인 할 수 있기는 하지만, 다른 정보들이 많아서 화면이 좀 지저분하다. docker port를 이용하면, 애플리케이션 포트가 로컬의 어떤 포트에서 포워딩되는지를 쉽게 확인 할 수 있다.
# docker port my_docker_app 5000
0.0.0.0:49155
웹 애플리케이션 로그 확인
docker logs 명령으로 애플리케이션에서 (굳이 로그인 하지 않고도)어떤일이 일어나는지 확인할 수 있다.
Contents
컨테이너로 작업하기
도커 클라이언트 명령어 확인
명령어별 도움말 보기
도커로 웹 애플리케이션 실행하기
컨테이너 정보 확인
네트워크 포트정보 확인
웹 애플리케이션 로그 확인
컨테이너의 프로세스 정보 확인
컨테이너의 상세 정보
컨테이너 종료
컨테이너 재 시작
컨테이너 삭제
Recent Posts
Archive Posts
Tags