前言:由于Docker部署容器时,没有指定IP,当机器重启后,容器的IP会变化,所以在创建容器的时候,最好能固定IP;同时,在Ubuntu系统中,每次执行命令,都需要root权限,命令需要加sudo标识,可以设置为免sudo执行docker命令。

1. 创建自定义网络,可以在创建容器的时候,使用该网络固定ip

  • 输入命令:sudo docker network create --subnet=172.18.0.0/16 mynetwork

    Docker部署Mysql实践

  • 三台虚拟机分别创建:

    Ubuntu-1:sudo docker network create --subnet=172.19.0.0/16 mynetwork
    Ubuntu-2:sudo docker network create --subnet=172.20.0.0/16 mynetwork

2. 免sudo使用docker命令

  • 如果还没有 docker group 就添加一个:

    $ sudo groupadd docker

  • 将用户加入该 group 内。然后退出并重新登录就生效啦

    参考命令:$ sudo gpasswd -a ${USER} docker
    $ sudo gpasswd -a xujk docker
    Docker部署Mysql实践

  • 重启服务:

    sudo service docker restart
    group或者重启X会话
    newgrp - docker或者pkill X
    Docker部署Mysql实践

3. 创建mysql容器+挂载(主机ip: 192.168.231.132)

  • 拉取Mysql镜像:

    docker pull mysql:5.7.24

  • 输入命令构建Mysql容器:

    sudo docker run -d --restart=always --privileged=true --name mysql01 --net mynetwork --ip 172.18.0.2 -v /home/xujk/Work/Docker/Mysql/mysql01/conf/:/etc/mysql/ -v /home/xujk/Work/Docker/Mysql/mysql01/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.24
    Docker部署Mysql实践

    参数说明:

    --restart=always: 当Docker 重启时,容器会自动启动。
    --privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
    -v /opt/mysql/conf.d/my.cnf:/etc/my.cnf:映射配置文件
    -v /opt/mysql/data/:/var/lib/mysql:映射数据目录
    --net mynetwork --ip 172.18.0.2:指定使用网络名,及固定ip地址

    注意:如果要挂载配置文件的话,必须要先创建文件(my.cnf),然后映射到本地目录,如果不这样操作的话,他会把my.cnf当成一个目录来映射,就会报错:

    Docker部署Mysql实践

  • 使用数据库客户端连接工具,连接Mysql数据库测试:

    Docker部署Mysql实践

    由此可见,mysql数据库容器创建成功,可以提供服务
  • Docker查看容器ip
    docker inspect 容器ID | grep IPAddress
    docker inspect --format=' {{.NetworkSettings.IPAddress}}' mysql01