docker docker-compose 如何自定义网络及固定IP
1、环境介绍
注:以下全文中通用的名称,自建网络名称:test-net,容器名称:test-nginx
1)docker版本
2)docker-compose版本
3)docker network 指令
2、地址池创建
1)自定义默认地址池bridge
修改daemon.json文件
2)创建自定义地址池
①手工创建地址池
②通过docker-compose.yml文件创建(后文有描述)
3、手工分配地址
注:手工指定IP只能使用自定义的网络,默认bridge地址池是不能指定的
1)通过指令分配
①获取nginx镜像
②创建容器,连接到自定义网络并指定IP,
③修改自定义网络中的容器IP
④创建容器时直接加入自定义网络
2)通过docker-compose分配
注:这个版本的docker-compose不支持写网关地址
①修改配置文件,加入networks部分
②启动/删除容器
注:以下全文中通用的名称,自建网络名称:test-net,容器名称:test-nginx
1)docker版本
- [root@localhost ~]# docker -v
- Docker version 20.10.10, build b485636
- [root@localhost ~]# docker-compose -v
- docker-compose version 1.26.2, build eefe0d31
- connect 容器连接到网络
- create 创建新的网络
- disconnect 容器脱离网络
- inspect 查看详细信息
- ls 网络列表
- prune 删除所有未使用的网络
- rm 删除指定网络
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
①手工创建地址池
- [root@localhost ~]# docker network create -d bridge --subnet 172.16.0.0/16 --gateway 172.16.0.1 test-net
3、手工分配地址
注:手工指定IP只能使用自定义的网络,默认bridge地址池是不能指定的
1)通过指令分配
①获取nginx镜像
- [root@localhost ~]# docker pull nginx
- [root@localhost ~]# docker run -d --name test-nginx nginx
- [root@localhost ~]# docker network connect test-net test-nginx --ip 172.16.1.8
- [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
注:这个版本的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