在过去的几天里,我一直在玩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创建没有容器的网络。
另外,我是不是走错了路?
本质上,我希望有一个网络,不管什么容器加入/离开它,它都可以继续存在。
我所有的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文件中...
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
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 目前,我在我的外壳中看到了这一点: 医生说我应该看到这样的东