20150126 wcdj

摘要:前文《创建支持SSH服务的Docker镜像》已经实现了SSH远程登陆基础服务,本文在此镜像的基础上(即,继承之前的容器特性)再创建支持apache服务的镜像。


源码说明:

编译用到的Dockerfile和启动容器的脚本请参考GitHub上的源码。镜像(ubuntu_sshd_gcc_apache_gerry:14.04)创建成功后,使用以下其中一个命令

docker run -d -P ubuntu_sshd_gcc_apache_gerry:14.04 (随机映射端口)

docker run -d -p 20080:80 -p 20022:22 ubuntu_sshd_gcc_apache_gerry:14.04 (指定映射的端口)

docker run -d -p 20080:80 -p 20022:22 -e APACHE_SERVERNAME=test -v /root/apache_ubuntu/www:/var/www/html:ro ubuntu_sshd_gcc_apache_gerry:14.04 (映射本地目录,访问宿主主机的文件)

运行容器,可以通过http://104.131.173.242:20080 的方式访问apache的服务。

root@gerryyang:~# docker ps a
CONTAINER ID        IMAGE                                COMMAND             CREATED             STATUS              PORTS                                          NAMES
96d2c2ac689e        ubuntu_sshd_gcc_apache_gerry:14.04   "/run.sh"           14 seconds ago      Up 13 seconds       0.0.0.0:20022->22/tcp, 0.0.0.0:20080->80/tcp   compassionate_ardinghelli   
3701a0a92482        registry:latest                      "docker-registry"   15 seconds ago      Up 14 seconds       0.0.0.0:5000->5000/tcp                         dreamy_leakey               
2c4c90162253        ubuntu_sshd_gcc_gerry:14.04          "/run.sh"           15 seconds ago      Up 14 seconds       0.0.0.0:10022->22/tcp                          thirsty_archimedes          


需要注意的地方:

1,运行容器命令 docker run -d -P ubuntu_sshd_gcc_apache_gerry:14.04 中,使用 -P (大写),让Docker随机映射一个[49000, 49900]的端口至容器内部的开放的网络端口。例如,上述的ssh服务对外的端口是49153,而apache的对外端口是49154。注意,使用 -p (小写),指定要映射的端口,但这种方式指定的端口只能绑定一个容器。

2,Dockerfile创建的镜像拥有继承的特性。在apache镜像的Dockerfile中只用EXPOSE定义了对外开放的80端口,而实际对外(docker ps a)却看到新启动的容器映射了两个端口(22 和 80),说明在使用Dockerfile创建镜像时,会继承父镜像的开放端口,但却不会继承启动命令,因此,apache镜像的run.sh启动脚本还需要添加启动sshd的服务命令。




Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐