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->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"' >/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 && 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 -> </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 -> </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><VirtualHost *:80></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><Directory </code><code>/data/sync/src</code><code>></code>
<code> </code><code>AllowOverride None</code>
<code> </code><code>Require all granted</code>
<code> </code><code><</code><code>/Directory</code><code>></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><</code><code>/VirtualHost</code><code>></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->80</code><code>/tcp</code><code>, 0.0.0.0:40022->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,如需转载请自行联系原作者