【Docker构建】- Nginx创建带Nginx服务的Centos Docker镜像
2017-07-06 23:02
726 查看
Nginx是一个高性能的Web和反向代理服务器,它具有很多非常优越的特性,下面我就分步骤向大家介绍如何创建带Nginx服务的Centos Docker镜像.
基础镜像:
2
3
4
1
2
3
4
其中镜像sshd-centos是以镜像centos为基础的开放SSH服务的镜像。
第一部分,手工配置并生成镜像
一 、以镜像sshd-centos为基础新建容器,并指定容器的ssh端口22映射到宿主机的2222端口上
1
查看容器运行情况:
2
3
1
2
3
二、在宿主机上通过ssh登录容器
1
如果提示没有ssh命令请安装openssh-clients
1
三、下载Nginx源码包,编译安装
1、安装wget
1
2、下载源码包
基础镜像:
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE sshd-centos latest 64136bdc0cc8 45 hours ago 261.8 MB centos latest 0f73ae75014f 5 weeks ago 172.3 MB1
2
3
4
1
2
3
4
其中镜像sshd-centos是以镜像centos为基础的开放SSH服务的镜像。
第一部分,手工配置并生成镜像
一 、以镜像sshd-centos为基础新建容器,并指定容器的ssh端口22映射到宿主机的2222端口上
docker run -d -p 2222:22 sshd-centos /usr/sbin/sshd -D1
1
查看容器运行情况:
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ed9361b598c8 sshd-centos "/usr/sbin/sshd -D" 16 minutes ago Up 16 minutes 0.0.0.0:2222->22/tcp distracted_mclean1
2
3
1
2
3
二、在宿主机上通过ssh登录容器
ssh localhost -p 22221
1
如果提示没有ssh命令请安装openssh-clients
yum install -y openssh-clients1
1
三、下载Nginx源码包,编译安装
1、安装wget
yum install -y wget1
1
2、下载源码包
cd /usr/local/src wget http://nginx.org/download/nginx-1.8.0.tar.gz[/code]1 2
1
2
3、解压源码包tar -zxvf nginx-1.8.0.tar.gz cd nginx-1.8.01
2
1
2
4、安装gcc 、make编译器和Nginx依赖包
由于下载的docker镜像是简化版,所以连最基本的gcc和make都没有带,只好自已安装; 同时需要安装Nginx依赖包pcre和zlibyum install -y gcc make pcre-devel zlib-devel1
1
5、编译./configure --prefix=/usr/local/nginx --with-pcre make make install1
2
3
4
1
2
3
4
四,启动nginx服务/usr/local/nginx/sbin/nginx1
1
查看是安装是否正常,能否访问默认页:[root@ed9361b598c8 nginx-1.8.0]# curl localhost <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>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
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
测试成功!
五,修改Ngnix配置文件
设置生成容器时,Nginx以非daemon启动echo "\ndaemon off;">>/usr/local/nginx/conf/nginx.conf1
1
六、编写启动ssh和Nginx服务的脚本cd /usr/local/sbin vi run.sh1
2
1
2
脚本内容#!/bin/bash /usr/sbin/sshd & /usr/local/nginx/sbin/nginx1
2
3
1
2
3
改变脚本权限,使其可以运行chmod 755 run.sh1
1
七、创建带有Nginx和ssh服务的镜像
1、查看当前容器的 Container ID[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ed9361b598c8 sshd-centos "/usr/sbin/sshd -D" 16 minutes ago Up 16 minutes 0.0.0.0:2222->22/tcp distracted_mclean1
2
3
1
2
3
2、根据容器CONTAINER ID生成新的镜像docker commit ed9361b598c8 nginx:centos1
1
3、查看新生成的镜像[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE nginx centos b61204959427 10 seconds ago 369.9 MB sshd-centos latest 64136bdc0cc8 45 hours ago 261.8 MB centos latest 0f73ae75014f 5 weeks ago 172.3 MB1
2
3
4
5
1
2
3
4
5
八、根据新生成的镜像生成容器
分别映射容器的22端口和80端口到宿主机的2223端口和8000端口docker run -d -p 2223:22 -p 8000:80 nginx:centos /usr/local/sbin/run.sh1
1
查看生成的容器:[root@localhost ~]#docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f5a87e085a0b nginx:centos "/usr/local/sbin/run 6 seconds ago Up 5 seconds 0.0.0.0:2223->22/tcp, 0.0.0.0:8000->80/tcp stoic_kirch ed9361b598c8 sshd-centos "/usr/sbin/sshd -D" 37 minutes ago Up 37 minutes 0.0.0.0:2222->22/tcp distracted_mclean1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
测试Nginx服务:[root@localhost ~]# curl localhost:8000 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>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
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
测试ssh服务[root@localhost ~]# ssh localhost -p 2223 The authenticity of host '[localhost]:2223 ([::1]:2223)' can't be established. RSA key fingerprint is d7:fd:3d:40:46:b6:0c:c9:ee:f1:fb:9e:08:c4:12:57. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[localhost]:2223' (RSA) to the list of known hosts. root@localhost's password:1
2
3
4
5
6
1
2
3
4
5
6
测试通过!
第二部分,通过Dockerfile生成镜像
在宿主机上准备的文件清单:Dockerfile #启动ssh和apache服务的角本 run.sh1
2
3
1
2
3
以上文件都放到/root/nginx_centos目录下mkdir -p /root/nginx_centos cd /root/nginx_centos1
2
1
2
一、准备run.sh文件
在/root/nginx_centos目录新建run.shvim run.sh1
1
角本内容如下:#!/bin/bash /usr/sbin/sshd & /usr/local/nginx/sbin/nginx1
2
3
1
2
3
二、准备Dockerfile
在/root/nginx_centos目录新建Dockerfilevim Dockerfile1
1
文件内容如下:#新生成的镜像是基于sshd:dockerfile镜像1
FROM sshd-centos
MAINTAINER by cmzsteven
WORKDIR /usr/local/src
#安装wget
RUN yum install -y wget
#下载并解压源码包
RUN wget http://nginx.org/download/nginx-1.8.0.tar.gz RUN tar -zxvf nginx-1.8.0.tar.gz
WORKDIR nginx-1.8.0
#编译安装nginx
RUN yum install -y gcc make pcre-devel zlib-devel
RUN ./configure --prefix=/usr/local/nginx --with-pcre
RUN make
RUN make install
#启动Nginx服务
RUN/usr/local/nginx/sbin/nginx
#修改Nginx配置文件,以非daemon方式启动
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
#复制服务启动脚本并设置权限
ADD run.sh /usr/local/sbin/run.sh
RUN chmod 755 /usr/local/sbin/run.sh
#设置生成容器时需要执行的脚本
CMD ["/usr/local/sbin/run.sh"]
#开放22、80、443端口
EXPOSE 22
EXPOSE 80
EXPOSE 443
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
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
需要注意的是:在Dockerfile文件中更换当前目录不可以用“cd”命令,而要改用“WORKDIR”.
三、根据Dockerfile生成镜像docker build -t nginx_dockerfile:centos .1
1
查看镜像:[root@localhost nginx_centos]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE nginx_dockerfile centos 9ad55461b2fe 5 minutes ago 386.1 MB nginx centos b738cec02b29 47 minutes ago 369.9 MB sshd-centos latest 64136bdc0cc8 46 hours ago 261.8 MB centos latest 0f73ae75014f 5 weeks ago 172.3 MB1
2
3
4
5
6
1
2
3
4
5
6
四、根据镜像生成的容器并进行测试
1、生成新的容器[root@localhost nginx_centos]#docker run -d -p 2224:22 -p 8001:80 -p 4443:443 nginx_dockerfile:centos /usr/local/sbin/run.sh1
1
将容器的22端口、80端口和443端口分别映射到到宿主机上的2224端口、8001端口和4443端口,并运行服务脚本。
也可以使用-P参数来让系统随机指定端口映射到22、80和443端口:docker run -d -P nginx_dockerfile:centos1
1
因为在Dockerfile中指定了EXPOSE所以系统会自动将指定的端口映射出来;同时使用CMD来指定生成容器时所需要执行的角本,所以这里省略了“/usr/local/sbin/run.sh”。
2、查看新生成的容器:[root@localhost nginx_centos]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c69d42541f52 nginx_dockerfile:centos "/usr/local/sbin/run 26 seconds ago Up 25 seconds 0.0.0.0:2224->22/tcp, 0.0.0.0:8001->80/tcp, 0.0.0.0:4443->443/tcp high_colden f5a87e085a0b nginx:centos "/usr/local/sbin/run 49 minutes ago Up 49 minutes 0.0.0.0:2223->22/tcp, 0.0.0.0:8000->80/tcp stoic_kirch ed9361b598c8 sshd-centos "/usr/sbin/sshd -D" About an hour ago Up About an hour 0.0.0.0:2222->22/tcp distracted_mclean1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
3、测试
测试nignx:[root@localhost nginx_centos]# curl localhost:8001 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>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
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
测试成功!
测试ssh[root@localhost nginx_centos]# ssh localhost -p 2224 The authenticity of host '[localhost]:2224 ([::1]:2224)' can't be established. RSA key fingerprint is d7:fd:3d:40:46:b6:0c:c9:ee:f1:fb:9e:08:c4:12:57. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[localhost]:2224' (RSA) to the list of known hosts. root@localhost's password:1
2
3
4
5
6
7
1
2
3
4
5
6
7
测试成功!
相关文章推荐
- 【系列3】使用Dockerfile创建yum安装nginx服务的Centos Docker镜像
- Dockerfile创建带有nginx服务的Centos Docker镜像
- Docker实战:使用Dockerfile创建带nginx服务并支持ssh的Centos Docker镜像
- 如何创建Nginx服务的Centos Docker镜像
- 创建带Nginx服务的Centos Docker镜像
- 【Docker构建】- Tomcat 创建带Tomcat服务的Centos Docker镜像
- 【系列3】使用Dockerfile创建带编译安装nginx服务的Centos Docker镜像
- 通过Dockerfile创建nginx服务的Centos镜像
- 【Dockerfile】使用Dockerfile创建带nginx服务的Centos Docker镜像
- 通过Dockerfile创建Mysql服务的Centos镜像
- 用dockerfile创建支持ssh服务的centos镜像
- 利用Dockerfile文件创建带有sshd服务的centos镜像
- 通过Dockerfile创建支持SSH服务的CentOS镜像
- docker 安装 创建支持ssh服务的镜像 创建nginx服务的镜像 用dockerfile制作nginx镜像
- Docker实战:使用Dockerfile创建带Apache服务并支持ssh的Centos Docker镜像
- 【Dockerfile】使用Dockerfile创建带Apache服务的Centos Docker镜像
- 【Docker江湖】之创建Web应用服务镜像——Apache/Nginx
- 创建带Tomcat服务的Centos Docker镜像
- 使用Dockerfile创建带Apache服务的Centos Docker镜像
- 【系列1】使用Dockerfile创建带sshd服务的Centos Docker镜像