在主机中,我使用以下命令创建了docker网络:
docker network create -d macvlan \
--subnet=192.168.2.0/24 \
--gateway=192.168.2.1 \
-o parent=eth0 pub_net
docker网络如下所示:
[root@192-168-2-70 shell]# docker network ls
NETWORK ID NAME DRIVER SCOPE
935ae8b52eb2 bridge bridge local
81577f72f606 host host local
846d54a2c7da none null local
158428b19c4d pub_net macvlan local
[root@192-168-2-70 shell]#
具有指定IP的docker容器可以通过以下命令启动:
docker运行--net = pub_net --ip = 192.168.2.10 --name hadoop0 --hostname hadoop0 -d -P hadoop-cluster-hadoop0:v1.1
但是当我将上述命令转换为docker-compose文件时,如下所示:
version: '3'
services:
hadoop-cluster-hadoop0:
container_name: hadoop0
restart: always
networks:
pub_net:
ipv4_address: 192.168.2.10
volumes:
- /tmp/hadoop0/logs:/tmp
extra_hosts:
- "hadoop0:192.168.1.10"
- "hadoop1:192.168.1.11"
- "hadoop2:192.168.1.12"
- "dbus-n1:192.168.2.81"
image: 'hadoop-cluster-hadoop0:v1.1'
networks:
put_net:
external: true
发生以下错误。
[root@192-168-2-70 shell]# docker-compose up -d
WARNING: Some networks were defined but are not used by any service: put_net
ERROR: Service "hadoop-cluster-hadoop0" uses an undefined network "pub_net"
[root@192-168-2-70 shell]#
有人可以帮我纠正docker-compose文件吗?如何在docker-compose文件中创建docker网络,而不是事先创建?
非常感谢您的帮助!!!
仔细观察,您为网络命名,put_net
但pub_net
在服务定义中引用了它。
此外,当您定义网络时,external
这意味着它应该已经创建。如果您想让docker-compose为您做到这一点,可以改为这样做。
networks:
put_net:
driver: bridge
ipam:
driver: default
config:
-
subnet: 192.168.2.0/24
如果您想完全重新创建问题中指定的网络,则必须将版本从“ 3”降级为“ 2”;这是因为在版本'3'中删除了某些功能,并且这些选项之一是指定的能力gateway
(至少据我所知)。
这是您的docker-compose文件的外观。(注意将版本从“ 3”更改为“ 2”)
version: '2'
services:
hadoop-cluster-hadoop0:
container_name: hadoop0
restart: always
networks:
put_net:
ipv4_address: 192.168.2.10
volumes:
- /tmp/hadoop0/logs:/tmp
extra_hosts:
- "hadoop0:192.168.1.10"
- "hadoop1:192.168.1.11"
- "hadoop2:192.168.1.12"
- "dbus-n1:192.168.2.81"
image: 'hadoop-cluster-hadoop0:v1.1'
networks:
put_net:
driver: macvlan
driver_opts:
parent: eth0
ipam:
config:
-
subnet: 192.168.2.0/24
gateway: 192.168.2.1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句