天天看點

docker深入1-嘗試運作一個簡單的web環境

docker深入1-嘗試運作一個簡單的web環境

目的:在基礎鏡像(pcnk/base:v2)上增加一個web環境:sync

做法:啟動新的container,然後逐漸增加web服務,再送出到image,這裡用到了端口映射,資料卷挂載。

<code>一、在【pcnk</code><code>/base</code><code>:v2】這個基礎image上運作一個container【web】來安裝</code><code>sync</code><code>所需的httpd等服務</code>

<code>1)container【web】</code>

<code>[Jack@test101 base]$ docker run -d -</code><code>v</code> <code>/home/download</code><code>:</code><code>/home/download</code> <code>-</code><code>v</code> <code>/home/datacenter</code><code>:</code><code>/data</code> <code>--name web -p 10032:22 pcnk</code><code>/base</code><code>:v2   </code>

<code>152d0ca20346fc4a0d0a5a8fe04671910dcc685801f572159ae3c7f5dd2ecf43</code>

<code>[Jack@test101 base]$ docker </code><code>ps</code> <code>-l</code>

<code>CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                   NAMES</code>

<code>152d0ca20346        pcnk</code><code>/base</code><code>:v2        "</code><code>/usr/bin/supervisor</code>   <code>7 seconds ago       Up 6 seconds        0.0.0.0:10032-&gt;22</code><code>/tcp</code>   <code>web   </code>

<code>[Jack@test101 base]$ </code><code>ssh</code> <code>-p 10032 [email protected]</code>

<code>[email protected]'s password: </code>

<code>Last login: Wed May  6 10:11:26 2015 from 172.17.42.1</code>

<code>2)調整時間:</code>

<code>[root@152d0ca20346 /]</code><code># mv -f /etc/localtime /etc/localtime.old</code>

<code>[root@152d0ca20346 /]</code><code># ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime</code>

<code>[root@152d0ca20346 /]</code><code># echo 'ZONE="Asia/Shanghai"' &gt;/etc/sysconfig/clock</code>

<code>[root@152d0ca20346 /]</code><code># cd /home/download/vriteam-sync-0.2.4</code>

<code>[root@152d0ca20346 vriteam-</code><code>sync</code><code>-0.2.4]</code><code># yum -y install wget gcc perl autoconf automake make bzip2 tar zip &amp;&amp; yum clean all</code>

<code>[root@152d0ca20346 vriteam-</code><code>sync</code><code>-0.2.4]</code><code># ./install all</code>

<code>3)安裝php子產品:</code>

<code>[root@152d0ca20346 vriteam-</code><code>sync</code><code>-0.2.4]</code><code># ./install ssh2</code>

<code>[root@152d0ca20346 vriteam-</code><code>sync</code><code>-0.2.4]</code><code># ./install svn</code>

<code>[root@152d0ca20346 vriteam-</code><code>sync</code><code>-0.2.4]</code><code># cd /etc/php.d</code>

<code>[root@152d0ca20346 php.d]</code><code># cat ssh2.ini svn.ini </code>

<code>; Enable ssh2 extension module</code>

<code>extension=ssh2.so</code>

<code>; Enable svn extension module</code>

<code>extension=svn.so</code>

<code>[root@152d0ca20346 vriteam-</code><code>sync</code><code>-0.2.4]</code><code># ls /lib64/php/modules/</code>

<code>curl.so  fileinfo.so  json.so  mysqli.so  mysql.so  pdo_mysql.so  pdo.so  pdo_sqlite.so  phar.so  sqlite3.so  ssh2.so  svn.so  zip.so</code>

<code>[root@152d0ca20346 conf.d]</code><code># yum clean all</code>

<code>4)調整httpd的配置:</code>

<code>[root@152d0ca20346 supervisor.d]</code><code># ln -s /data/supervisor.d/httpd.ini .</code>

<code>[root@152d0ca20346 supervisor.d]</code><code># ll</code>

<code>total 4</code>

<code>lrwxrwxrwx. 1 root root 28 May  6 02:46 httpd.ini -&gt; </code><code>/data/supervisor</code><code>.d</code><code>/httpd</code><code>.ini</code>

<code>-rw-rw-r--. 1 root root 41 May  5 10:47 sshd.ini</code>

<code>[root@152d0ca20346 supervisor.d]</code><code># cd /etc/httpd/conf.d/</code>

<code>[root@152d0ca20346 conf.d]</code><code># mv welcome.conf /tmp/</code>

<code>[root@152d0ca20346 conf.d]</code><code># ln -s /data/httpd/conf.d/sync.conf .</code>

<code>[root@152d0ca20346 conf.d]</code><code># ll</code>

<code>total 16</code>

<code>-rw-r--r--. 1 root root 2893 Mar 12 15:07 autoindex.conf</code>

<code>-rw-r--r--. 1 root root  691 Oct 31  2014 php.conf</code>

<code>-rw-r--r--. 1 root root  366 Mar 12 15:08 README</code>

<code>lrwxrwxrwx. 1 root root   28 May  6 02:47 </code><code>sync</code><code>.conf -&gt; </code><code>/data/httpd/conf</code><code>.d</code><code>/sync</code><code>.conf</code>

<code>-rw-r--r--. 1 root root 1252 Mar 12 14:57 userdir.conf</code>

<code>[root@152d0ca20346 conf.d]</code><code># cat sync.conf </code>

<code>&lt;VirtualHost *:80&gt;</code>

<code>    </code><code>ServerAdmin [email protected]</code>

<code>    </code><code>ServerName </code><code>sync</code><code>.ec.office</code>

<code>    </code><code>DocumentRoot </code><code>/data/sync/src</code>

<code>    </code><code>DirectoryIndex index.html index.php   </code>

<code>    </code><code>&lt;Directory </code><code>/data/sync/src</code><code>&gt;</code>

<code>        </code><code>AllowOverride None</code>

<code>        </code><code>Require all granted</code>

<code>    </code><code>&lt;</code><code>/Directory</code><code>&gt;</code>

<code>    </code><code>ErrorLog </code><code>/data/log/sync-error_log</code>

<code>    </code><code>CustomLog </code><code>/data/log/sync-access_log</code> <code>common</code>

<code>&lt;</code><code>/VirtualHost</code><code>&gt;</code>

<code>二、送出成image:【pcnk</code><code>/web</code><code>:</code><code>sync</code><code>】</code>

<code>[Jack@test101 base]$ docker commit 152d0ca20346 pcnk</code><code>/web</code><code>:</code><code>sync</code>

<code>三、在image【pcnk</code><code>/web</code><code>:</code><code>sync</code><code>】的基礎上,建立新的container【app_sync】,映射80端口,啟動httpd服務</code>

<code>1)container【app_sync】</code>

<code>[Jack@test101 base]$ docker run -d -</code><code>v</code> <code>/home/download</code><code>:</code><code>/home/download</code> <code>-</code><code>v</code> <code>/home/datacenter</code><code>:</code><code>/data</code> <code>--name app_sync -p 10042:22 -p 80:80 pcnk</code><code>/web</code><code>:</code><code>sync</code>

<code>[Jack@test101 base]$ </code><code>ssh</code> <code>-p 10042 [email protected]</code>

<code>The authenticity of host </code><code>'[127.0.0.1]:10042 ([127.0.0.1]:10042)'</code> <code>can't be established.</code>

<code>RSA key fingerprint is 15:18:db:44:ed:03:ca:ac:15:a3:d0:ea:ac:01:7e:27.</code>

<code>Are you sure you want to </code><code>continue</code> <code>connecting (</code><code>yes</code><code>/no</code><code>)? </code><code>yes</code>

<code>Warning: Permanently added </code><code>'[127.0.0.1]:10042'</code> <code>(RSA) to the list of known hosts.</code>

<code>Last login: Wed May  6 11:51:55 2015 from 172.17.42.1</code>

<code>[root@4df93ea135a9 ~]</code><code># ps -ef</code>

<code>UID        PID  PPID  C STIME TTY          TIME CMD</code>

<code>root         1     0  0 12:02 ?        00:00:00 </code><code>/usr/bin/python</code> <code>/usr/bin/supervisord</code>

<code>root         9     1  0 12:02 ?        00:00:00 </code><code>/usr/sbin/httpd</code> <code>-DFOREGROUND</code>

<code>root        10     1  0 12:02 ?        00:00:00 </code><code>/usr/sbin/sshd</code> <code>-D</code>

<code>apache      12     9  0 12:02 ?        00:00:00 </code><code>/usr/sbin/httpd</code> <code>-DFOREGROUND</code>

<code>apache      13     9  0 12:02 ?        00:00:00 </code><code>/usr/sbin/httpd</code> <code>-DFOREGROUND</code>

<code>apache      14     9  0 12:02 ?        00:00:00 </code><code>/usr/sbin/httpd</code> <code>-DFOREGROUND</code>

<code>apache      15     9  0 12:02 ?        00:00:00 </code><code>/usr/sbin/httpd</code> <code>-DFOREGROUND</code>

<code>apache      16     9  0 12:02 ?        00:00:00 </code><code>/usr/sbin/httpd</code> <code>-DFOREGROUND</code>

<code>root        17    10  0 12:03 ?        00:00:00 sshd: root@pts</code><code>/0</code>

<code>root        19    17  0 12:03 pts</code><code>/0</code>    <code>00:00:00 -</code><code>bash</code>

<code>root        36    19  0 12:03 pts</code><code>/0</code>    <code>00:00:00 </code><code>ps</code> <code>-ef</code>

<code>2)httpd服務的控制</code>

<code>[root@ea8daf7b62d4 ~]</code><code># supervisorctl status httpd </code>

<code>httpd                            RUNNING   pid 9, uptime 0:00:48       </code>

<code>[root@6a199d754f77 ~]</code><code># chmod 777 /data/sync/src/tmp/</code>

<code>[root@6a199d754f77 ~]</code><code># chmod 777 /data/sync/src/data/</code>

<code>[root@6a199d754f77 ~]</code><code># chmod 777 /data/sync/src/install/</code>

<code>[root@6a199d754f77 ~]</code><code># chmod 777 /data/sync/src/db.cfg.php </code>

<code>3)通過web通路,引導安裝,db這個環節略過。</code>

<code>四、停止之前用的container,删掉image【pcnk</code><code>/web</code><code>:</code><code>sync</code><code>】,送出成一個新的image【website</code><code>/sync</code><code>】,然後通過這個來啟動服務</code>

<code>1)image【website</code><code>/sync</code><code>】</code>

<code>[Jack@test101 base]$ docker stop app_sync</code>

<code>[Jack@test101 base]$ docker </code><code>rm</code> <code>app_sync</code>

<code>[Jack@test101 base]$ dcoker rmi </code>

<code>[Jack@test101 base]$ docker images</code>

<code>REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE</code>

<code>website</code><code>/sync</code>        <code>latest              1bda5d872bf7        22 minutes ago      508 MB</code>

<code>pcnk</code><code>/web</code>            <code>sync</code>                <code>b41b76b51e1a        4 hours ago         505.9 MB</code>

<code>pcnk</code><code>/base</code>           <code>v2                  064aa35dfcef        6 hours ago         251.3 MB</code>

<code>centos              7                   fd44297e2ddb        2 weeks ago         215.7 MB</code>

<code>centos              centos7             fd44297e2ddb        2 weeks ago         215.7 MB</code>

<code>centos              latest              fd44297e2ddb        2 weeks ago         215.7 MB</code>

<code>[Jack@test101 base]$ docker rmi b41b76b51e1a</code>

<code>Untagged: pcnk</code><code>/web</code><code>:</code><code>sync</code>

<code>[Jack@test101 base]$ docker commit -m </code><code>"增加 httpd,php 服務,用于sync這個應用。"</code> <code>-a </code><code>"pcnk"</code> <code>ea8daf7b62d4 website</code><code>/sync</code>

<code>2)container【app_sync_web】</code>

<code>[Jack@test101 base]$ docker run -d -</code><code>v</code> <code>/home/download</code><code>:</code><code>/home/download</code> <code>-</code><code>v</code> <code>/home/datacenter</code><code>:</code><code>/data</code> <code>--name app_sync_web -p 40022:22 -p 80:80 website</code><code>/sync</code>

<code>CONTAINER ID        IMAGE                 COMMAND                CREATED             STATUS              PORTS                                       NAMES</code>

<code>2ab2a9866251        website</code><code>/sync</code><code>:latest   "</code><code>/usr/bin/supervisor</code>   <code>6 seconds ago       Up 4 seconds        0.0.0.0:80-&gt;80</code><code>/tcp</code><code>, 0.0.0.0:40022-&gt;22</code><code>/tcp</code>   <code>app_sync_web   </code>

<code>五、現在我們來看一下images之間的關聯</code>

<code>[Jack@test101 ~]$ docker images --tree</code>

<code>Warning: </code><code>'--tree'</code> <code>is deprecated, it will be removed soon. See usage.</code>

<code>└─6941bfcbbfca Virtual Size: 0 B</code>

<code>  </code><code>└─41459f052977 Virtual Size: 215.7 MB</code>

<code>    </code><code>└─fd44297e2ddb Virtual Size: 215.7 MB Tags: centos:centos7, centos:latest, centos:7</code>

<code>      </code><code>└─751a85a0d00b Virtual Size: 215.7 MB</code>

<code>        </code><code>└─19b009f08542 Virtual Size: 228.1 MB</code>

<code>          </code><code>└─420cb9e73c70 Virtual Size: 251.3 MB</code>

<code>            </code><code>└─e97f94a79de0 Virtual Size: 251.3 MB</code>

<code>              </code><code>└─fde06c761bde Virtual Size: 251.3 MB</code>

<code>                </code><code>└─dbfae1099999 Virtual Size: 251.3 MB</code>

<code>                  </code><code>└─064aa35dfcef Virtual Size: 251.3 MB Tags: pcnk</code><code>/base</code><code>:v2</code>

<code>                    </code><code>└─b41b76b51e1a Virtual Size: 505.9 MB</code>

<code>                      </code><code>└─1bda5d872bf7 Virtual Size: 508 MB Tags: website</code><code>/sync</code><code>:latest</code>

本文轉自 pcnk 51CTO部落格,原文連結:http://blog.51cto.com/nosmoking/1643509,如需轉載請自行聯系原作者