1.拉取官方mysql镜像
docker search mysql
官方镜像版本分为 mysql:5.6 mysql:5.7 mysql:latest
我们使用5.7版本,下载镜像:
docker pull mysql:5.7
2.运行镜像
使用docker run运行镜像
docker run --name mysql -p 12345:3306 -e MYSQL_ROOT_PASSWORD=user_passwd -dit mysql:5.7
可以通过-e参数给容器增加环境变量的方式设置mysql root用户的密码,并将mysql容器的3306端口映射到本机的12345端口
3.官方mysql镜像支持的所有环境变量:
MySQL :: MySQL and Linux/Unix :: 2.7.2 More Topics on Deploying MySQL Server with Docker
4.使用docker-compose运行mysql
需求:将mysql数据文件和配置文件挂载到宿主机,既方便修改mysql配置,又可以将数据持久化存储
version: '3'
services:
mysql:
image: ae6b78bedf88
container_name: mysql
volumes:
- /docker_data/mysql:/var/lib/mysql
- /docker_data/mysql_conf/:/etc/mysql/
ports:
- 12345:3306
networks:
mysql_net:
ipv4_address: 192.168.18.18
environment:
- MYSQL_ROOT_PASSWORD=user_passwd
- MYSQL_ROOT_HOST=192.168.18.1
networks:
mysql_net:
driver: bridge
ipam:
driver: default
config:
-
subnet: 192.168.18.0/24
由于docker-compose的volumes参数是将本机的目录先映射到宿主机,所以你需要先拷贝一份容器内的相应文件夹到宿主机,然后映射到容器内,以后宿主机和容器修改的文件都是同一份。
8.0后版本的mysql增加了一些安全策略,如果my.cnf文件的权限不正确会导致无法被mysql加载。
mysql_conf 744
conf.d 744
mysql.conf.d 744
my.cnf 600
5.
关于运行mysql容器然后插入数据,再commit到新镜像结果数据不存在的问题: