Docker离线部署Mysql8.0
说明:
在有网络的环境上制作Mysql8.0的镜像包,导出并上传至无网络的环境上,启动mysql即可
1.搜索Mysql镜像包
docker search mysql
2.拉取Mysql8.0镜像
说明:
如果:后不写版本号,则默认拉取最新的
docker pull mysql:8.0
查看镜像
docker images
3.创建数据目录和配置文件
3.1在宿主机创建mysql的配置文件的目录
mkdir -p /usr/local/mysql_docker/conf
3.2在配置文件目录下创建MySQL的配置文件my.cnf
touch /usr/local/mysql_docker/conf/my.cnf
3.3编辑配置文件信息
cd /usr/local/mysql_docker/conf/
vim my.cnf
[client] # socket = /usr/local/mysql_docker/mysqld.sock default-character-set = utf8mb4 [mysqld] # pid-file = /var/run/mysqld/mysqld.pid # socket = /var/run/mysqld/mysqld.sock # datadir = /var/lib/mysql # socket = /usr/local/mysql_docker/mysqld.sock # pid-file = /usr/local/mysql_docker/mysqld.pid datadir = /usr/local/mysql_docker/data character_set_server = utf8mb4 collation_server = utf8mb4_bin secure-file-priv= NULL # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Custom config should go here !includedir /etc/mysql/conf.d/
3.4在宿主机创建mysql的数据目录
mkdir -p /usr/local/mysql_docker/data
4.创建容器并启动MySQL
docker run -d -p 13306:3306 --name mysql_docker -v /usr/local/mysql_docker/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql_docker/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123123 mysql:8.0
说明:
-d: 后台运行容器
-p :指定容器暴露的端口,映射宿主机端口号和容器端口号
--name:指定容器名字,后续可以通过名字进行容器管理
-v:挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录
-e :环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码
5.进入容器内部,解决远程连接问题
docker exec -it mysql_docker /bin/bash
5.1 连接Mysql
mysql -uroot -p
5.2 修改访问主机以及密码,设置所有主机可访问
use mysql alter user 'root'@'%' identified with mysql_native_password by '123123';
5.3 刷新权限
flush privileges;
5.4 退出
exit
6.测试远程是否能连接成功
如下图所示:成功
7.导出镜像
docker save -o mysql8.tar mysql:8.0
8.将镜像包mysql8.tar上传至无网络的环境上,执行
docker load -i mysql8.tar
查看镜像是否导入进来
docker images
9.直接启动Mysql
docker run -d -p 13306:3306 --name mysql_docker -v /usr/local/mysql_docker/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql_docker/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123123 mysql:8.0
这样就使用docker成功离线安装了MySQL