docker docker-compose 自定义网络 固定IP

  • Post author:
  • Post category:其他




1、环境介绍


注:以下全文中通用的名称,自建网络名称:test-net,容器名称:test-nginx



1)docker版本

[root@localhost ~]# docker -v
Docker version 20.10.10, build b485636



2)docker-compose版本

[root@localhost ~]# docker-compose -v
docker-compose version 1.26.2, build eefe0d31



3)docker network 指令

connect     容器连接到网络
create      创建新的网络
disconnect  容器脱离网络
inspect     查看详细信息
ls          网络列表
prune       删除所有未使用的网络
rm          删除指定网络



2、地址池创建



1)自定义默认地址池bridge

修改daemon.json文件

[root@localhost ~]# cat > /etc/docker/daemon.json  << EOF
{
  "debug": true,
  "default-address-pools": [
    {
      "base": "172.17.0.0/16",
      "size": 24
    }
  ],
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker



2)创建自定义地址池

①手工创建地址池

[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镜像

[root@localhost ~]# docker pull nginx

②创建容器,连接到自定义网络并指定IP,

[root@localhost ~]# docker run -d --name test-nginx nginx
[root@localhost ~]# docker network connect test-net test-nginx --ip 172.16.1.8

③修改自定义网络中的容器IP

[root@localhost ~]# docker network disconnect test-net test-nginx
[root@localhost ~]# docker network connect test-net test-nginx --ip 172.16.1.12

④创建容器时直接加入自定义网络

[root@localhost ~]# docker run -d --name test-nginx --network test-net --ip 172.16.1.8 nginx



2)通过docker-compose分配


注:这个版本的docker-compose不支持写网关地址


①修改配置文件,加入networks部分

[root@localhost ~]# vim docker-compose.yml
version: "2"
networks:
  test-net:
    ipam:
      config:
      - subnet: 172.16.1.0/24
services:
  nginx:
    image: nginx:latest
    networks:
      test-net:
        ipv4_address: 172.16.1.2

②启动/删除容器

[root@localhost ~]# docker-compose up -d
[root@localhost ~]# docker-compose down



版权声明:本文为weixin_48215755原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。