前言
实验环境: ubuntu22.04server
镜像的导入与导出,请参考该文章
在线拉取镜像
当我们能直接连接外网时,镜像的拉取就变得非常简单:
|
|
离线导入镜像
当我们不能直接拉取镜像时,我们先要从一台能访问dockerhub的电脑上拉取,比如我的win11笔记本:
|
|
保存好镜像后上传到server上,然后load
:
|
|
运行mysql镜像
当我们准备好mysql的镜像后,我们就可以开始创建容器并运行了:
先来创建容器挂载的地方:
|
|
然后再conf文件夹下,创建一个my.cnf,内容如下
|
|
创建完成之后,就可以开始启动容器了:
|
|
参数 | 解释 |
---|---|
-d |
即 --detach 的缩写,让容器以守护进程模式在后台运行,不占用当前终端的输入输出,方便用户继续在终端执行其他操作 |
--name mysql |
为新创建的容器指定名称为 mysql ,便于后续对容器进行管理操作,如停止、重启、查看日志等,无需使用冗长的容器 ID |
-p 3306:3306 |
端口映射参数,将容器内部的 3306 端口映射到宿主机的 3306 端口,使外部客户端能通过宿主机的 IP 地址和 3306 端口连接到容器内的 MySQL 服务 |
--restart unless-stopped |
容器的重启策略,除非用户手动停止容器,否则在 Docker 服务重启、宿主机重启或容器因故障意外退出时,Docker 会自动尝试重新启动该容器,保证 MySQL 服务的高可用性 |
--privileged=true |
赋予容器可以修改宿主文件的权力 |
-v ~/mysqldata/mysql/log:/var/log/mysql |
数据卷挂载,把宿主机用户主目录下的 ~/mysqldata/mysql/log 目录挂载到容器内的 /var/log/mysql 目录,实现容器内 MySQL 日志文件在宿主机的持久化存储,方便查看和管理 |
-v ~/mysqldata/mysql/data:/var/lib/mysql |
数据卷挂载,将宿主机的 ~/mysqldata/mysql/data 目录挂载到容器内的 /var/lib/mysql 目录,/var/lib/mysql 是 MySQL 存储数据文件的位置,确保容器删除或重建时数据不丢失 |
-v ~/mysqldata/mysql/conf:/etc/mysql |
数据卷挂载,把宿主机的 ~/mysqldata/mysql/conf 目录挂载到容器内的 /etc/mysql 目录,/etc/mysql 是 MySQL 配置文件所在目录,可在宿主机修改配置且实时生效,无需重新构建镜像 |
-e MYSQL_ROOT_PASSWORD=123456 |
设置环境变量,指定 MySQL 的 root 用户密码为 123456 ,容器启动时 MySQL 服务会根据该值初始化 root 用户密码 |
mysql:8.4 |
指定要使用的 Docker 镜像为 MySQL 8.4 版本的官方镜像,若本地没有,Docker 会尝试从 Docker Hub 拉取 |
创建好mysql容器后,我们查看当前容器情况:
|
|
连接mysql
我们可以在自己的电脑上,来连接mysql,测试一下连通性,这里我用workbench来连接:
经验证可以正常使用。
参考
目录