trsgw 发表于 2015-5-7 08:49:12

docker深入1-尝试运行一个简单的web环境

docker深入1-尝试运行一个简单的web环境
目的:在基础镜像(pcnk/base:v2)上增加一个web环境:sync
做法:启动新的container,然后逐步增加web服务,再提交到image,这里用到了端口映射,数据卷挂载。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
一、在【pcnk/base:v2】这个基础image上运行一个container【web】来安装sync所需的httpd等服务
1)container【web】
$ docker run -d -v /home/download:/home/download -v /home/datacenter:/data --name web -p 10032:22 pcnk/base:v2   
152d0ca20346fc4a0d0a5a8fe04671910dcc685801f572159ae3c7f5dd2ecf43
$ docker ps -l
CONTAINER ID      IMAGE               COMMAND                CREATED             STATUS            PORTS                   NAMES
152d0ca20346      pcnk/base:v2      "/usr/bin/supervisor   7 seconds ago       Up 6 seconds      0.0.0.0:10032->22/tcp   web   

$ ssh -p 10032 root@127.0.0.1
root@127.0.0.1's password:
Last login: Wed May6 10:11:26 2015 from 172.17.42.1

2)调整时间:
# mv -f /etc/localtime /etc/localtime.old
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# echo 'ZONE="Asia/Shanghai"' >/etc/sysconfig/clock

# cd /home/download/vriteam-sync-0.2.4
# yum -y install wget gcc perl autoconf automake make bzip2 tar zip && yum clean all
# ./install all

3)安装php模块:
# ./install ssh2
# ./install svn
# cd /etc/php.d
# cat ssh2.ini svn.ini
; Enable ssh2 extension module
extension=ssh2.so
; Enable svn extension module
extension=svn.so
# ls /lib64/php/modules/
curl.sofileinfo.sojson.somysqli.somysql.sopdo_mysql.sopdo.sopdo_sqlite.sophar.sosqlite3.sossh2.sosvn.sozip.so
# yum clean all

4)调整httpd的配置:
# ln -s /data/supervisor.d/httpd.ini .
# ll
total 4
lrwxrwxrwx. 1 root root 28 May6 02:46 httpd.ini -> /data/supervisor.d/httpd.ini
-rw-rw-r--. 1 root root 41 May5 10:47 sshd.ini

# cd /etc/httpd/conf.d/
# mv welcome.conf /tmp/
# ln -s /data/httpd/conf.d/sync.conf .
# ll
total 16
-rw-r--r--. 1 root root 2893 Mar 12 15:07 autoindex.conf
-rw-r--r--. 1 root root691 Oct 312014 php.conf
-rw-r--r--. 1 root root366 Mar 12 15:08 README
lrwxrwxrwx. 1 root root   28 May6 02:47 sync.conf -> /data/httpd/conf.d/sync.conf
-rw-r--r--. 1 root root 1252 Mar 12 14:57 userdir.conf
# cat sync.conf
<VirtualHost *:80>
    ServerAdmin pc@ec.office
    ServerName sync.ec.office
    DocumentRoot /data/sync/src
    DirectoryIndex index.html index.php   

    <Directory /data/sync/src>
      AllowOverride None
      Require all granted
    </Directory>

    ErrorLog /data/log/sync-error_log
    CustomLog /data/log/sync-access_log common
</VirtualHost>




二、提交成image:【pcnk/web:sync】
$ docker commit 152d0ca20346 pcnk/web:sync




三、在image【pcnk/web:sync】的基础上,创建新的container【app_sync】,映射80端口,启动httpd服务

1)container【app_sync】
$ docker run -d -v /home/download:/home/download -v /home/datacenter:/data --name app_sync -p 10042:22 -p 80:80 pcnk/web:sync
$ ssh -p 10042 root@127.0.0.1
The authenticity of host ':10042 (:10042)' can't be established.
RSA key fingerprint is 15:18:db:44:ed:03:ca:ac:15:a3:d0:ea:ac:01:7e:27.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ':10042' (RSA) to the list of known hosts.
root@127.0.0.1's password:
Last login: Wed May6 11:51:55 2015 from 172.17.42.1
# ps -ef
UID      PIDPPIDC STIME TTY          TIME CMD
root         1   00 12:02 ?      00:00:00 /usr/bin/python /usr/bin/supervisord
root         9   10 12:02 ?      00:00:00 /usr/sbin/httpd -DFOREGROUND
root      10   10 12:02 ?      00:00:00 /usr/sbin/sshd -D
apache      12   90 12:02 ?      00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      13   90 12:02 ?      00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      14   90 12:02 ?      00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      15   90 12:02 ?      00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      16   90 12:02 ?      00:00:00 /usr/sbin/httpd -DFOREGROUND
root      17    100 12:03 ?      00:00:00 sshd: root@pts/0
root      19    170 12:03 pts/0    00:00:00 -bash
root      36    190 12:03 pts/0    00:00:00 ps -ef



2)httpd服务的控制

# supervisorctl status httpd
httpd                            RUNNING   pid 9, uptime 0:00:48      

# chmod 777 /data/sync/src/tmp/
# chmod 777 /data/sync/src/data/
# chmod 777 /data/sync/src/install/
# chmod 777 /data/sync/src/db.cfg.php

3)通过web访问,引导安装,db这个环节略过。


四、停止之前用的container,删掉image【pcnk/web:sync】,提交成一个新的image【website/sync】,然后通过这个来启动服务
1)image【website/sync】
$ docker stop app_sync
$ docker rm app_sync
$ dcoker rmi
$ docker images
REPOSITORY          TAG               IMAGE ID            CREATED             VIRTUAL SIZE
website/sync      latest            1bda5d872bf7      22 minutes ago      508 MB
pcnk/web            sync                b41b76b51e1a      4 hours ago         505.9 MB
pcnk/base         v2                  064aa35dfcef      6 hours ago         251.3 MB
centos            7                   fd44297e2ddb      2 weeks ago         215.7 MB
centos            centos7             fd44297e2ddb      2 weeks ago         215.7 MB
centos            latest            fd44297e2ddb      2 weeks ago         215.7 MB


$ docker rmi b41b76b51e1a
Untagged: pcnk/web:sync

$ docker commit -m "增加 httpd,php 服务,用于sync这个应用。" -a "pcnk" ea8daf7b62d4 website/sync



2)container【app_sync_web】
$ docker run -d -v /home/download:/home/download -v /home/datacenter:/data --name app_sync_web -p 40022:22 -p 80:80 website/sync
$ docker ps -l
CONTAINER ID      IMAGE               COMMAND                CREATED             STATUS            PORTS                                       NAMES
2ab2a9866251      website/sync:latest   "/usr/bin/supervisor   6 seconds ago       Up 4 seconds      0.0.0.0:80->80/tcp, 0.0.0.0:40022->22/tcp   app_sync_web   



五、现在我们来看一下images之间的关联
$ docker images --tree
Warning: '--tree' is deprecated, it will be removed soon. See usage.
└─6941bfcbbfca Virtual Size: 0 B
└─41459f052977 Virtual Size: 215.7 MB
    └─fd44297e2ddb Virtual Size: 215.7 MB Tags: centos:centos7, centos:latest, centos:7
      └─751a85a0d00b Virtual Size: 215.7 MB
      └─19b009f08542 Virtual Size: 228.1 MB
          └─420cb9e73c70 Virtual Size: 251.3 MB
            └─e97f94a79de0 Virtual Size: 251.3 MB
            └─fde06c761bde Virtual Size: 251.3 MB
                └─dbfae1099999 Virtual Size: 251.3 MB
                  └─064aa35dfcef Virtual Size: 251.3 MB Tags: pcnk/base:v2
                  └─b41b76b51e1a Virtual Size: 505.9 MB
                      └─1bda5d872bf7 Virtual Size: 508 MB Tags: website/sync:latest



页: [1]
查看完整版本: docker深入1-尝试运行一个简单的web环境