Docker有三种网络模式:Brigde,host,none。Brigde是常用的网络模式,但是Docker0的默认IP是172.17.0.0/24这个网段开始,使用这个IP可能会和公司内网络冲突,造成网络故障。会造成没办法ssh到服务器。
因此使用docker首先要对网络自定义。
一、可以改变docker0的IP,方法:通过bip可以指定docker0,
如下:
[root@localhost ~]# vim /etc/docker/daemon.json
"registry-mirrors":["https://registry.docker-cn.com"],
"data-root":"/data/docker",
"bip":"100.10.0.1/24"
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
ac43d5d67a7b bridge bridge local
a94bec924c12 host host local
5f6ad59d300c jmnet bridge local
3a6b63c404c6 none null local
[root@localhost ~]# docker inspect ac43d5d67a7b | grep Subnet
"Subnet": "100.10.0.0/24",
[root@localhost ~]# docker inspect ac43d5d67a7b | grep Gateway
"Gateway": "100.10.0.1"
[root@localhost ~]# ifconfig
二、也可以创建一个自己的网络,后绪容器依靠创建的网络来启动容器。
[root@localhost docker]# docker network create jmnet --subnet 100.10.1.0/24 --gateway 100.10.1.1
[root@localhost docker]# docker network ls
NETWORK ID NAME DRIVER SCOPE
ba0ff675dfb0 bridge bridge local
f89d97fee01d host host local
c94ef4292ef6 jmnet bridge local
8fd770ed6a8c none null local
[root@localhost ~]# docker inspect jmnet | grep Subnet
"Subnet": "100.10.1.0/24",
[root@localhost ~]# docker inspect jmnet | grep Gateway
"Gateway": "100.10.1.1"
[root@localhost ~]#
三、使用docker-compose来启动容器,怎么固定IP呢
方法:
[root@localhost ~]# vim /docker-compose.yml
version: '3'
services:
app:
container_name: ""
image:
restart: always
ports:
- 9001:3000
volumes:
environment:
networks:
extnetwork:
ipv4_address: 100.10.10.2
networks:
extnetwork:
ipam:
config:
- subnet: 100.10.10.0/24
gateway: 100.10.10.1