前言:由於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