侧边栏壁纸
博主头像
小小酥心

旧书不厌百回读,熟读精思子自知💪

  • 累计撰写 22 篇文章
  • 累计创建 8 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

docker中容器间通信方式

小小酥心
2022-01-14 / 0 评论 / 0 点赞 / 1,023 阅读 / 1,418 字
温馨提示:
本文最后更新于 2022-01-14,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1. 通过容器ip访问

容器重启后,ip会发生变化。通过容器ip访问不是一个好的方案。

2. 通过宿主机的ip:port访问

通过宿主机的ip:port访问,只能依靠监听在暴露出的端口的进程来进行有限的通信。

3. 通过link建立连接(官方不推荐使用)

运行容器时,指定参数link,使得源容器与被链接的容器可以进行相互通信。

#源容器: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

此时会在test-centos容器的/etc/hosts中添加域名解析。并且当容器IP变化时,docker会自动维护映射关系。

#cat /etc/hosts
127.0.0.1 localhost
172.17.0.15 mysql test-mysql 0c0847f7a4c4

4. 通过 User-defined networks(推荐)

docker network来创建一个桥接网络,在docker run的时候将容器指定到新创建的桥接网络中,这样同一桥接网络中的容器就可以通过互相访问。

docker network connect 命令是用于将docker容器连接到某个网络中,或者与其他容器建联,容器可以使用容器名或者容器ID。

用法

docker network connect [OPTIONS] NETWORK CONTAINER

选项

名称,简写默认说明
--alias 为容器添加网络范围的别名
--ip 指定IP地址
--ip6 指定IPv6地址
--link 添加链接到另一个容器
--link-local-ip 添加容器的链接本地地址

相关命令

命令名称说明
docker network create创建一个网络(默认为桥接模式)
docker network connect将容器连接到网络
docker network disconnect断开容器的网络
docker network inspect显示一个或多个网络的详细信息
docker network ls列出网络
docker network prune删除所有未使用的网络
docker network rm删除一个或多个网络

举几个栗子:

将运行中的容器ctn1 连接/断连 到网络net1中,

docker network connect net1 ctn1
or
docker network disconnect net1 ctn1

在启动容器ctn1时,连接到网络net1上,

docker run -itd --network=net1 ctn1

给容器分配指定ip(192.168.10.10)

docker network connect --ip 192.168.10.10 net1 ctn1

--alias:为容器在网络范围内添加一个别名。

docker network connect --alias db --alias mysql multi-host-network container2

创建网络,并指定subnet和ip范围

docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network
0

评论区