Nix*_*ill 7 docker docker-compose
让说我已经运行的业务流程与docker-compose
使用docker-compose.yml
看起来像这样:
version: '2.2'
services:
service1:
# ...
networks:
- compose_network
service2:
# ...
networks:
- compose_network
networks:
compose_network:
Run Code Online (Sandbox Code Playgroud)
我的目标是运行一个容器并将其临时连接到compose_network_1
。我尝试使用
$ docker run --net=compose_network <image for the job>
Run Code Online (Sandbox Code Playgroud)
但我无法连接。我也知道docker-compose将网络命名为[projectname]_default
,因此我也尝试了该变体,但结果相同。
我有办法做到吗?
网络名称将类似于name-of-directory_compose_network
. 查找名称docker network ls
我在以下方面取得了成功:
docker-compose up # within directory ./demo
docker run -itd -p "8000:8000" --hostname=hello "crccheck/hello-world"
# outputs: 1e502f65070c9e2da7615c5175d5fc00c49ebdcb18962ea83a0b24ee0440da2b
docker network connect --alias hello demo_compose_network 1e502f65070c
Run Code Online (Sandbox Code Playgroud)
然后我可以curl hello:8000
从我的 docker 内部组合容器。应该与您的命令具有完全相同的功能,只是添加了一个别名。
我不确定该--net
选项是否曾经存在,但现在已经存在--network
。
来自docker run --help
:
--network string Connect a container to a network (default "default")
Run Code Online (Sandbox Code Playgroud)
如@maxm所示,您可以找到网络名称,该网络名称带有compose项目目录的DIR前缀,然后只需尝试运行即可:
$ docker run --network=DIR_compose_network <image for the job>
Run Code Online (Sandbox Code Playgroud)
我想在运行时进行连接,因为我的容器是瞬态的(正在运行测试),所以我不能docker network
在退出之前及时使用第二条命令。
例如,对于未指定网络名称的“ dev”文件夹中的docker组合,因此使用docker-compose“默认”名称,因此得到名称dev_default
。
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
Run Code Online (Sandbox Code Playgroud)
这会将新的docker容器连接到现有的docker-compose网络。
归档时间: |
|
查看次数: |
1884 次 |
最近记录: |