专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 快速搭建Docker开发环境

快速搭建Docker开发环境

更新时间:2021-12-24 10:33:31 来源:赢咖4 浏览1165次

使用 Docker 搭建开发环境

现在以搭建 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 的初始化文件。如果大家想了解更多相关知识,可以来关注一下赢咖4的Docker菜鸟教程,里面的内容细致全面通俗易懂,适合小白学习,希望对大家能够有所帮助。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>