运维实践|如何使用docker离线安装mysql

在这里插入图片描述

📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师
🏆 近期荣誉:华为云云享专家、阿里云专家博主、腾讯云优秀创作者
🔥 三连支持:欢迎 ❤️关注、👍点赞、👉收藏三连,支持一下博主~

前言

docker是一种开源的容器化平台,可以将应用程序及其依赖项打包成一个隔离的容器,然后在任何操作系统中运行。MySQL是一个流行的开源关系型数据库管理系统。本文将介绍拉取镜像、保存镜像、创建容器、启动应用容器以及测试。

环境准备

● 本机器macOS 13.2
● Homebrew 3.6.15 (在macOS中主要是使用brew命令来安装docker)
● 终端(我这里使用iTerm2来代替)

检查环境

打开终端,如果没有就安装一个。在终端中,使用docker info或者docker version来检查是否安装docker工具,如果已经安装,请直接拉取。

安装docker

如果没有安装镜像工具,那么我们可以使用homebrew来安装一个docker,可以执行search,然后找到docker执行安装命令 docker install docker 即可。

$ brew search docker
Warning: Unexpected method 'on_sonoma' called on Cask safari-technology-preview.
Follow the instructions here:
  https://github.com/Homebrew/homebrew-cask#reporting-bugs
==> Formulae
chipmk/tap/docker-mac-net-connect       docker-compose-completion               docker-machine-completion               docker-machine-parallels                lazydocker
docker                                  docker-credential-helper                docker-machine-driver-hyperkit          docker-slim                             powerman-dockerize
docker-buildx                           docker-credential-helper-ecr            docker-machine-driver-vmware            docker-squash                           wenjunxiao/brew/docker-accessor
docker-clean                            docker-gen                              docker-machine-driver-vultr             docker-swarm                            wenjunxiao/brew/docker-connector ✔
docker-completion                       docker-ls                               docker-machine-driver-xhyve             docker2aci                              mockery
docker-compose                          docker-machine                          docker-machine-nfs                      dockerize

==> Casks
docker                                  docker-edge                             docker-toolbox                          dockey                                  dozer
``
# 联网拉取镜像
## 拉取远程镜像
在联网状态下,当我们使用docker拉取远程镜像,并指定版本即可。例如我这里想要拉取远程的``mysql-8.0.31`` ,然后我们使用啦去命令 ``docker pull mysql:8.0.31`` 。下面是实践:
```shell
$ docker pull mysql:8.0.31
8.0.31: Pulling from library/mysql
0ed027b72ddc: Pull complete
0296159747f1: Pull complete
3d2f9b664bd3: Pull complete
df6519f81c26: Pull complete
36bb5e56d458: Pull complete
054e8fde88d0: Pull complete
f2b494c50c7f: Pull complete
132bc0d471b8: Pull complete
135ec7033a05: Pull complete
5961f0272472: Pull complete
75b5f7a3d3a4: Pull complete
Digest: sha256:3d7ae561cf6095f6aca8eb7830e1d14734227b1fb4748092f2be2cfbccf7d614
Status: Downloaded newer image for mysql:8.0.31
docker.io/library/mysql:8.0.31

这个阶段会有一个等待时间,等所有的拉取都执行完成后,会打印一些镜像信息,例如版本签名(Digest)、拉取镜像状态以及镜像的版本(Status)
默认情况下,docker会拉取镜像的最新版本,当我们执行 docker pull mysql 命令等同于 docker pull mysql:latest,他们都是拉取镜像库最新的版本。

检查拉取镜像

可以使用 docker images 来再次确认是否成功拉取、下载镜像。如果不知道想要的版本,可以去docker的官方仓库查询一下https://hub.docker.com/_/mysql/tags?page=1&name=8.0.31

$ docker images
REPOSITORY      TAG       IMAGE ID       CREATED         SIZE 
……
mysql           8.0.31    7484689f290f   14 months ago   538MB
mysql           latest    3218b38490ce   2 years ago     516MB
……

保存镜像到本地

检查拉取的镜像没有问题后,需要将MySQL镜像导出为文件,提供给其他无网络环境安装使用。
导出文件格式

docker save -o [保存文件全路径] [镜像名称]:[镜像版本]

一般情况下,我们会将MySQL镜像保存为tar文件,名称和版本作为镜像名称,例如:

$ docker save -o /Users/Aion/mysql-8.0.31.tar mysql:8.0.31
$ cd /Users/Aion
$ ll

在这里插入图片描述

离线环境实践

装载镜像

上传或者拷贝镜像文件到服务器的某一个位置,当然这里的离线服务器也需要安装docker环境,安装完成后,使用docker load命令来装载即可。为了方便演示,我们将本地的镜像中的mysql删除即可,删除命令为 docker image rm [镜像容器ID|镜像名称:镜像版本]

$ 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
$
$ docker image rm mysql:8.0.31
Untagged: mysql:8.0.31
Untagged: mysql@sha256:3d7ae561cf6095f6aca8eb7830e1d14734227b1fb4748092f2be2cfbccf7d614
Deleted: sha256:7484689f290f1defe06b65befc54cb6ad91a667cf0af59a265ffe76c46bd0478
Deleted: sha256:fb249074ba1621ae2f0021b89488f93d6d591fd42f8bbc760be96a653d18a066
Deleted: sha256:d7912527c048a7e206c51080f7f1b6b6c383ac8954e3da7d113b00d0a96c7044
Deleted: sha256:994f05094d147f16e330dd7c9afd5e1472fbf1ce1038eb707e379ae507de6167
Deleted: sha256:1337fe7eaf3ed7bac1f1842205c3c80466781cf2ed39d755043a24939a9c4408
Deleted: sha256:4524762c7e21412b3fef00e189fe6b81e78f2751fef4f30355018dc3ab5f3cf2
Deleted: sha256:5222c8df3c5115dcf6c3bb957d5160d5d7124437fa2f214368d67b8e1e6d670e
Deleted: sha256:169fcf64e0d193fda3e49267b454ddeb4083f05e70bbcbbc6de2798944c3e555
Deleted: sha256:bc87451b8005b06fa948e48c2644bc42107cf037499d15dad7f341064035dfc2
Deleted: sha256:93c1acbf3bfcdd2a82a68687481569a07d619469a596b5f017f17cc092498eef
Deleted: sha256:29bd3d7c6e1683e422776b9d3285e8a3f1272f07656fc63a941cb7729a169100
Deleted: sha256:d3cc7b6aa7bc15725c1a856ce06fe436da3fbccf0c9c06b04e45f79b3439c154
$

装载过程界面如下所示:
在这里插入图片描述

装载提示信息成功后,我们检查下docker中是否准确装载,从下面的信息中,我们看到mysql被装载到docker环境中。

$ docker images
REPOSITORY      TAG       IMAGE ID       CREATED         SIZE 
……
mysql           8.0.31    7484689f290f   14 months ago   538MB
……

创建mysql容器

万事俱备,只欠东风。下面的操作步骤如我们在其他linux或windows中的操作类似。我们使用docker创建一个mysql的容器,其实是一个类似存放mysql的环境。
● 格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

(1)如果不需要挂载则直接使用命令创建容器,并返回创建的容器的ID:

$ docker run --name mysql -p 13306:13306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.31
1b794ee4a9e6b56244cbb561b7fce88ff20a1b5dae3cd0827bd2812199d99787

(2)如果需要挂载,例如我这里需要挂载已经装载的mysql镜像

docker run --name mysql -p 13306:13306 \
-v /var/mysql/log:/var/log/mysql \
-v /var/mysql/data:/var/lib/mysql \
-v /var/mysql/conf/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.31

参数解释和说明:
–name mysql:指定容器的名称。
-p 13306:13306 :将容器的13306端口映射到主机的13306端口,冒号前面是宿主机的端口,冒号后面是容器内部端口。
-v /var/mysql/conf/my.cnf:/etc/my.cnf: 将配置文件夹挂载到主机。
-v /var/mysql/log:/var/log/mysql: 将日志文件夹挂载到主机。
-v /var/mysql/data:/var/lib/mysql: 将数据配置文件夹挂载到主机。
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码为123456。
-d mysql:8.0.31 :后台运行容器,并返回容器id。

连接到容器

连接容器,其实就类似我们使用mysql命令连接到mysql服务端,连接容器的格式如同非容器时差不多:
docker exec -it [容器名称] mysql -uroot -p
● 容器名称:上述所讲到的–name后的参数
● 其他参数:同mysql连接一致
执行结果如下:

$ docker exec -it mysql  mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.31 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> select version();
+-----------+
| version() |
+-----------+
| 8.0.31    |
+-----------+
1 row in set (0.00 sec)

mysql>
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql>

总结

通过上面的实践,是否学会了如何在离线环境中使用Docker拉取MySQL镜像,并在离线环境中使用Docker创建、连接、使用MySQL容器。Docker提供了便捷的方式来搭建和管理容器化的MySQL环境,使得开发和部署变得更加灵活和可靠。还有一方面就是起到了隔离性,避免因为硬件问题导致的一些问题,尤其是arm内核下遇到的很多问题。


欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。

  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Docker离线安装MySQL的步骤如下: 第一步:找到一台联网的安装了Docker的服务器,使用命令"docker images"查看当前已有的Docker镜像。 第二步:下载MySQLDocker镜像包。可以使用命令"docker save -o mysql.tar mysql:latest"进行保存,其中"latest"是tag的名称。 第三步:将保存的MySQL镜像包传输到离线环境中的服务器。 第四步:在离线环境中的服务器上安装Docker,并导入MySQL镜像包。可以使用命令"docker load -i mysql.tar"进行导入。 第五步:根据需求创建MySQL节点。可以使用命令"docker run"来创建容器,并指定相关参数,如端口映射、环境变量、数据卷等。 通过以上步骤,你可以在离线环境中使用Docker安装MySQL。记得根据实际需求修改相关参数,如MySQL的密码、集群名称、节点地址等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [docker离线安装mysql](https://blog.csdn.net/weixin_44176393/article/details/131189389)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [(亲身采坑)docker部署mysql(pxc)集群离线安装](https://blog.csdn.net/qq_24233585/article/details/106259890)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六月暴雪飞梨花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值