安装mysql镜像
准备
# 下载mysql镜像
docker pull mysql:5.6
# 在宿主机创建目录
mkdir /opt/docker-software/mysql
mysql配置文件设置
在/opt/docker-software/mysql目录创建my.cnf,主要填写mysql的关键配置,填写以下内容:
[mysqld]
user=mysql
default-storage-engine=INNODB
character_set_server = utf8
init_connect='SET NAMES utf8'
max_connections = 1000
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
max_allowed_packet=64M
[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/lib/mysql/mysqld.pid
镜像启动一个容器
#启动第一个mysql,映射端口为3306
docker run -p 3306:3306 --name mysql-3306 --restart=always \
-v /opt/docker-software/mysql/my.cnf:/etc/mysql/my.cnf \
-v /opt/docker-software/mysql/3306/data/:/var/lib/mysql \
-v /opt/docker-software/mysql/3306/log/:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.6
#启动第二个mysql,映射端口为3307
docker run -p 3307:3306 --name mysql-3307 --restart=always \
-v /opt/docker-software/mysql/my.cnf:/etc/mysql/my.cnf \
-v /opt/docker-software/mysql/3307/data/:/var/lib/mysql \
-v /opt/docker-software/mysql/3307/log/:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.6
命令解释:
- -p是将容器的3306端口映射到宿主机的3306|3307端口上
- -v是将容器的目录或者文件映射到宿主机器上
- mysql镜像启动时默认加载的是/etc/mysql/my.cnf,所以我们将/etc/mysql/my.cnf映射到了宿主机的/opt/docker-software/mysql/my.cnf,保证mysql启动时加载的是我们自己配置的my.cnf
- 在my.cnf中我们配置的数据文件的目录是/var/lib/mysql,所以我们将此目录映射到宿主机的/opt/docker-software/mysql/3306/data/和/opt/docker-software/mysql/3307/data/。这将保证mysql的数据文件存储在宿主机指定的目录中,防止容器停止重启时丢失。
- MYSQL_ROOT_PASSWORD为初始化mysql root用户的密码
测试
使用mysql工具分别连接3306和3307测试mysql的是否能够使用
参考资料
docker官方安装mysql镜像的参考地址: https://hub.docker.com/_/mysql/
网友评论