详解docker容器间通信的一种方法
2017-03-01 10:31
1051 查看
以我的ghost博客为例进行说明,我在VPS上用docker启动了两个ghost博客,还有一个Nginx做反向代理,将两个域名分别指向两个博客。
docker启动命令
ghost:
docker run -e NODE_ENV=production --name ghost1 -v /path/to/data/ghost/ghost1/:/var/lib/ghost -d ghost docker run -e NODE_ENV=production --name ghost2 -v /path/to/data/ghost/ghost2/:/var/lib/ghost -d ghost
nginx:
docker run -p 80:80 --name nginx --link ghost1 --link ghost2 -v /path/to/data/nginx/nginx.conf:/etc/nginx/nginx.conf -d nginx
先启动两个ghost,然后启动nginx。使用--link参数将容器“链接”到一起,此参数会在容器中加入环境变量并在/etc/hosts中插入一条容器名与IP的映射
root@fabfd4bacfda:/# cat /etc/hosts 172.17.0.3 ghost1 d19c0134011a 172.17.0.5 ghost2 0e2e66ba70e0 172.17.0.4 fabfd4bacfda
设置nginx反向代理
修改nginx.conf,在http段内添加如下内容
http { server { listen 80; server_name www.domain1.tk domain1.tk; location / { proxy_pass http://ghost1:2368; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; server_name www.domain2.tk domain2.tk; location / { proxy_pass http://ghost2:2368; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
注意proxy_pass的值proxy_pass http://ghost2:2368;。 ghost2是nginx容器/etc/hosts中的一条,是由--link参数添加进来的。
设置完这些后,nginx就会将两个域名的请求分别代理到两个博客中。
补充
容器重启后IP可能变化,所以直接在nginx.conf中指定IP并不是一个好方法。使用--link时hosts文件会随着容器IP的变化更新,所以使用域名才是更容易维护的方法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- 详解Docker容器跨主机通信的方法
- 详解Docker 容器互联方法
- 详解Docker中容器的备份、恢复和迁移
- 两种进入容器的方法 - 每天5分钟玩转 Docker 容器技术(23)
- Docker镜像、容器的理解和使用方法
- Docker 架构详解 - 每天5分钟玩转容器技术(7)
- Docker 镜像、容器、仓库的概念及应用详解
- 串行通信波特率的一种自动检测方法
- Docker 容器的通信(十二)
- Docker下Tomcat容器中使用Mysql的方法
- docker 启动具有多个网络接口的容器的方法示例
- Docker学习笔记:容器间通信
- 容器虚拟化——docker 详解
- 容器间通信的三种方式 - 每天5分钟玩转 Docker 容器技术(35)
- docker连接spring boot和mysql容器方法介绍
- 在同一站点下,跨子域进行ajax通信的一种解决方法
- 串行通信波特率的一种自动检测方法
- Weave 如何与外网通信?- 每天5分钟玩转 Docker 容器技术(66)
- Docker容器重启后IP更改问题处理方法
- 【Docker容器的数据管理】-【Docker数据卷容器】- 挂在数据卷容器的方法