仅仅做为个人笔记使用
参考:https://github.com/tutumcloud/haproxy
主要是参考该主页上,这一段的用法
Virtual hosts can be configured by the proxy reading linked container environment variables (VIRTUAL_HOST
). Here is an example:
docker run -d -e VIRTUAL_HOST="www.webapp1.com, www.webapp1.org" --name webapp1 tutum/hello-world
docker run -d -e VIRTUAL_HOST=www.webapp2.com --name webapp2 your/webapp2
docker run -d --link webapp1:webapp1 --link webapp2:webapp2 -p 80:80 tutum/haproxy
In the example above, when you access http://www.webapp1.com
or http://www.webapp1.org
, it will show the service running in container webapp1
, and http://www.webapp2.com
will go to container webapp2
.
所以直接基于之前搭建的apache2的镜像来设置,那么运行为
docker run -d -e VIRTUAL_HOST="域名1" --name webapp1 -p 1080:80 -i -t apache2
docker run -d -e VIRTUAL_HOST="域名2" --name webapp2 -p 1081:80 -i -t apache2
docker run -d --link webapp1:webapp1 --link webapp2:webapp2 -p 80:80 tutum/haproxy
这里-d是在后台运行,然后指定域名,--name是对这个容器进行一个命名,需要应用在tutum/haproxy上,-p是指定端口映射,这里是将宿主机上的1080端口映射到docker容器内的80端口上,在笔者实验中,这个apache2的镜像是需要指定端口才好用的,不过之前下载的一个lamp的镜像,使用时就不需要指定端口,所以加不加端口这里还不是很确定。
然后--link webapp1:webapp1是将前面容器再命名为webapp1在容器连接上,然后将宿主机的80端口映射到tutum/haproxy的80端口,这样外界访问的80端口的流量就被haproxy按照域名进行分流了。
最后为了试验效果,需要运行容器apache2的web服务,前面默认创建是关闭的。
那么首先需要进入容器,首先查看容器的id
docker ps
然后通过
docker exec -it [容器ID] /bin/bash
要进去以后,然后启用
/etc/init.d/apache2 restart
创建了一个实例以后,进入之后,在/var/www/html下,修改index主页为
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 域名1 </title>
</head>
<body>
<p> 域名1 </p>
</body>
</html>
域名1与域名2的两个容器分别修改,这样实验可以看出效果,然后阿里云里面的域名服务还需要将购买的两个域名,直接映射到同一个IP地址上,这个在阿里云域名里面直接配置即可。
最后直接通过网页访问域名即可