引言
当你本地没有mysql或本地mysql版本与需要的版本不对应时,这时不用在本地折腾安装或切换版本,用docker拉取myql镜像启动服务就可以解决所面临的问题。
Docker 架构
Docker 包括三个基本概念:
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是类,容器是镜像运行时的实例。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库(Repository)是集中存放镜像的地方。
docker官方仓库: docker hub
1.Docker Compose 来管理你的容器
总体步骤:
首先创建一个 docker-compose.yml 文件,并在其中定义服务、网络、卷等配置。然后,你可以使用 docker compose up 命令来启动并管理这些服务。(docker-compose.yml 修改后的第一次用docker compose up启动服务,之后使用docker compose start)
示例:docker-compose.yml 文件
# Use root/example as user/password credentials
version: '3.1'
services:
db:
image: mysql
# NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password
# (this is just an example, not intended to be a production configuration)
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
adminer:
image: adminer
restart: always
ports:
- 8080:8080
上面的示例中:启动了两个服务,db和adminer
MYSQL_ROOT_PASSWORD: example 为root用户设置密码
image: adminer 使用dminer的镜像。adminer是一个流行的数据库管理工具,特别是用于MySQL和MariaDB。
restart: always 这是一个重启策略
可以在浏览器访问
2.Docker CLI 来运行一个 MySQL 容器
获取镜像
在docker hub找到默认的您需要的镜像
在终端执行docker pull mysql命令
docker pull mysql默认下载最新版本的mysql, docker pull mysql:xx 可以指定xx为您想要的版本。
镜像是分层的。
- 有基础镜像,仅仅包含操作系统,比如 ubuntu 镜像。
- 有中间件镜像,比如 mysql 等数据库镜像。
- 最后是应用镜像,就是指具体的应用服务了。
如下图:
红圈就是基础镜像 ubuntu 操作系统;蓝圈就是中间件镜像 mysql 数据库;;绿圈就是应用镜像。
由于镜像是分层的,获取的时候也需要一层一层的pull,只有等上一层pull complete 下一层才开始pull
docker images 来列出本地主机上的镜像
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
运行容器
们可以直接使用这个镜像来运行容器。
官方这样说:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
在这个命令中:
--name some-mysql 为容器指定一个名称。
-e MYSQL_ROOT_PASSWORD=my-secret-pw 设置 MySQL 的 root 密码。
-d 使容器在后台运行。
mysql:tag 是你想要运行的 MySQL 镜像和标签。
这样容器就已经起来了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。