Docker数据卷部署数据库

例部署mysql数据库

1
2
3
4
5
6
docker run -p 3306:3306 --name Mymysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.22

-e 是直接设置mysql的环境变量。这里是设置mysql初始密码是123456

这时可能会出现一下错误

1
WARNING: IPv4 forwarding is disabled. Networking will not work.

解决方法

1
2
3
4
5
6
7
8
9
10
11
12
13
# vi /etc/sysctl.conf
或者
# vi /usr/lib/sysctl.d/00-system.conf
添加如下代码:
net.ipv4.ip_forward=1

重启network服务
# systemctl restart network

查看是否修改成功
# sysctl net.ipv4.ip_forward

如果返回为“net.ipv4.ip_forward = 1”则表示成功了

修改mysql初始时可接受数据大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//启动一个mysql容器 
docker run -p 3306:3306 --name Mymysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.22

//进入宿主机docker文件夹下
cd /usr/local/docker/mysql/conf

//拷贝容器文件
docker cp Mymysql:/etc/mysql .

//进入拷贝后的文件.复制问及那。修改配置文件
cd ./mysql/
mv *.* ..
rm -rf ./mysql

cd ./mysql.conf.d
//"max_allowed_packet = 128M" 是在conf.d/mysqldump.cnf 文件下,复制即可
echo "max_allowed_packet = 128M" >> mysqld.cnf

关闭容器

1
docker rm  -f Mymysql

使用上面的数据卷命令重新启动一个新的数据库容器

1
2
3
4
5
6
docker run -p 3306:3306 --name Mymysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.22