详解docker容器间通信的一种方法

2025-05-27 0 68

以我的ghost博客为例进行说明,我在VPS上用docker启动了两个ghost博客,还有一个Nginx做反向代理,将两个域名分别指向两个博客。

docker启动命令

ghost:

?

1

2
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的映射

?

1

2

3

4
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段内添加如下内容

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27
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的变化更新,所以使用域名才是更容易维护的方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:https://segmentfault.com/a/1190000008223744

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 详解docker容器间通信的一种方法 https://www.kuaiidc.com/68464.html

相关文章

发表评论
暂无评论