#docker 如何从容器A直接访问容器B
问题背景
测试环境中,我们经常不使用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连接到一起。
用法
# 定义
networks:
share-network:
name: "share-network01"
# 在service中指定
services:
service1:
image: <image>
networks:
- share-network
其他
更多docker network命令,可以参考
https://docs.docker.com/engine/reference/commandline/network/
查询已经存在的network
docker network ls