一、镜像使用的部分介绍
- 创建一个简单的mysql容器
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
- 宿主机没有安装msql的情况下,可以通过docker命令连接mysql
- 通过容器连接远程mysql
docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p
- 通过命令行连接本地mysql容器(--network docker网络,同一网络下的容器可以通过容器名称通信)
docker run -it --network some-network --rm mysql mysql -hsome-mysql -uexample-user -p
- 进入容器内部
docker exec -it some-mysql bash
- 通过docker查看容器运行日志
docker logs some-mysql
- 使用自定义mysql配置文件
$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
- 环境变量
MYSQL_ROOT_PASSWORD
:root用户密码MYSQL_DATABASE
:在映像启动时创建的数据库的名称,如果创建了新用户,该用户将被授予这个数据库的超级用户访问权限MYSQL_USER,MYSQL_PASSWORD
:创建新用户并设置该用户的密码MYSQL_ALLOW_EMPTY_PASSWORD
:注意,这个一般不使用,如果值为yes将允许使用 root 用户的空白密码启动容器,太危险了⚠️MYSQL_RANDOM_ROOT_PASSWORD
:如果值为yes,将为root用户生成随机初始密码(使用pwgen)并打印到屏幕上MYSQL_ONETIME_PASSWORD
:一次性密码,首次登录要求修改密码
- 数据持久化,/my/own/datadir替换成你本地目录或者volume
docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
- 备份数据
docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
- 恢复数据
docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql
二、使用
- 创建数据卷
docker volume create mysql_data
:data用于数据持久化,一般配这个就够了docker volume create mysql_conf
:conf配置文件,如果需要使用自定义配置文件的话
- 创建mysql容器:
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=YourPassWord -v mysql_data:/var/lib/mysql -v mysql_conf:/etc/mysql/conf.d mysql:latest
- 自动运行
- 创建时加上参数:--restart=always
- 在现有容器上加自动运行:
docker container update --restart=always mysql