使用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