我尝试在docker-compose.vs.debug.yml文件中创建网络:
networks:
myNetwork:
driver: bridge
但是docker添加了一些标识符:
docker network ls - >
NETWORK ID NAME DRIVER SCOPE
0e1fec1a9a30 dockercompose1163770330_myNetwork bridge local
如果有任何选项可以这样命名:
NETWORK ID NAME DRIVER SCOPE
0e1fec1a9a30 myNetwork bridge local
我需要它在不同的项目上自动连接两个容器。
如果你有docker-compose创建网络,它将确定名称本身。通常,它会查看docker-compose.yml所在目录的名称,并将其用作前缀。根据您显示的名称,此docker-compose.yml文件似乎位于名为的目录中 dockercompose1163770330
。它结合了这个 myNetwork
您指定的名称,并创建一个名为的网络 dockercompose1163770330_myNetwork
。
如果要控制网络的确切名称,则有两种选择。
- 使用在docker-compose之外创建的网络(“外部”网络)。
networks:
default:
external:
name: myNetwork
这意味着其他人已经创建了网络。如果您还没有这样的网络,那么创建它很容易。
docker network create myNetwork
- (如果可能的话)确定visual-studio如何命名路径,并将该路径更改为静态路径。无论这是可能的,还是如何,我都不知道。但是,如果你能控制
dockercompose1163770330
并根据您的喜好制作不同的东西,然后您可以预测从中创建的网络名称。
如果你有docker-compose创建网络,它将确定名称本身。通常,它会查看docker-compose.yml所在目录的名称,并将其用作前缀。根据您显示的名称,此docker-compose.yml文件似乎位于名为的目录中 dockercompose1163770330
。它结合了这个 myNetwork
您指定的名称,并创建一个名为的网络 dockercompose1163770330_myNetwork
。
如果要控制网络的确切名称,则有两种选择。
- 使用在docker-compose之外创建的网络(“外部”网络)。
networks:
default:
external:
name: myNetwork
这意味着其他人已经创建了网络。如果您还没有这样的网络,那么创建它很容易。
docker network create myNetwork
- (如果可能的话)确定visual-studio如何命名路径,并将该路径更改为静态路径。无论这是可能的,还是如何,我都不知道。但是,如果你能控制
dockercompose1163770330
并根据您的喜好制作不同的东西,然后您可以预测从中创建的网络名称。
我假设你使用VS2017 dcproj。我通过在dcproj项目中手动创建网络作为PreBuildEvent解决了这个问题。将预构建目标添加到.dcproj文件:
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
<Exec Command="echo Creating external docker network" />
<Exec Command="docker network create customnetwork" IgnoreExitCode="true" />
</Target>
然后在您的docker-compose文件中,您可以指定外部网络:
networks:
default:
external:
name: customnetwork
要求您在其他项目之前启动dcproj,或者将相同的prebuild exec添加到应该共享网络的所有项目中。