前言:由于Docker部署容器时,没有指定IP,当机器重启后,容器的IP会变化,所以在创建容器的时候,最好能固定IP;同时,在Ubuntu系统中,每次执行命令,都需要root权限,命令需要加sudo标识,可以设置为免sudo执行docker命令。
1. 创建自定义网络,可以在创建容器的时候,使用该网络固定ip
-
输入命令:sudo docker network create --subnet=172.18.0.0/16 mynetwork
-
三台虚拟机分别创建:
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
-
重启服务:
sudo service docker restart
group或者重启X会话
newgrp - docker或者pkill X
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
参数说明:
--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当成一个目录来映射,就会报错:
-
使用数据库客户端连接工具,连接Mysql数据库测试:
由此可见,mysql数据库容器创建成功,可以提供服务
-
Docker查看容器ip
docker inspect 容器ID | grep IPAddress
docker inspect --format=' {{.NetworkSettings.IPAddress}}' mysql01