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

 更新时间:2017年03月01日 10:31:22   作者:tailnode  
本篇文章主要介绍了详解docker容器间通信的一种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

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

相关文章

  • Linux安装Docker详细教程

    Linux安装Docker详细教程

    这篇文章介绍了Linux安装Docker的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 详解docker 制作mysql镜像并自动安装脚本

    详解docker 制作mysql镜像并自动安装脚本

    这篇文章主要介绍了docker mysql镜像制作并自动安装脚本,主要包括centos7环境下 一键制作mysql docker镜像并安装,对docker 制作mysql镜像shell脚本感兴趣的朋友一起看看吧
    2022-05-05
  • Docker容器动态加载挂载目录的实践

    Docker容器动态加载挂载目录的实践

    本文主要介绍了Docker容器中动态加载挂载目录的实践,通过挂载目录,可以将主机上的文件或目录与容器中的文件或目录进行关联,实现应用程序的灵活性和可扩展性,这种方法可以避免容器重启,减少应用程序的停机时间,并简化应用程序的部署和管理,使应用程序的迁移和扩展更加容易
    2024-10-10
  • docker logs-查看docker容器日志的实现

    docker logs-查看docker容器日志的实现

    这篇文章主要介绍了docker logs-查看docker容器日志的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 详解Docker 修改已有镜像(commit )

    详解Docker 修改已有镜像(commit )

    本篇文章主要介绍了详解Docker 修改已有镜像(commit ),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Centos Docker1.12 远程Rest api访问的配置方法

    Centos Docker1.12 远程Rest api访问的配置方法

    这篇文章主要介绍了Centos Docker1.12 远程Rest api访问的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • Docker如何更换镜像源提高拉取速度

    Docker如何更换镜像源提高拉取速度

    在国内,由于网络政策和限制,直接访问DockerHub速度很慢,尤其是在拉取大型镜像时,为了解决这个问题,常用的方法就是更换镜像源,本文将详细介绍如何更换Docker镜像源,并提供当前可用的镜像源,感兴趣的朋友一起看看吧
    2025-04-04
  • Dockerfile构建自定义镜像的实现

    Dockerfile构建自定义镜像的实现

    Dockerfile构建镜像的方式就目前而言是使用最为广泛的,本文主要介绍了Dockerfile构建自定义镜像的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • docker容器与宿主机的数据交互方式总结

    docker容器与宿主机的数据交互方式总结

    这篇文章主要给大家介绍了关于docker容器与宿主机的数据交互,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Docker中cgroups资源控制实战

    Docker中cgroups资源控制实战

    cgroups是Linux内核的功能,允许用户管理和限制进程组资源使用,支持资源限制、优先级控制、资源记录等,应用广泛,Docker和k8s等容器技术,通过cgroups实现精细的资源控制,本文就来详细的介绍一下
    2024-11-11

最新评论