资讯专栏INFORMATION COLUMN

docker容器间通信的一种方法

bergwhite / 2651人阅读

摘要:是容器中的一条,是由参数添加进来的。补充容器重启后可能变化,所以直接在中指定并不是一个好方法。使用时文件会随着容器的变化更新,所以使用域名才是更容易维护的方法。

转载请注明出处,原文链接http://tailnode.tk/2017/01/do...

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26790.html

相关文章

  • Docker容器跨主机通信之:直接路由方式

    摘要:各项配置如下主机的地址为主机的地址为为主机上的容器分配的子网为主机上的容器分配的子网这样配置之后,两个主机上的容器就肯定不会使用相同的地址从而避免了冲突。 showImg(https://segmentfault.com/img/remote/1460000015283239); 概述 就目前Docker自身默认的网络来说,单台主机上的不同Docker容器可以借助docker0网桥...

    zhongmeizhi 评论0 收藏0
  • 网易容器云平台的微服务化实践(一)

    摘要:本文是网易容器云平台的微服务化实践系列文章的第一篇。网易容器云平台的前身是网易应用自动部署平台,它能够利用云提供的基础设施,实现包括构建和部署一体化在内的整个应用生命周期管理。目前网易云容器服务团队以的方式管理着微服务,每周构建部署次数。 此文已由作者冯常健授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 摘要:网易云容器平台期望能给实施了微服务架构的团队提供完...

    zhjx922 评论0 收藏0
  • Docker容器通信方法

    摘要:而本文主要针对容器间的网络通信方法进行讨论。而同属于用户自定义的容器之间自动将所有端口暴露,方便容器间进行无障碍的通信,而不会遭受到外界的意外访问。几天前,为了解决日常在本地进行日常工作和开发测试之间的矛盾,利用docker在Windows系统中搭建了基于Linux的测试环境:借助Docker,在win10下编码,一键在Linux下测试。在这边文章里主要介绍了如何在本地通过docker构建与...

    qianfeng 评论0 收藏0
  • 一文读懂微服务与服务网格——“WHAT, WHY and HOW TO DO”

    摘要:在将您的单体应用微服务化时,也可以采用这种方式,即新的功能使用微服务架构来开发,通过对原有的单体应用暴露和端口号的方式供其进行调用和使用。如果这时其他服务再来访问这个和端口号,那一定会出现找不到服务等各种故障。 作者注:联系方式 leontian1024@gmail.com || github.com/XinyaoTian新人入行,非常期待能与各位大牛们讨论,感谢各位的阅读,希望对您有...

    zzzmh 评论0 收藏0
  • 一文读懂微服务与服务网格——“WHAT, WHY and HOW TO DO”

    摘要:在将您的单体应用微服务化时,也可以采用这种方式,即新的功能使用微服务架构来开发,通过对原有的单体应用暴露和端口号的方式供其进行调用和使用。如果这时其他服务再来访问这个和端口号,那一定会出现找不到服务等各种故障。 作者注:联系方式 leontian1024@gmail.com || github.com/XinyaoTian新人入行,非常期待能与各位大牛们讨论,感谢各位的阅读,希望对您有...

    pingan8787 评论0 收藏0

发表评论

0条评论

bergwhite

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<