コンテナの実行

コンテナでネットワーク系のアプリケーションを動かす場合はホストのポートとコンテナのポートのマッピングを行う必要があります。

マッピングを行う場合はポートの指定を行うことも、自動設定を行うことも可能です。 webアプリケーションのコンテナには training/webapp を使います。事前にダウンロードしておいて下さい。

[root@localhost ~]# docker run -d -p 5000:5000 training/webapp python app.py
c42de9d1978599bb044efb4af6a7b60e8d02b7a777679a8ae47b391b89aec6bc
[root@localhost ~]# wget localhost:5000
--2014-10-14 16:41:52--  http://localhost:5000/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:5000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12 [text/html]
Saving to: "index.html"

100%[=====================================================>] 12          --.-K/s   in 0s      

2014-10-14 16:41:52 (1.90 MB/s) - "index.html" saved [12/12]

[root@localhost ~]#

上記サンプルではホストのポート5000番とコンテナのポート5000番を明示的にマッピングしています。 これには -p HOST_PORT:CONTAINER_PORT というオプションを指定します。

自動設定をする場合は -P オプションをつけます。マッピングされているポートは docker ps で確認できます。

[root@localhost ~]# docker run -d -P training/webapp python app.py
2f909ea15e8fc00ebabb9b26bb31d5a309868bdbc61f72ff55557a6e0b04aafd
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                     NAMES
2f909ea15e8f        training/webapp:latest   python app.py       9 seconds ago       Up 7 seconds        0.0.0.0:49154->5000/tcp   trusting_perlman    
c42de9d19785        training/webapp:latest   python app.py       7 minutes ago       Up 7 minutes        0.0.0.0:5000->5000/tcp    clever_lalande