去评论
海欣资源

docker docker-compose 如何自定义网络及固定IP

docker
2022/06/01 00:56:42
1、环境介绍
注:以下全文中通用的名称,自建网络名称:test-net,容器名称:test-nginx
1)docker版本
  1. [root@localhost ~]# docker -v
  2. Docker version 20.10.10, build b485636
2)docker-compose版本
  1. [root@localhost ~]# docker-compose -v
  2. docker-compose version 1.26.2, build eefe0d31
3)docker network 指令
  1. connect     容器连接到网络
  2. create      创建新的网络
  3. disconnect  容器脱离网络
  4. inspect     查看详细信息
  5. ls          网络列表
  6. prune       删除所有未使用的网络
  7. rm          删除指定网络
2、地址池创建
1)自定义默认地址池bridge
修改daemon.json文件

  1. [root@localhost ~]# cat > /etc/docker/daemon.json  << EOF
  2. {
  3.   "debug": true,
  4.   "default-address-pools": [
  5.     {
  6.       "base": "172.17.0.0/16",
  7.       "size": 24
  8.     }
  9.   ],
  10.   "registry-mirrors": ["http://hub-mirror.c.163.com"]
  11. }
  12. EOF

  13. [root@localhost ~]# systemctl daemon-reload
  14. [root@localhost ~]# systemctl restart docker
2)创建自定义地址池
①手工创建地址池

  1. [root@localhost ~]# docker network create -d bridge --subnet 172.16.0.0/16 --gateway 172.16.0.1 test-net
②通过docker-compose.yml文件创建(后文有描述)
3、手工分配地址

注:手工指定IP只能使用自定义的网络,默认bridge地址池是不能指定的
1)通过指令分配
①获取nginx镜像

  1. [root@localhost ~]# docker pull nginx
②创建容器,连接到自定义网络并指定IP,
  1. [root@localhost ~]# docker run -d --name test-nginx nginx
  2. [root@localhost ~]# docker network connect test-net test-nginx --ip 172.16.1.8
③修改自定义网络中的容器IP
  1. [root@localhost ~]# docker network disconnect test-net test-nginx
  2. [root@localhost ~]# docker network connect test-net test-nginx --ip 172.16.1.12
④创建容器时直接加入自定义网络
  1. [root@localhost ~]# docker run -d --name test-nginx --network test-net --ip 172.16.1.8 nginx
2)通过docker-compose分配
注:这个版本的docker-compose不支持写网关地址
①修改配置文件,加入networks部分

  1. [root@localhost ~]# vim docker-compose.yml
  2. version: "2"
  3. networks:
  4.   test-net:
  5.     ipam:
  6.       config:
  7.       - subnet: 172.16.1.0/24
  8. services:
  9.   nginx:
  10.     image: nginx:latest
  11.     networks:
  12.       test-net:
  13.         ipv4_address: 172.16.1.2
②启动/删除容器
  1. [root@localhost ~]# docker-compose up -d
  2. [root@localhost ~]# docker-compose down