📚前言
前面有篇文章已经简单地介绍了 Docker,却没有使用真正的案例来使用一下。
如果还没有看可以点一下这个链接 Docker笔记_hjh_cos-CSDN博客 了解一下,或许可以解决你无法使用 docker 的问题。
那么接下来我将会使用 docker 的镜像来快速安装 MySQL ,其实网上关于MySQL应不应该安装在docker 上运行部署项目持有两种态度。我个人觉得怎么方便怎么来,比如我完全为了测试用完就删,那么我就可以考虑 docker 毕竟可以不用配置环境啥的。
网上还有人说 k8s 代替 docker 你可以完全当个笑话听听,毕竟两者可以说完全是不同的服务。
📕正文
内容不是很多,毕竟官网有相关地说明和介绍,可就算如此我还是遇见问题了,流下没有技术的眼泪😭,不过后面还是解决了。
docker 官网关于MySQL教程 Mysql - Official Image | Docker Hub。
💡检查是否存在 MySQL 镜像
docker images
PS F:\Space\mysql> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 3218b38490ce 2 months ago 516MB
PS F:\Space\mysql>
显然我以前已经使用 docker pull mysql 拉取过 MySQL 的镜像,不用担心为了演示我会把它删了😂。
💡删除已经安装的 MySQL 镜像
docker image rm <镜像 ID>
PS F:\Space\mysql> docker image rm 3218b38490ce
Untagged: mysql:latest
Untagged: mysql@sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Deleted: sha256:3218b38490cec8d31976a40b92e09d61377359eab878db49f025e5d464367f3b
Deleted: sha256:aa81ca46575069829fe1b3c654d9e8feb43b4373932159fe2cad1ac13524a2f5
Deleted: sha256:0558823b9fbe967ea6d7174999be3cc9250b3423036370dc1a6888168cbd224d
Deleted: sha256:a46013db1d31231a0e1bac7eeda5ad4786dea0b1773927b45f92ea352a6d7ff9
Deleted: sha256:af161a47bb22852e9e3caf39f1dcd590b64bb8fae54315f9c2e7dc35b025e4e3
Deleted: sha256:feff1495e6982a7e91edc59b96ea74fd80e03674d92c7ec8a502b417268822ff
Deleted: sha256:8805862fcb6ef9deb32d4218e9e6377f35fb351a8be7abafdf1da358b2b287ba
Deleted: sha256:872d2f24c4c64a6795e86958fde075a273c35c82815f0a5025cce41edfef50c7
Deleted: sha256:6fdb3143b79e1be7181d32748dd9d4a845056dfe16ee4c827410e0edef5ad3da
Deleted: sha256:b0527c827c82a8f8f37f706fcb86c420819bb7d707a8de7b664b9ca491c96838
Deleted: sha256:75147f61f29796d6528486d8b1f9fb5d122709ea35620f8ffcea0e0ad2ab0cd0
Deleted: sha256:2938c71ddf01643685879bf182b626f0a53b1356138ef73c40496182e84548aa
Deleted: sha256:ad6b69b549193f81b039a1d478bc896f6e460c77c1849a4374ab95f9a3d2cea2
PS F:\Space\mysql>
PS F:\Space\mysql> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
PS F:\Space\mysql>
显然我已经成功删除了 MySQL 镜像,之前镜像也没有指明版本。这次我会安装 5.7 版本的,也是为了和韩老师的 MySQL 版本对应上。如果你不指明版本,那么默认会安装 latest 最新发布的版本,毕竟版本之间到底存不存在的差异性咱也不知道,万一存在一些差异那且不是还要重新安装那太麻烦了。
💡拉取指定版本的镜像
docker pull <镜像:版本>
PS F:\Space\mysql> docker pull mysql:5.7.37
5.7.37: Pulling from library/mysql
6552179c3509: Pull complete
d69aa66e4482: Pull complete
3b19465b002b: Pull complete
7b0d0cfe99a1: Pull complete
9ccd5a5c8987: Pull complete
44f5f7765d10: Pull complete
7e8f1dd5efbe: Pull complete
ab45b9a309e7: Pull complete
90242da46c57: Pull complete
9a8d822d1293: Pull complete
1704bf9fa775: Pull complete
Digest: sha256:ea24ddf1116d6e5053919748d2c27c8200e39ac0dbe9540f213a2d9141b66167
Status: Downloaded newer image for mysql:5.7.37
docker.io/library/mysql:5.7.37
PS F:\Space\mysql>
不过这个下载连接是真的有点慢,而且窗口还没有反应,像这种情况我每次都会按一下 ? 键立马就好了,界面开始刷新出现下载信息,简直就是玄学😂😂。
PS F:\Space\mysql> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7.37 538ec2c8721c 3 days ago 448MB
PS F:\Space\mysql>
可以看到我已经成功下载 5.7.37 版本的 MySQL,但是这个日期是什么鬼创建时间明明是刚刚,这里却显示 3 天前,当然这些可以不用太担心,反正能用就行。
💡运行MySQL镜像并设置密码
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
PS F:\Space\mysql> docker run --name java_mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.37
87893aae49c42597508318eea1ad48e8f64c6e3d22ed999f3fbe5bb626d8110a
PS F:\Space\mysql>
这里没啥好说的,完全是按照官网步骤。不过你如果运行你没有拉取版本的MySQL是不会成功的,docker 也会提醒你说本地没有相应 MySQL,但是如果 docker 联网找到了你输入版本的镜像,那么它会自动去下载。
PS F:\Space\mysql> docker run --name java_mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker: Error response from daemon: Conflict. The container name "/java_mysql" is already in use by container "87893aae49c42597508318eea1ad48e8f64c6e3d22ed999f3fbe5bb626d8110a". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
PS F:\Space\mysql>
💡查看MySQL镜像是否运行
docker ps
PS F:\Space\mysql> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
87893aae49c4 mysql:5.7.37 "docker-entrypoint.s…" 8 minutes ago Up 8 minutes 3306/tcp, 33060/tcp java_mysql
PS F:\Space\mysql>
可以看见创建时间是 8 分钟之前,毕竟我刚刚还演示了运行拉取到本地的镜像,差不多也就花费了怎么多时间吧。
💡 进入运行的容器
docker exec -it <容器 ID> bash
PS F:\Space\mysql> docker exec -it 87893aae49c4 bash
root@87893aae49c4:/
显然可以看出来终端的路径发生了改变,其实是因为我进入了运行的 MySQL 容器并通过参数 t 分配了一个伪终端。
💡进入 MySQL 服务
mysql -u root -p
root@87893aae49c4:/
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.37 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>
📕外部连接MySQL
其实如果你希望容器里面的MySQL,可以通过外部的图像界面管理的话,只需要将端口映射一下就行了。
看来我完全成功了,又可以开始新的历程。
后续遇到什么问题也会更新在博客里面。
如果你是无意刷到这篇文章并看到这里,希望你给我的文章来一个赞赞👍👍。如果你不同意其中的内容或有什么问题都可以在下方评论区留下你的想法或疑惑,谢谢你的支持!!😀😀
|