Dockerでバックグラウンド起動

今度は自動起動するようなコンテナを作ってみます。

ちょっと調べてみましたが、
1つのコンテナで複数サービスを起動させる方法って
まだこれというのがないみたい?

今回は、Apache httpdを使ってみようと思います。
なにはともあれコンテナを作りましょ。
–name=web(コンテナ名)
-p 80(ホスト側ポート):80(コンテナ側ポート)

# docker run -i -t --name=web -p 80:80 centos:6 /bin/bash
[root@535492bbb30c /]#
[root@535492bbb30c /]# yum install httpd
[root@535492bbb30c /]# service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.5 for ServerName

コンテナにhttpdを入れて起動させましょう。


きちんとコンテナ内で動いているか確認

[root@535492bbb30c /]# ps -eaf |grep httpd
root        68     1  0 08:08 ?        00:00:00 /usr/sbin/httpd
apache      70    68  0 08:08 ?        00:00:00 /usr/sbin/httpd
apache      71    68  0 08:08 ?        00:00:00 /usr/sbin/httpd
apache      72    68  0 08:08 ?        00:00:00 /usr/sbin/httpd
apache      73    68  0 08:08 ?        00:00:00 /usr/sbin/httpd
apache      74    68  0 08:08 ?        00:00:00 /usr/sbin/httpd
apache      75    68  0 08:08 ?        00:00:00 /usr/sbin/httpd
apache      76    68  0 08:08 ?        00:00:00 /usr/sbin/httpd
apache      77    68  0 08:08 ?        00:00:00 /usr/sbin/httpd
root        79     1  0 08:08 ?        00:00:00 grep httpd
[root@535492bbb30c /]# curl 127.0.0.1|head
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
101  4954  101  4954    0     0  3933k      0 --:--:-- --:--:-- --:--:--     0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
        <head>
                <title>Apache HTTP Server Test Page powered by CentOS</title>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                <style type="text/css">
                        body {
                                background-color: #fff;
                                color: #000;
                                font-size: 0.9em;
                                font-family: sans-serif,helvetica;
[root@535492bbb30c /]#
[root@535492bbb30c /]# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:04
          inet addr:172.17.0.5  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:4/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:16641 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6824 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:25122205 (23.9 MiB)  TX bytes:472306 (461.2 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5862 (5.7 KiB)  TX bytes:5862 (5.7 KiB)
[root@535492bbb30c /]#
[root@535492bbb30c /]# chkconfig httpd on
[root@535492bbb30c /]# chkconfig
htcacheclean    0:off   1:off   2:off   3:off   4:off   5:off   6:off
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
restorecond     0:off   1:off   2:off   3:off   4:off   5:off   6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
[root@535492bbb30c /]#

Ctrl+p」「Ctrl+q
一旦コンテナから抜けます

今度はホスト側で確認

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
1d35fa257719        centos:6            "/bin/bash"         About an hour ago   Up About an hour    0.0.0.0:80->80/tcp   web
# curl 172.17.0.5|head
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
101  4954  101  4954    0     0  4338k  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
        <head>
                <title>Apache HTTP Server Test Page powered by CentOS</title>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                <style type="text/css">
0                       body {
                                background-color: #fff;
-                               color: #000;
-                               font-size: 0.9em;
:                               font-family: sans-serif,helvetica;
--:-- --:--:-- --:--:-- 4837k
#  

ホスト側からでもアクセスできてます。

さて、出来たのでイメージ化しましょ。

# docker stop web(CONTAINER ID、NAMES)
web
#
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
1d35fa257719        centos:6            "/bin/bash"         About an hour ago   Exited (130) 45 seconds ago                       web
#
# docker commit 1d35fa257719 centos/apache:web
4cd9748b3c7ff3fcdcb65c8a384b751b94c7caf422dfc68bab99a1b90fb7cbfd
#
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos/apache       web                 4cd9748b3c7f        51 seconds ago      280.8 MB
centos              6                   f6808a3e4d9e        3 weeks ago         215.7 MB

イメージを作りました。

さて、作ったイメージから起動させてみましょ
-d = バックグラウンドで起動
/usr/sbin/httpd -DFOREGROUND = コンテナ内で実行するコマンド

# docker run -d -i -t -p 80:80 centos/apache:web /usr/sbin/httpd -DFOREGROUND
a40277e55efb0bac9d8b85545e962a214820b57727bc91ae770867d297cf6f40
# 
# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
d5b0c253fe0c        centos/apache:web   "/usr/sbin/httpd -DF"         3 seconds ago       Up 2 seconds        0.0.0.0:80->80/tcp   desperate_feynman

無事、バックグラウンドで起動しているみたいです。

で、バックグラウンドで動いているコンテナにアタッチしたら

# docker attach d5b0c253fe0c
# 

落ちてしまいます。

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS                      PORTS               NAMES
23c18d474c5a        centos/apache:web   "/usr/sbin/httpd -DF   About a minute ago   Exited (0) 20 seconds ago                       evil_lovelace

こんな感じに落ちてしまいます。。。

なので、

# docker run -d -i -t -p 80:80 centos/apache:web /usr/sbin/httpd -DFOREGROUND
# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                NAMES
ad37afaeb6e8        centos/apache:web   "/usr/sbin/httpd -DF   8 seconds ago       Up 7 seconds        0.0.0.0:80->80/tcp   condescending_morse
# 

バックグラウンドで起動させておいて

exec」オプションを使って「/bin/bash」を実行してやります

# docker exec -i -t ad37afaeb6e8 /bin/bash
[root@ad37afaeb6e8 /]#
[root@ad37afaeb6e8 /]# netstat -lanput
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 :::80                       :::*                        LISTEN      -
#  

こうすれば、落ちないみたい。

[tegaki]難しい。。。。[/tegaki]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Enter code * Time limit is exhausted. Please reload CAPTCHA.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください