在docker中,重启后ip是会变的;docker默认采用bridge连接,启动容器的时候会按照顺序来获取对应ip地址,这就导致容器每次重启后ip都会发生变化。

第一次用docker容器,创建了两个容器,做好mysql的主从配置了,重启docker容器之后,发现容器的ip地址变了,这就尴尬了,首先了解到了docker默认采用”bridge”连接,启动容器的时候会按照顺序来获取ip。这就导致启动时候ip不固定的问题,

默认情况下启动、创建容器都是用该模式,所以每次docker容器重启时会按照顺序获取对应ip地址,这就导致容器每次重启,ip都发生变化

下面创建自定义网络来解决这个IP不固定的问题,

  1. 创建自定义网络,指定网段172.17.0.0/16
    1644202440630477.png

  2. 创建容器

    docker run -itd --name mysql-master-172.19.0.103 --net bindIpNetwork --ip 172.19.0.103 centos:latest /usr/sbin/init

    1644202448175195.png

    注意:这里创建的时候复制的命令,原本计划是103上是mysql的slave,所以我通过rename改下名字,命令为: docker rename mysql-master-172.19.0.103 mysql-slave-172.19.0.103

  3. 查看两个容器IP:
    1644202462384541.png
    重启之后查看
    1644202468925634.png

Vagrant使用docker创建容器

docker run -d --privileged=true -u 0:0 --restart=always --name='www'  --net='br0' --ip=172.172.0.3 -e TZ="Asia/Shanghai" -p 80:80/tcp -p 443:443/tcp -e 'PUID'='0' -e 'PGID'='0' -v '/mnt/disk0/www':'/app':'rw' -v '/mnt/disk0/nginxphp/nginx.conf':'/etc/nginx/nginx.conf' -v '/mnt/disk0/nginxphp/vhost.conf':'/opt/docker/etc/nginx/vhost.conf' -v '/mnt/disk0/nginxphp/php.webdevops.ini':'/opt/docker/etc/php/php.webdevops.ini' 'nginx-php5.6'
docker run -d --restart=always --name='mariadb' --net='br0' --ip=172.172.0.2 -e TZ="Asia/Shanghai" -e 'PUID'='99' -e 'PGID'='100' -e 'MYSQL_ROOT_PASSWORD'='123456' -p '3306:3306/tcp' -v '/mnt/appdata/mariadb':'/config':'rw' 'lscr.io/linuxserver/mariadb'