当前位置: 首页 > 知识库问答 >
问题:

我可以使用Docker-Compose创建没有容器的网络吗

隆钊
2023-03-14

在过去的几天里,我一直在玩Docker-Compose,看看它是否会简化我的Docker容器和网络构建过程。

我对此非常满意,但是当我想创建一些尚未被任何“服务”使用的“网络”时,遇到了一个问题。

我想要这种行为的原因是让Docker编写文件来创建我的本地结构的“私有”网络和“公共”网络。我的每个项目都有一个单独的Docker,利用已经创建的“外部”网络。

我注意到我能够指定一个虚拟容器来初始化网络的创建,但这似乎没有必要。例如:

version: '2'
services:
  # Dummy Service
  dummy:
    image: busybox
    container_name: dummy
    hostname: dummy
    networks:
      private:

networks:
  # Private Network for all Services (across Projects)
  private:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet: 172.18.0.0/24
        gateway: 172.18.0.1

是否有我忽略的设置/标志,或者目前没有办法使用Docker-Compose创建没有容器的网络。

另外,我是不是走错了路?

本质上,我希望有一个网络,不管什么容器加入/离开它,它都可以继续存在。

共有3个答案

齐英韶
2023-03-14

我所有的docker图像和网络等…我喜欢使用docker compose运行的文件。因此,当我的思维过程在docker compose上时,我只是让docker编写网络文件,旋转一个hello world图像(很多人已经有了这个图像,否则它就像2kb),然后它立即退出粗糙的图像,但保留了网络。

version: '3.7'

services: 
    hello_world:
        image: hello-world:latest
        networks: 
            main_net:
                ipv4_address: 172.20.0.255
networks: 
    main_net:
        name: main_network
        ipam:
            config:
                - subnet: 172.20.0.0/16

通过这种方式,我规划了我的网络,并以最小的开销将其很好地布置在docker-compose文件中...

濮赤岩
2023-03-14

docker-compose-networks.yml

version: '3.7'

services:
    works:
        image: scratch
        restart: always
        container_name: net_works
        deploy:
            placement:
                constraints:
                    - "node.hostname==scratch"
        networks:
            - mynet1
            - mynet2

networks:
    mynet1:
        name: mynet1
        driver: overlay
        attachable: false
    mynet2:
        name: mynet2
        driver: overlay
        attachable: true
呼延俊风
2023-03-14

docker-compose内部会检查网络是否被使用,如果未使用,它会跳过创建网络:

$ cat docker-compose.net-only.yml
version: '2'

networks:
  test1:
  test2:

$ docker-compose -f docker-compose.net-only.yml --verbose up
.....
WARNING: compose.network.from_services: Some networks were defined but are not used by any service: test1, test2
.....

$ docker network ls | grep test

$

我建议用一个小的shell脚本来完成这个任务,调用< code>docker network create而不是尝试使用docker-compose来完成这个任务。

 类似资料:
  • Kubernetes有一个吊舱的概念,集装箱可以在它们之间共享港口。例如,在同一个pod中,一个容器可以通过访问另一个容器(监听端口80)。 但是,在docker-compose上,引用容器本身。 实际上,我有一个kubernetes配置,我希望在docker-compose配置中重用它,而不必修改图像。

  • 每当我尝试,我的容器都会以code退出。 我有以下: centos ansible中的Dockerfile:

  • 问题内容: 在Docker中使用自定义网络时 并尝试运行它,我得到了错误 错误:网络服务层已声明为外部,但找不到。请使用手动创建网络,然后重试。 是否可以使用docker-compose自动创建网络,还是除了首先手动创建网络外没有其他方法? 问题答案: 是使用现有网络。如果您想组成网络,只需执行以下操作: ..指示组成网络。它们将被命名为使用验证创建。 您还可以覆盖默认网络或指定更多属性。 ..将

  • 问题内容: 我的工作正常,但现在停止了。我尝试了以下命令,但无济于事: -在主机和容器上 我所得到的是。Docker版本0.7.0 有任何想法吗? PS也禁用 问题答案: 遵循以下建议进行修复: […]您可以尝试重设所有内容吗? 它将迫使docker重新创建网桥并重新初始化所有网络规则 https://github.com/dotcloud/docker/issues/866#issuecomme

  • 我让它正常工作,但现在它停止了。我尝试了以下命令,但没有用: -在主机和容器上 我得到的是未知主机google。com。Docker版本0.7.0 有什么想法吗? P、 S.ufw也被禁用

  • 我正在尝试使用docker-compose来设置气流实例,如官方文档中所述,我被困在气流初始化部分。看起来容器之间没有连接,但我不知道如何解决它。 我使用与文档中描述的相同的。可以在这里下载:https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml 目前,我在我的外壳中看到了这一点: 医生说我应该看到这样的东