使用Dockerfile搭建Apache Web服务器
前文《创建支持SSH服务的Docker镜像》已经实现了SSH远程登陆基础服务,本文在此镜像的基础上(即,继承之前的容器特性)再创建支持apache服务的镜像。
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的服务命令。
更多推荐
所有评论(0)