更新时间:2021-12-24 10:33:31 来源:极悦 浏览1268次
现在以搭建 mysql 为例
首先从 hub.docker.com 网站中搜索你需要的镜像, 如 mysql
其中第一个带有 official 单词的表明为 Dcoker 官方提供的镜像, 下面的三个为个人 / 组织上传的镜像
我们点击右侧 DETAILS 按钮查看镜像详情
图中的 8.0.1 至 5.5.55 四行表示支持的 mysql 版本, 同时附带镜像构建的 Dockerfile 文件
右侧的 docker pull mysql 是镜像的下载命令, 此时我们可以在命令行中执行该命令进行下载, 默认下载版本为 latest
如果希望指定下载版本, 使用如下命令格式 docker pull mysql:版本号, 如 docker pull mysql:5.6
下载 mysql 镜像
$ docker pull mysql:5.7
运行 mysql 镜像
$ docker run --name mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
此时会在命令行中输出该容器运行时的日志, 若要退出, 请按 Ctrl+c
如果希望在后台运行, 加入 -d 参数即可
运行参数说明
--name mysql #镜像运行的容器名称为 mysql
--rm #容器退出后删除该容器
-p 3306:3306 #将本机的 3306 端口映射到该容器的 3306 端口
-e MYSQL_ROOT_PASSWORD=root #为容器配置一个名为 MYSQL_ROOT_PASSWORD, 值为 root 的环境变量, 因 mysql 容器的特殊性, 必须配置该环境变量
-d #在后台运行该容器
在后台运行 mysql 容器
$ docker run --name mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
查看当前运行容器列表
$ docker ps
我们可以发现 mysql 已在后台运行
此时我们可以使用 Navicat,SQLyog 进行链接测试
ip: 运行容器机器的 ip
端口:3306
用户名:root
密码:root, 即 MYSQL_ROOT_PASSWORD 对应的值
亦可使用如下命令进入 mysql 命令行
$ docker run -it --link mysql:mysql --rm mysql:5.7 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR"-P"$MYSQL_PORT_3306_TCP_PORT"-uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
运行参数说明
-it #运行容器后进入一个交互式的终端
--link mysql:mysql #链接一个名称为 mysql 的容器, 并为该容器配置一个名为 mysql 的 hosts
sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR"-P"$MYSQL_PORT_3306_TCP_PORT"-uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"' #为运行容器后执行的命令, 其中诸如 $MYSQL_PORT_3306_TCP_ADDR,$MYSQL_PORT_3306_TCP_PORT 环境变量是容器根据 --link mysql:mysql 自动生成
mysql 镜像默认使用的配置文件为 /etc/mysql/my.cnf
如果我们需要自定义配置文件可以使用如下命令覆盖原本配置
$ docker run --name mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d -v ~/docker/data/mysql/my.cnf:/etc/mysql/my.cnf mysql:5.7
运行参数说明
-v ~/docker/data/mysql/my.cnf:/etc/mysql/my.cnf #使用当前机器下的 ~/docker/data/mysql/my.cnf 文件挂载为容器中的 /etc/mysql/my.cnf 文件
在 mysql 镜像中默认存储目录为 /var/lib/mysql, 这样存在容器删除后数据丢失的问题
为了防止这一情况产生, 我们需要将外部文件夹挂载到容器的 /var/lib/mysql 中
$ docker run --name mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d -v ~/docker/data/mysql/datadir:/var/lib/mysql mysql:5.7
此时我们查看 ~/docker/data/mysql/datadir 文件夹
ll -h ~/docker/data/mysql/datadir
发现已经在该文件夹内生成了一些 mysql 的初始化文件。如果大家想了解更多相关知识,可以来关注一下极悦的Docker菜鸟教程,里面的内容细致全面通俗易懂,适合小白学习,希望对大家能够有所帮助。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习