从安装Docker到打包迁移MySQL的完整指南

news/2024/9/13 12:06:10/ 标签: docker, mysql, 容器

从安装Docker到打包迁移MySQL的完整指南

在这里插入图片描述

每一天过得充实,眼中无迷茫,心中无烦恼。日子就会充满希望,岁月就会洒满清欢。

这篇文章将带你从零开始,在CentOS服务器上安装Docker、使用Docker部署MySQL数据库,并打包和迁移MySQL容器到另一台服务器。


1. 安装Docker

Docker是一个用于创建、部署和运行应用程序的开源平台。它允许你将应用程序与其所有依赖项打包成一个称为容器的标准单元。以下是在CentOS上安装Docker的步骤。

1.1 更新系统软件包

首先,更新系统的软件包索引,以确保你有最新的软件包版本。

sudo yum update -y
1.2 安装依赖包

安装一些必要的依赖包,这些包将帮助你管理Docker存储库。

sudo yum install -y yum-utils
1.3 添加Docker存储库

将Docker的官方存储库添加到你的系统中。

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.4 安装Docker引擎

安装Docker CE(社区版)以及CLI工具和containerd.io。

sudo yum install -y docker-ce docker-ce-cli containerd.io
1.5 启动并设置Docker为开机自启动

启动Docker服务并将其设置为开机自启动。

sudo systemctl start docker
sudo systemctl enable docker
1.6 验证Docker安装

运行以下命令,验证Docker是否已正确安装。

sudo docker run hello-world

如果你看到“Hello from Docker!”的消息,说明Docker安装成功。


在这篇关于从安装 Docker 到打包迁移 MySQL 的指南中,我们将详细介绍 Docker 的安装和使用过程,并包括一些关键配置,如 Docker 镜像加速器的设置。以下是文章的扩展内容,包括如何设置镜像加速器。

2. 配置 Docker 镜像加速器

为了提高 Docker 镜像的下载速度,特别是在网络环境不理想的情况下,设置镜像加速器是一个常见的优化手段。镜像加速器是国内一些高校和组织提供的服务,它们可以加速 Docker Hub 镜像的下载。

2.1 配置 Docker 镜像加速器

要配置 Docker 的镜像加速器,你可以在 Docker 的配置文件中添加以下内容:

{"registry-mirrors": ["https://dockerproxy.com","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn"]
}

参数解释

  • registry-mirrors:这是一个列表,用于定义 Docker 的镜像加速器地址。当 Docker 拉取镜像时,会首先尝试从这些镜像加速器获取。
    • https://dockerproxy.com:一个通用的 Docker 镜像加速器。
    • https://docker.nju.edu.cn:由南京大学提供的镜像服务,加速效果显著。
    • https://docker.mirrors.sjtug.sjtu.edu.cn:由上海交通大学提供的镜像服务,优化了镜像下载速度。
2.2 如何应用配置

在 CentOS 上,你可以将上述配置添加到 Docker 的配置文件中:

  1. 打开或创建 Docker 的配置文件 /etc/docker/daemon.json

    sudo nano /etc/docker/daemon.json
    
  2. 将上述 JSON 配置粘贴到文件中并保存。

  3. 重新启动 Docker 以应用更改:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

通过配置镜像加速器,Docker 将优先从指定的加速器地址拉取镜像,极大地提高了镜像下载的速度,特别是在国内环境下,这一步尤为重要。


此部分内容将帮助用户在安装和配置 Docker 时,更有效地进行镜像管理,减少等待时间,提升整体使用体验。

3. 使用Docker部署MySQL

MySQL是一种流行的开源关系数据库管理系统。在Docker中部署MySQL非常简单。以下步骤将引导你如何在Docker中运行MySQL容器

3.1 拉取MySQL镜像

为了加速镜像的下载速度,建议使用国内的镜像源。以下是从DaoCloud镜像源拉取MySQL官方镜像的命令:

sudo docker pull daocloud.io/library/mysql:8.0

千万千万不要使用下面命令

sudo docker pull mysql:8.0

image-20240823112608036

image-20240823112622659

3.2 运行MySQL容器

使用拉取的MySQL镜像启动一个容器,并将MySQL的3306端口映射到主机的3306端口,以便外部访问。

sudo docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:8.0

参数说明:

  • --name mysql-container:指定容器名称为mysql-container
  • -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置MySQL的root用户密码为my-secret-pw
  • -p 3306:3306:将容器内的3306端口映射到主机的3306端口。
  • -d mysql:8.0:在后台运行MySQL 8.0镜像。
3.3 配置MySQL允许远程访问

进入MySQL容器,允许root用户从任意主机访问数据库。

sudo docker exec -it mysql-container mysql -uroot -p

在MySQL命令行中,运行以下命令:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'my-secret-pw';
FLUSH PRIVILEGES;

如果你希望创建一个新用户以用于远程访问,可以运行以下命令:

CREATE USER 'newuser'@'%' IDENTIFIED BY 'userpassword';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
3.4 防火墙配置(如适用)

如果你的服务器有防火墙,需要确保3306端口对外开放。

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

4. 打包并迁移MySQL容器

当你需要将MySQL容器迁移到另一台服务器时,可以通过Docker的导入和导出功能轻松实现。

4.1 导出MySQL容器

首先,将正在运行的MySQL容器导出为一个.tar文件。

sudo docker save -o mysql-container.tar mysql-container

这将生成一个包含MySQL容器文件系统的mysql-container.tar文件。

4.2 将打包文件复制到新服务器

使用scp或其他文件传输工具将导出的mysql-container.tar文件传输到目标服务器。

scp mysql-container.tar user@new-server:/path/to/destination
4.3 在新服务器上导入MySQL容器

在新服务器上,首先确保Docker已经安装,然后导入容器

sudo docker load -i mysql-container.tar
4.4 运行导入的MySQL容器

导入完成后,可以使用以下命令运行容器

sudo docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d <loaded-image-name>

在Docker中,docker importdocker load是两个用于不同场景的命令。它们的区别导致了在某些情况下,docker import不适合,而docker load是正确的选择。

5.补充说明

docker_import__docker_load__232">5.1.docker importdocker load 的区别
  • docker import

    • 用途docker import用于将一个容器快照(通常是通过docker export导出的容器文件系统)导入为一个新的镜像。
    • 特点:它会忽略导出的容器的历史记录和元数据,只保留文件系统。导入后的镜像将没有与Dockerfile相关的元数据(如标签、环境变量等),并且没有镜像历史记录。
    • 使用场景:适合从其他工具或系统中获得的容器快照,但通常不用于正式的镜像迁移。
  • docker load

    • 用途docker load用于从一个.tar归档文件中加载完整的Docker镜像。这个.tar文件通常是通过docker save命令创建的。
    • 特点:保留了所有的镜像历史记录、元数据、标签等。导入后,该镜像与通过docker pull拉取的镜像一致。
    • 使用场景:适合完整的镜像迁移和备份。
docker_load__244">5.2. 为什么docker load 是更好的选择

当你使用docker export导出一个运行中的容器时,它只会导出容器的文件系统,不包含镜像的历史和元数据。因此,在某些情况下,使用docker import导入时会丢失这些信息,这对于后续使用和管理可能是不利的。

相比之下,使用docker savedocker load来迁移镜像,可以确保镜像的完整性,包括所有历史、标签和元数据。这种方法适合需要在不同环境之间迁移的镜像,确保迁移后的一致性和可用性。



http://www.ppmy.cn/news/1516765.html

相关文章

云计算day30

1. 配置⼀主⼆从mysql57 1. mycat对mysql8不完全⽀持 2. mysql8主从问题不⼤ get_pub_key1 1. gtids事务复制 2. 删除/etc/my.cnf 3. 同步data⽂件需要先停⽤mysql服务&#xff0c;删除data⽬录中的 auto.cnf 4. gtid模式以及经典模式都需要锁表 flush tables with rea…

给房子“养老”,你准备好了吗?

文&#xff5c;琥珀食酒社 作者 | 积溪 真崩不住了啊 一觉醒来 朋友圈被房屋养老金刷屏了 有人说买房如买“爹”&#xff0c;真的好费钱 有的说咱自己的养老还没着落呢 未来还得给房子养老&#xff1f; 当然&#xff0c;这事已经被辟谣了 说公共账户不需要咱老百姓额外…

0x03 ShowDoc 文件上传漏洞(CNVD-2020-26585)复现

参考&#xff1a;ShowDoc文件上传漏洞&#xff08;CNVD-2020-26585&#xff09;_showdoc漏洞-CSDN博客 一、fofa 搜索使用该工具的网站 网络空间测绘&#xff0c;网络空间安全搜索引擎&#xff0c;网络空间搜索引擎&#xff0c;安全态势感知 - FOFA网络空间测绘系统 "S…

【Linux】第十六章 高级IO (五种IO模型+fcntl)

文章目录 五种 IO 模型异步IO 和 同步IO同步通信 和 异步通信同步通信 和 同步与互斥fcntl-设置非阻塞IO测试 IO主要分为两步&#xff1a; 第一步是等&#xff0c;即等待IO条件就绪。第二步是拷贝&#xff0c;也就是当IO条件就绪后将数据拷贝到内存或外设。 让IO变得高效&…

排序算法(冒泡、插入、选择、快排、归并)原理动画及Python、Java实现

排序算法&#xff08;冒泡、插入、选择、快排、归并&#xff09;原理动画及Python、Java实现 1 冒泡排序1.1 原理1.2 Python、Java实现 2 插入排序2.1 原理2.2 Python、Java实现 3 选择排序3.1 原理3.2 Python、Java实现 4 快速排序4.1 原理4.2 Python、Java实现 5 归并排序5.1…

【十四届蓝桥杯省赛C++试卷】

一、选择题 第一题 C 中&#xff0c; bool 类型的变量占用字节数为&#xff08; &#xff09;。 A 、 1 B 、 2 C 、 3 D 、 4 答案&#xff1a;A 解析&#xff1a;&#xff08;C 中 bool 类型与 char 类型一样&#xff0c;都需要1 byte。一些其他类型的占用字节数&…

streeapptest 工具编译看 + 测试rk3568

首先来了解一下 stressappteset 网上的资料 压力测试不就是 内存的接口测试吗&#xff1f; 网上找了些资料&#xff0c;基本没有这个工具对于 磁盘网络的测试。 我的理解&#xff0c;压力测试应该指的就是 CPU内存的测试吧。 然后是 关于这个 软件的编译。 首先是下载 git c…

JavaScript(28)——正则表达式

定义正则表达式语法&#xff1a; const 变量名 /表达式/ 判断是否有符合规则的字符串&#xff1a; test()方法 用来查看正则表达式与指定的字符串是否匹配 语法&#xff1a; regObj.test(被检测的字符串) //返回布尔值 regObj.exec(字符串) //返回的是数组 <script>…

docker的部署及基本用法

目录​​​​​​​ 1 docker 介绍 1.1 什么是docker&#xff1f; 1.2 docker在企业中的应用场景 1.3 docker与虚拟化的对比 1.4 docker的优势 1.5 容器工作方式 2 部署docker 2.1 配置软件仓库 2.2 docker 安装 2.3 配置docker 镜像加速器 2.4 启动服务 2.5 激活内核网络选项…

每日刷力扣SQL题(五)

1164.指定日期的产品价格 一、方法&#xff1a;使用left join 和 ifnull 思路 本题的关键点在找到 2019-08-16 前所有有改动的产品及其最新价格和没有没有修改过价格的产品。 我们可以先找到所有的产品&#xff0c;再找到所有 2019-08-16 前有修改的产品和他们最新的价…

Vue3 pinia

1.简介 集中式状态&#xff08;数据&#xff09;管理 和vueX一样 2.安装pinia npm i pinia //引入 createApp用于创建应用 import {createApp} from vue; //引入 App 根组件 import App from ./App.vue;//引入pinia import {createPinia} from pinia;//创建一个应用 const…

PyTorch构建模型网络结构的6种方式

PyTorch提供了多种方式来构建模型的网络结构&#xff0c;我尝试总结一下&#xff0c;有如下6种常见方式&#xff08;可能还有我没注意到的&#xff0c;欢迎补充&#xff09;。我们平时写代码并不一定需要掌握全部方式&#xff0c;但是多了解一些&#xff0c;对于阅读理解别人的…

服务器主动推送的方法

目录 1.长轮询&#xff08;Long Polling&#xff09;2.WebSockets3.Server-Sent Events&#xff08;SSE&#xff09;4.HTTP2 Server Push 服务器如何主动推送数据 在传统的网络通信中&#xff0c;客户端&#xff08;如浏览器&#xff09;通常需要通过向服务器发起请求来获取数据…

快速判断一个项目是Spring MVC框架还是Spring Boot框架

1. 查看项目的启动类 Spring Boot: 通常有一个主类&#xff0c;包含 SpringBootApplication 注解&#xff0c;并且有一个 main 方法来启动应用程序。 SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication.run(Appli…

作业训练三编程题13. 导弹防御系统

【问题描述】 某国为了防御敌国的导弹袭击&#xff0c;开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不能高于前一发的高度。某天&#xff0c;雷达捕捉到敌国的导弹来袭&#xf…

python脚本请求数量达到上限,http请求重试问题例子解析

在使用Python的requests库进行HTTP请求时&#xff0c;可能会遇到请求数量达到上限&#xff0c;导致Max retries exceeded with URL的错误。这通常发生在网络连接不稳定、服务器限制请求次数、或请求参数设置错误的情况下。以下是一些解决该问题的策略&#xff1a; 增加重试次数…

并发服务器开发基础

一、服务器模型 1. 单循环服务器&#xff1a; 单循环服务器在同一时刻只能处理一个客户端的请求。由于其结构简单&#xff0c;适合低负载的场景&#xff0c;但在并发请求增加时可能导致性能问题。 2. 并发服务器模型&#xff1a; 并发服务器可以同时响应多个客户端…

本地环境注入jupyter:无法在jupyter选择已经创建的conda环境?快来看下解决办法(jupyter notebook选择已创建环境)

1、WinR打开本机cmd命令行 2、运行 conda activate 本地已创建的环境名称 3、运行 conda install ipykernel 4、运行 python -m ipykernel install --user --name 本地环境名称 --display-name "在jupyter上显示的环境名称" 就可以在jupyter notebook中看到环…

谷粒商城实战笔记-250-商城业务-消息队列-RabbitMQ安装-Docker

一&#xff0c;docker安装RabbitMq RabbitMQ 是一个开源的消息代理软件&#xff0c;广泛用于实现异步通信和应用程序解耦。 使用 Docker 容器化技术可以简化 RabbitMQ 的安装和部署过程。 以下是使用 Docker 安装 RabbitMQ 的详细步骤。 步骤 1: 安装 Docker 如果您的系统…

如何解决:Failed to start jenkins.service: Unit not found.

当在 CentOS 上尝试启动 Jenkins 服务时&#xff0c;出现 Failed to start jenkins.service: Unit not found 的错误&#xff0c;这通常表示 Jenkins 服务未安装或未正确配置。请按照以下步骤进行排查和解决&#xff1a; 解决步骤 检查 Jenkins 是否已安装&#xff1a; 确认 J…