docker数据库
一. 拉取镜像
# docker pull mysql:5.6.35
创建docker数据库容器
创建数据库容器启动所需要的目录
# mkdir -p /app/docker_web/mysql_data/zmn/{data,conf}
# cat /app/docker_web/mysql_data/conf/my.cnf //代码有需要可以,再优化
[mysqld] user=mysql port=3306 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock pid-file=/var/run/mysql/mysql.pid log_error=/var/log/mysql/error.log character_set_server = utf8 server-id = 1 log-bin=/var/lib/mysql/mysql-bin max_connections=3600
启动容器
# docker run -d --name zmn -m 4096m -p 3340:3306 -v /app/docker_web/mysql_data/zmn/conf/:/etc/mysql/conf.d -v /app/docker_web/mysql_data/zmn/data/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin mysql:5.6.35
//此命令是映射3306(容器)--->3340(宿主机)
注:MYSQL_ROOT_PASSWORD 这个是区分大小写的,后面是初始密码,进入数据库后,最好修改
直接以client 端登陆mysql
# yum install -y mysql # mysql -h172.17.0.3 -uroot -padmin 注:这里默认是连接docker mysql容器的3306端口
或
# mysql -h $IP -uroot -P 3340 -padmin 注:这里的IP 为 宿主机IP
二. 创建数据卷
1. 在运行容器之前,先使用docker volume create 创建一个数据卷,用于挂载映射mysql容器数据文件:
# docker volume create mysql_data
2. 用docker volume inspect 命令看下刚创建的mysql_data 数据卷的详细信息:
# docker volume inspect mysql_data
[
{
"CreatedAt": "2018-02-12T09:14:45+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/mysql_data/_data",
"Name": "mysql_data",
"Options": {},
"Scope": "local"
}
]
大家注意到这一行"Mountpoint": "/var/lib/docker/volumes/mysql_data/_data" 这是数据卷mysql_data 在宿主机上的目录路径,没有容器进行挂载,默认里面是空的
三. 利用数据卷运行mysql 容器
mysql版本选用较为流行的5.x 系列, 使用docker run 运行mysql容器:
# docker run -d --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -v mysql_data:/var/lib/mysql mysql:5.7
注意上面命令中的 -v mysql_data:/var/lib/mysql ,它会将前面我们创建好的数据卷mysql_data 挂载到mysql容器内部的/var/lib/mysql 目录
先检查下刚创建的mysql容器正常与否,使用docker exec 命令连到mysql服务器:
# docker exec -it mysql5.7 mysql -uroot -p
四. 扩展
创建mysql8.0.20数据库服务
1. 配置文件
# mkdir -p /app/docker_web/mysql_data/pd/{conf,data}
# cat > /app/docker_web/mysql_data/pd/conf/my.cnf << EOF
[clinet]
default-character-set=utf8
[mysqld]
character-set-server=utf8
# 修改默认的密码字符串插件
default-authentication-plugin=mysql_native_password
user=mysql
port=3306
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
pid-file=/var/run/mysqld/mysqld.pid
log_error=/var/lib/mysql/error.log
server-id = 1
log-bin=/var/lib/mysql/mysql-bin
max_connections=3600
secure-file-priv= NULL
symbolic-links=0
#!includedir /etc/mysql/conf.d/
EOF
2. 运行容器
docker run -d --name pdjy-db -m 4096m \ -p 4340:3306 \ -v /etc/localtime:/etc/localtime \
-v /etc/timezone:/etc/timezone \ -v /app/docker_web/mysql_data/pd/conf:/etc/mysql \ -v /app/docker_web/mysql_data/pd/data/:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=admin \ docker.io/mysql
欢迎来访! yangsir!!

浙公网安备 33010602011771号