Docker容器间通信

Docker中容器间的通信方式有哪些?

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

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

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

4.通过Docker桥接网络实现容器间相互访问(推荐)

第1/2种方式比较简单,在此主要讲述下第3/4种方式。

通过link建立连接

通过link建立的连接只能是单向通信。

--name 指定容器名称
--link 指定连接容器名称

启动容器并指定name和link:
docker run -d --name database -it centos /bin/bash
docker run -d --name web --link database tomcat

docker exec -it 容器ID /bin/bash

ping 虚拟IP
ping database

进入终端中执行ping命令,发现web可以访问通database,但database访问不了web容器。

通过Docker桥接网络实现容器间相互访问

查看所有的Docker网络
docker network ls

创建Docker网络:
docker network create -d bridge my-bridge

启动web和database容器时指定网络:
docker run -d --name web --network my-bridge tomcat
docker run -d --name database --network my-bridge centos

进入终端ping测试:
docker exec -it 容器ID /bin/bash

ping web
ping database

可以发现接入到同一个Docker网络的容器,相互之间都可以直接访问。

每创建一个网桥,都会创建一个虚拟网卡(网关)。

Docker network相关命令

C:\Users\whwtr>docker network -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker network COMMAND

Manage networks

Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  prune       Remove all unused networks
  rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.

C:\Users\whwtr>

(完)

最后修改于:2022年09月19日 00:57

添加新评论