[docker] 利用docker运行apache服务器
站在巨人的肩膀上
实习快两个月了,在学习centos的时候,接触到了docker,一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
学习的第一个容器就是关于apache服务器的,所以再此分享一下。
part.1 安装 docker,并配置daocloud
[root@localhost ~]#yum install docker
[root@localhost ~]#systemctl start docker
docker的镜像被墙,所以pull起来特别慢,所以我们采用daocloud的镜像。点开链接daocloud注册登录,然后点击加速器按钮,复制下列代码,星号处每个人不一样。
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://***********.m.daocloud.io
然后把上面部分的在centos处输入,然后重启docker服务,如果重启失败,可以查看/etc/docker/daemon.json,可能是json文件的格式有错,删除【】内的“,”即可,然后再次重启。
part.2 设置docker
Docker 需要一个基本的镜像才能运行,我们的所有容器都是(直接或间接)基于这样一个镜像来运行的,下面的命令把一个基本镜像 pull 到本地:
[root@localhost ~]#docker pull centos # Download base image
part.3 为我们的容器创建第一个镜像
[root@localhost ~]# docker run -t -i centos /bin/bash
进入容器后,我们需要安装一些yum包
yum -y update
yum -y which git
安装完成之后,按CTRL+D推出当前容器的命令行,输入下列代码查看容器ID。
[root@localhost ~]# docker ps -a
查看后输入下列命令行
[root@localhost ~]# docker commit 容器ID custom/base
容器成功提交后,执行 sudo docker images ,我们会看到刚才提交的容器。我们就以这个容器为基础容器,再来创建一个新的容器。
part.4 创建新的容器,并安装 apache
我们要以 custom/base 容器为基础,运行一个新的容器。
[root@localhost ~]# docker run -t -i custom/base /bin/bash
然后yum安装httpd即可!
part.5再次提交容器
按 Ctrl + d 来退出容器的命令行,查看容器ID,然后用先前的方法,创建新的容器。
[root@localhost ~]# docker commit 容器ID custom/httpd
part.6 运行http服务器
-v will Mount a volume from VM to the container which was also shared from host to Vagrant VM.
-v 参数把主机共享给虚拟机的一个卷挂载到容器中
-p forward VM port 80 to container port 80; VM port 80 is mapped to host port 8080 in Vagrantfile
-p 参数把虚拟机的80端口映射到容器的80端口;虚拟机的80端口在 Vagrantfile 中被绑定到主机的8080端口,也就是:主机8080->虚拟机80->容器80
[root@localhost ~]#docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash
然后启动apache
apachectl -k start
part.7 在浏览器中测试
在浏览器中浏览 http://localhost:8080 即可。
part.8 总结
docker的轻量级,可复用性镜像就是他最大的特点,docker的灵活使用在我们学习过程中,有很多帮助。