使用docker run连接到docker compose网络
假设我使用使用docker run连接到docker compose网络,docker,docker-compose,Docker,Docker Compose,假设我使用docker compose和docker compose.yml运行编排,如下所示: version: '2.2' services: service1: # ... networks: - compose_network service2: # ... networks: - compose_network networks: compose_network: 我的目标是运行一个容器并将其临时连接到com
docker compose
和docker compose.yml
运行编排,如下所示:
version: '2.2'
services:
service1:
# ...
networks:
- compose_network
service2:
# ...
networks:
- compose_network
networks:
compose_network:
我的目标是运行一个容器并将其临时连接到compose\u network\u 1
。我试着用
$ docker run --net=compose_network <image for the job>
$docker run--net=compose\u网络
但我无法连接。我还知道docker将网络命名为[projectname]\u default
,因此我也尝试了该变体,但结果相同
有什么方法可以做到这一点吗?网络名称类似于
name-of-directory\u-compose\u-network
。使用docker network ls查找名称
我在以下方面取得了成功:
docker在目录中编写#。/demo
docker run-itd-p“8000:8000”--hostname=hello“crccheck/hello world”
#输出:1e502f65070c9e2da7615c5175d5fc00c49ebdcb18962ea83a0b24ee0440da2b
docker网络连接--别名hello demo_compose_网络1e502f65070c
然后,我可以从docker compose容器中
curl hello:8000
。应该与您的命令功能完全相同,只是添加了一个别名。我不确定--net
选项是否曾经存在,但现在它是--network
从docker run--help
:
--network string Connect a container to a network (default "default")
正如@maxm所指出的,您可以找到网络名称,其前缀为compose项目目录的DIR,然后只需在尝试时运行它:
$ docker run --network=DIR_compose_network <image for the job>
这会将新的docker容器连接到现有的docker compose网络
docker network ls
NETWORK ID NAME DRIVER SCOPE
2c660d9ed0ba bridge bridge local
b81db348e773 dev_default bridge local
ecb0eb6e93a5 host host local
docker run -it --network dev_default myimage