网站首页 > 数据库 / 正文
使用Docker部署MySQL数据库(我们在这)
查找镜像
网站地址:https://hub.docker.com/
如果只是查找镜像,我们不需要登录,直接在上面的搜索框中输入所需镜像的名称,然后单击回车或在下拉列表中选择即可。
另外,也可以通过命令行来查找镜像,但是Docker所提供的命令中,仅可查找到镜像仓,而无法列出镜像对应的Tag。
首先,我们可以通过以下命令来查找镜像仓:
docker search -f is-official=true mysql
其中“-f”表示过滤条件,等同于“--filter”,此时我们只查找mysql镜像仓,结果如下:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12007 [OK]
mariadb MariaDB Server is a high performing open sou… 4599 [OK]
如果我们要列出镜像的Tag,有两个RESTful API可以使用:
- V1版本:https://registry.hub.docker.com/v1/repositories/{repo-name}/tags
- V2版本:https://registry.hub.docker.com/v2/repositories/library/{repo-name}/tags?page_size={page-size}
其中,大括号括起来的部分表示参数,例如我们需要查找的镜像仓为mysql,则应把“{repo-name}”替换为“mysql”。
这两个API返回的都是JSON数组,直接看起来比较麻烦,可选择将其封装到shell脚本,并对命令行进行解析和截取,以得到简洁的输出,对应的封装在网上可以查到很多,如:https://www.jianshu.com/p/f974ec9e7937,此处不再赘述。
以容器方式运行MySQL
此时我们选择使用Tag为8.0.28的镜像。首先,我们通过以下命令将镜像拉取到本地。
docker image pull mysql:8.0.28
拉取mysql镜像可能需要一段时间,待拉取完成后,其输出结果如下:
8.0.28: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
e5c707858ec0: Pull complete
fc41578cbf60: Pull complete
4785d896ef10: Pull complete
7d250cdc93be: Pull complete
309700f41983: Pull complete
45fd33301836: Pull complete
92f970c68b71: Pull complete
bb3544339a9e: Pull complete
f66ddf4c43fa: Pull complete
Digest: sha256:d0507b008897c39f6cbc76285af1171d4551988475e00e91344060023cd9c553
Status: Downloaded newer image for mysql:8.0.28
docker.io/library/mysql:8.0.28
此时我们可通过以下命令来查看本地镜像:
docker image ls
输出的结果如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0.28 5b4c624c7fe1 3 days ago 519MB
现在我们可以使用这个镜像来运行一个MySQL的容器实例,命令如下:
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 --restart always -d mysql:8.0.28
其中参数的含义如下:
- -p,等同于“--publish”,表示将主机的端口映射给容器,此时是将主机的3306端口映射给容器,以便于可通过访问主机端口来获取MySQL服务,需要注意的是冒号前面的是主机端口,后面才是容器端口
- --name,表示运行的容器的名称
- -e,等同于“--env”表示在容器中预置一个环境变量,变量名称为MYSQL_ROOT_PASSWORD,值为123456
- --restart,指示容器的重启策略,这里使用always策略,表示除非手动停止容器,否则容器将自动重启。
- -d,等同于“--detach”,表示后台运行,并输出容器的唯一标识
命令的执行结果如下:
c8e4c1c2f9506eaa0e8ec30a361ba28d9b208dd827c6369d1e42e08a989143a5
这是新创建并运行的容器的唯一标识,我们可通过以下命令来查看容器:
docker container ls
命令的输出结果如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c8e4c1c2f950 mysql:8.0.28 "docker-entrypoint.s…" 14 seconds ago Up 13 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
登录到MySQL容器
在容器运行之后,我们可通过以下命令登录到容器:
docker exec -it mysql /bin/bash
- exec,表示在容器中执行命令
- -it,表示以交互式执行,若是“-d”,则表示后台执行
- mysql,表示待执行命令的容器的名称,也可以使用容器的唯一标识
- /bin/bash,表示在容器中执行的名称
因此这行命令表示,在mysql容器中执行“/bin/bash”命令,并以交互式方式将输入和输出绑定到当前的终端。其表现形式与使用“ssh”命令连接到远端服务器基本一致。此时我们可以通过终端在容器中执行命令。
首先,我们可通过执行以下命令来查看之前在运行容器时设置的环境变量。
echo ${MYSQL_ROOT_PASSWORD}
执行结果如下:
123456
然后,我们可通过以下命令来登录MySQL,密码即为“123456”:
mysql -u root -p
输出如下,表示登录MySQL成功,后续即可在其中进行创建数据库等操作。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.28 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
远程连接
因为之前已经配置了容器在主机中映射的端口,因此此时可通过主机的IP来远程连接MySQL数据库。
此时我们使用MySQL Workbench来进行远程连接。
首先,我们在Workbench中找到连接MySQL数据库的菜单项“Database / Connect to database”:
在弹出的对话框中输入运行容器的主机的IP,并单击“Store in Vault ...”按钮输入root密码,单击“OK”按钮连接到MySQL。
连接完成后的界面如下,表示已经连接成功。
此时,我们可在MySQL Workbench中对MySQL进行操作。MySQL服务已可用。后面,我们将制作OpenJDK的镜像,用以为将自己的Java应用部署到容器中做准备。
Tags:oracle in数组
猜你喜欢
- 2024-11-26 存储基础知识之存储方式
- 2024-11-26 Redis GEO地理位置数据存储方案
- 2024-11-26 LangChain手册(Python版)19模块:索引中的矢量数据库
- 2024-11-26 Java 14 新功能介绍
- 2024-11-26 sorms 1.0.10 发布,简易ORM框架
- 2024-11-26 CENTOS断更之后,该何去何从?
- 2024-11-26 linux shell 笔记——1
- 2024-11-26 Oracle数据库扩展语言PL/SQL之自治事务
- 2024-11-26 Oracle PL/SQL编程入门篇
- 2024-11-26 一文看懂Oracle11g IO校准功能--数据库评估存储设备IO性能