#docker 如何从容器A直接访问容器B

使用network可以将多个容器连接到一起,并且相互间可以通过容器名直接访问。

问题背景

测试环境中,我们经常不使用docker-compose,而是直接使用docker run来快速启动一个容器。

当需求启动多个容器,并且相互间需要互相访问时,这种方法就不太方便了。

有没有什么方法呢,可以让两个docker容器可以相互访问,而且不需要使用ip,直接使用容器名呢?

解决方法

那就是使用network。

处于同一个network下的容器,可以直接使用容器名相互访问。

步骤

  • 1). 创建network
docker network create <网络名>
  • 2). 启动容器并加入对应的network
docker run --net <网络名> --name <容器名> <镜像名>

这样就可以了。

不同docker compose中的service如何连接?

同样是network

docker-compose v3.5以后,可以很方便地为network命名,然后在不同compose中使用相同的network,可以将不同文件中的service连接到一起。

用法

```yaml # 定义 networks: share-network: name: "share-network01"

在service中指定

services: service1: image: networks: - share-network

<h2 id="">其他</h2>
<p>更多docker network命令,可以参考</p>
<blockquote>
<p><a href="https://docs.docker.com/engine/reference/commandline/network/">https://docs.docker.com/engine/reference/commandline/network/</a></p>
</blockquote>
<p><strong>查询已经存在的network</strong></p>
<pre><code>docker network ls
</code></pre>
<!--kg-card-end: markdown-->