使用docker容器運行MySQL數據庫並持久化數據文件
1、下載mysql鏡像
# docker pull mysql
2、啟動mysql容器
# docker run -itd -v /data:/var/lib/mysql -p 33060:3306 --name mysqldb mysql bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
25d047a99917c6420412f36e1d0e2e6af38fc86539b2184d1ea7e5a47b955011
3、這裏我們發現啟動mysql容器出現warning,排除警告方式如下:
# vi /etc/sysctl.conf
添加:net.ipv4.ip_forward = 1
生效配置:
# sysctl -p
vm.max_map_count = 262144
net.ipv4.ip_forward = 1
重啟網路服務:
# service network restart
Restarting network (via systemctl): [ OK ]
再次啟動mysql容器,發現警告消失:
# docker run -itd -v /data:/var/lib/mysql -p 33060:3306 --name mysqldb mysql bash
bbde59a2921981218441851d7527d22be3a0e37d3164fd1e07c4653d5dccc94d
註意:從上面啟動mysql容器命令中使用了-v、-p參數,具體意義解釋如下:
-v:為啟動的容器掛在volume,mysql數據庫默認數據目錄是容器中的/var/lib/mysql目錄,該目錄是容器自帶的一個volume,如果不為mysql容器單獨配置數據目錄volume,那麽我們會發現重啟mysql容器後mysql數據庫中數據都丟失了。為了持久化mysql數據,我們在啟動mysql容器時添加了-v /data:/var/lib/mysql參數,把主機的/data目錄掛載到容器的/var/lib/mysql下。
-p:指定mysql容器到本機的端口映射,將容器3306端口映射到主機的33060端口,這樣設置後,我們就可以在局域網訪問mysql數據庫了。
4、進入mysql容器,啟動mysql服務:
# docker exec -it mysqldb bash
root@ff3a4e6288c1:/# service mysql status
[info] MySQL Community Server 5.7.21 is not running.
root@ff3a4e6288c1:/# service mysql start
No directory, logging in with HOME=/
..
[info] MySQL Community Server 5.7.21 is started.
5、登錄mysql數據庫,進行基本配置:
root@ff3a4e6288c1:/# mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.21 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| chavin |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> grant all privileges on *.* to root@‘%‘ identified by ‘mysql‘;
Query OK, 0 rows affected, 1 warning (0.00 sec)
此時,可以在局域網內訪問docker容器啟動的mysql數據庫了。
# mysql -uroot -pmysql -h192.168.177.129 -P33060
使用docker容器運行MySQL數據庫並持久化數據文件