Docker中容器间的通信方式有哪些
时间:2022-02-07 10:38
Docker中容器间的通信方式:1、利用容器ip访问;2、利用宿主机的“ip:port”访问;3、利用link建立连接进行通信;4、利用“User-defined networks”进行通信。 本教程操作环境:linux7.3系统、docker-1.13.1版、Dell G3电脑。 1.通过容器ip访问 容器重启后,ip会发生变化。通过容器ip访问不是一个好的方案。 2.通过宿主机的ip:port访问 通过宿主机的ip:port访问,只能依靠监听在暴露出的端口的进程来进行有限的通信。 3.通过link建立连接(官方不推荐使用) 运行容器时,指定参数link,使得源容器与被链接的容器可以进行相互通信,并且接受的容器可以获得源容器的一些数据,比如:环境变量。 直接通过 link的名字或者link时候取的别名就能进入: 通过link建立连接的容器,被链接的容器能 ping 通源容器,反过来不行。 在被链接的容器上查看环境变量 被链接容器会继承源容器的环境变量信息。 与/etc/hosts中的主机条目不同,如果重新启动源容器,则不会自动更新存储在环境变量中的IP地址。我们建议使用主机条目 /etc/hosts来解析链接容器的IP地址。 除了环境变量之外,Docker还将源容器的主机条目添加到/etc/hosts文件中。 如果重新启动源容器,/etc/hosts链接容器上的文件将使用源容器的新IP地址自动更新,从而允许链接通信继续。 4.通过 User-defined networks(推荐) docker network来创建一个桥接网络,在docker run的时候将容器指定到新创建的桥接网络中,这样同一桥接网络中的容器就可以通过互相访问。 创建网络 启动容器时,加入创建的网络 启动被链接的容器 推荐学习:《docker视频教程》 以上就是Docker中容器间的通信方式有哪些的详细内容,更多请关注gxlcms其它相关文章!Docker中容器间的通信方式有哪些
# 源容器:mysql
docker run -itd --name test-mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
#被链接容器 centos
docker run -itd --name test-centos --link test-mysql:mysql centos /bin/bash
#进入test-centos
docker exec -it test-centos /bin/bash
docker network create test-network
docker run -it --network test-network --network-alias mysql -e MYSQL_ROOT_PASSWORD=123 mysql:5.7
docker run -it --network test-network --network-alias centos centos /bin/bash