先附上配置

version: '3.5'
services:
  hadoop1:
    image: hadoop:1.3
    container_name: hadoop1
    command: bash -c "/usr/sbin/sshd && /bin/bash"
    tty: true
    networks:
      mynetwork:
      	# 宿主机会自动配置网关IP:172.20.1.1
        ipv4_address: 172.20.1.2

networks:
  mynetwork:
  	driver: bridge
    ipam:
      # 这里不用配置driver
      # driver: default
      config:
        - subnet: "172.20.1.0/24"

配置这个文件碰到了以下的问题

ERROR: Pool overlaps with other one on this address space

这个说明你设置的网段被占用了,修改
- subnet的设置,可以通过ifconfig查看已经存在的网段。如果网络这一块不太懂,直接把172.17.x.x更改为172.20.x.x,20不行就换成21等等。


ERROR: The Compose file './docker-compose.yml' is invalid because:
networks.extnetwork.ipam.config value Additional properties are not allowed ('gateway' was unexpected)

这个通常是网上老版本的设置方法(version 3以下的),3以上的版本就不需要设置gateway(网关),删除即可。
宿主机会自动配置网关IP


user specified IP address is supported only when connecting to networks with user configured subnets
ERROR: Encountered errors while bringing up the project.

这个是常见错误,如果盲目根据网上大多数的方法,一般都是给自定义网段取名为extnetwork,换个名字就好了mynetwork,其实是因为这个网段已经创建了,然后你又给他重新指定一个,似乎不能覆盖。
或者可以通过docker network ls指令查看当前存在网段,可以看了一个叫docker_extnetwork的网段,直接docker network rm 网段id,删除即可。

最后附上网络模式(bridge、host、none)都有什么区别
转载
https://blog.csdn.net/weixin_30335575/article/details/97148368

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐