拉取本地的 Docker 镜像的三种方法
方法 1:通过 docker save 和 docker load 导出和导入镜像
-
在本地服务器上导出镜像: 使用
docker save将镜像保存为一个.tar文件:docker save -o mysql-5.7.tar mysql:5.7 -
将镜像文件传输到其他服务器: 你可以通过
scp或其他文件传输工具,将.tar文件传输到目标服务器。例如,使用scp:scp mysql-5.7.tar root@目标机器IP:/root -
在目标服务器上导入镜像: 在目标服务器上,使用
docker load命令导入该镜像:docker load -i/root/mysql-5.7.tar
这样,目标服务器就能够使用你传输过来的本地镜像了。
在成功加载镜像之后,你可以使用 docker run 命令启动容器。你可以根据你的需要配置容器参数,例如端口映射、环境变量等。
以启动 mysql:5.7 为例,可以按以下方式操作:
启动 MySQL 容器
运行 MySQL 容器:
启动一个容器并将其映射到宿主机的端口:
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 mysql:5.7
这里的参数解释:
--name mysql-container:指定容器的名称为 mysql-container。
-e MYSQL_ROOT_PASSWORD=root:设置 MySQL 容器的 root 用户密码为 root(可以根据需要修改密码)。
-d:让容器在后台运行。
-p 3306:3306:将容器的 3306 端口映射到宿主机的 3306 端口(使你可以通过宿主机访问 MySQL)。
mysql:5.7:使用的镜像。
检查容器是否启动:
启动后,你可以使用 docker ps 命令查看容器是否在运行:
docker ps
进入容器:
如果你需要进入容器的命令行,可以使用 docker exec 命令:
docker exec -it mysql-container bash
这将允许你在容器内部执行命令。
连接到 MySQL 数据库:
在容器内,你可以通过以下命令连接到 MySQL 数据库:
mysql -u root -p
然后输入密码(你之前在 -e MYSQL_ROOT_PASSWORD 中设置的密码)。
方法 2:通过私有 Docker Registry 共享镜像
-
搭建私有 Docker Registry: 你可以在本地搭建一个私有 Docker Registry 服务器,其他服务器可以从这个 Registry 拉取镜像。
- 启动 Docker Registry:
docker run -d -p 5000:5000 --name registry registry
- 启动 Docker Registry:
-
将镜像推送到私有 Registry: 你需要将本地镜像标记为私有 Registry 的地址并推送到 Registry。假设你的 Registry 在
localhost:5000,可以按以下步骤操作:-
标记镜像:
docker tag mysql:5.7localhost:5000/mysql:5.7 -
推送镜像:
docker pushlocalhost:5000/mysql:5.7
-
-
在其他服务器上拉取镜像: 在目标服务器上,你需要首先确保能够访问你的 Registry(例如通过 IP 地址或 DNS)。然后,可以通过以下命令拉取镜像:
docker pulllocalhost:5000/mysql:5.7
方法 3:通过 Docker Hub 公共或私有仓库
如果你希望更广泛地共享镜像,你可以将镜像推送到 Docker Hub(官方 Docker 镜像仓库)或者其他公共/私有的 Docker 镜像仓库。
-
注册 Docker Hub 账户: 如果你没有 Docker Hub 账户,需要注册一个 Docker Hub 账户.
-
登录 Docker Hub:
docker login -
将镜像推送到 Docker Hub: 标记镜像并推送到 Docker Hub(例如,如果你的用户名是
yourusername):docker tag mysql:5.7yourusername/mysql:5.7 docker pushyourusername/mysql:5.7 -
在其他服务器上拉取镜像: 其他服务器只需执行以下命令即可拉取该镜像:
docker pullyourusername/mysql:5.7
总结
- 方法 1(
docker save和docker load)适用于较小范围的分享,适合离线传输。 - 方法 2(搭建私有 Registry)适合公司内部共享镜像。
- 方法 3(Docker Hub)适合更广泛的共享,尤其是需要跨多个网络的情况。
跨服务器迁移docker:
以具体的镜像 my_mysql 和容器 mysql_docker 为例,详细说明如何导出、导入以及跨服务器迁移。
1. 导出镜像 my_mysql
1.1 查看镜像
docker images
1.2 导出镜像为 tar 文件
docker save -o my_mysql.tar my_mysql:latest
这会将 my_mysql:latest 镜像保存为 my_mysql.tar 文件。
2. 导入镜像 my_mysql 到目标服务器
2.1 将 tar 文件传输到目标服务器
使用 scp 或其他工具将 my_mysql.tar 传输到目标服务器:
scp my_mysql.tar user@target_server:/path/to/destination
2.2 在目标服务器上导入镜像
docker load -i my_mysql.tar
导入后,可以使用以下命令查看镜像:
docker images
3. 导出容器 mysql_docker
3.1 查看容器
docker ps -a
3.2 导出容器为 tar 文件
docker export -o mysql_docker.tar mysql_docker
这会将容器 mysql_docker 的文件系统导出为 mysql_docker.tar 文件。
4. 导入容器 mysql_docker 到目标服务器
4.1 将 tar 文件传输到目标服务器
使用 scp 或其他工具将 mysql_docker.tar 传输到目标服务器:
scp mysql_docker.tar user@target_server:/path/to/destination
4.2 在目标服务器上导入容器
将容器的文件系统导入为一个新的镜像:
cat mysql_docker.tar | docker import - mysql_docker_image:latest
导入后,可以使用以下命令查看镜像:
docker images
4.3 运行容器
使用导入的镜像创建并运行容器:
docker run -d --name mysql_docker_new -e MYSQL_ROOT_PASSWORD=your_password mysql_docker_image:latest
如果需要映射端口或挂载数据卷,可以添加参数:
docker run -d --name mysql_docker_new -e MYSQL_ROOT_PASSWORD=your_password -p 3306:3306 -v /path/to/data:/var/lib/mysql mysql_docker_image:latest
5. 跨服务器迁移总结
镜像迁移:
导出:docker save -o my_mysql.tar my_mysql:latest
传输:scp my_mysql.tar user@target_server:/path/to/destination
导入:docker load -i my_mysql.tar
容器迁移:
导出:docker export -o mysql_docker.tar mysql_docker
传输:scp mysql_docker.tar user@target_server:/path/to/destination
导入:cat mysql_docker.tar | docker import - mysql_docker_image:latest
运行:docker run -d --name mysql_docker_new -e MYSQL_ROOT_PASSWORD=your_password mysql_docker_image:latest
注意事项:
容器导出:导出容器时,只会导出文件系统,不会包括容器的配置(如环境变量、端口映射等)。需要在导入后重新配置。
数据持久化:如果容器中有重要数据(如 MySQL 数据库文件),建议使用数据卷(Volume)或绑定挂载(Bind Mount)来持久化数据。
网络配置:如果容器需要特定的网络配置(如端口映射),在运行容器时需要重新指定。
通过以上步骤,你可以成功将镜像 my_mysql 和容器 mysql_docker 迁移到另一台服务器。
相关文章:
拉取本地的 Docker 镜像的三种方法
方法 1:通过 docker save 和 docker load 导出和导入镜像 在本地服务器上导出镜像: 使用 docker save 将镜像保存为一个 .tar 文件: docker save -o mysql-5.7.tar mysql:5.7 将镜像文件传输到其他服务器: 你可以通过 scp 或其他…...
【Linux系统】线程:线程的优点 / 缺点 / 超线程技术 / 异常 / 用途
1、线程的优点 创建和删除线程代价较小 创建一个新线程的代价要比创建一个新进程小得多,删除代价也小。这种说法主要基于以下几个方面: (1)资源共享 内存空间:每个进程都有自己独立的内存空间,包括代码段…...
老榕树的Java专题:Redis 从入门到实践
一、引言 在当今的软件开发领域,数据的高效存储和快速访问是至关重要的。Redis(Remote Dictionary Server)作为一个开源的、基于内存的数据结构存储系统,因其高性能、丰富的数据类型和广泛的应用场景,成为了众多开发者…...
123,【7】 buuctf web [极客大挑战 2019]Secret File
进入靶场 太熟悉了,有种回家的感觉 查看源代码,发现一个紫色文件 点下看看 点secret 信息被隐藏了 要么源代码,要么抓包 源代码没有,抓包 自己点击时只能看到1和3处的文件,点击1后直接跳转3,根本不出…...
微服务知识——微服务拆分规范
文章目录 一、微服务拆分规范1、高内聚、低耦合2、服务拆分正交性原则3、服务拆分层级最多三层4、服务粒度适中、演进式拆分5、避免环形依赖、双向依赖6、通用化接口设计,减少定制化设计7、接口设计需要严格保证兼容性8、将串行调用改为并行调用,或者异步…...
docker数据持久化的意义
Docker 数据持久化是指在 Docker 容器中保存的数据不会因为容器的停止、删除或重启而丢失。Docker 容器本身是临时性的,默认情况下,容器内的文件系统是临时的,容器停止或删除后,其中的数据也会随之丢失。为了确保重要数据…...
双目标定与生成深度图
基于C#联合Halcon实现双目标定整体效果 一,标定 1,标定前准备工作 (获取描述文件与获取相机参数) 针对标准标定板可以直接调用官方提供描述文件,也可以自己生成描述文件后用PS文件打印 2,相机标定 &…...
【SQL】count(1)、count() 与 count(列名) 的区别
在 SQL 中,COUNT 函数用于计算查询结果集中的行数。COUNT(1)、COUNT(*) 和 COUNT(列名) 都可以用来统计行数,但它们在实现细节和使用场景上有一些区别。以下是详细的解释: 1. COUNT(1) 定义: COUNT(1) 计算查询结果集中的行数。 实现: 在执…...
使用bucardo实现postgresql数据库双主同步
使用bucardo实现postgresql数据库双主同步 方案优缺点 优点 pg数据库只支持单向数据复制,双机部署一般只能使用主(读写)备(只读)模式。而使用bucardo能实现pg数据库双机的双主模式,支持同时双写…...
在 Navicat 17 中扩展 PostgreSQL 数据类型 | 创建自定义域
定义域 以适当的格式存储数据可以确保数据完整性,防止错误,优化性能,并通过实施验证规则和支持高效数据管理来维护系统间的一致性。基于这些原因,顶级关系数据库(如PostgreSQL)提供了多种数据类型。此外&a…...
【Apache Paimon】-- 15 -- 利用 paimon-flink-action 同步 postgresql 表数据
利用 Paimon Schema Evolution 核心特性同步变更的 postgresql 表结构和数据 1、背景信息 在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式 (1)人工消息通知,然后手动同步到数据仓库中(2)使用 flink 消费 DDL binlog ,然后自动更新 Hi…...
获取 ARM Cortex - M 系列处理器中 PRIMASK 寄存器的值
第一种实现(纯汇编形式) __ASM uint32_t __get_PRIMASK(void) {mrs r0, primaskbx lr }代码分析 __ASM 关键字:这通常是特定编译器(如 ARM GCC 等)用于嵌入汇编代码的指示符。它告诉编译器下面的代码是汇编代码。mrs …...
Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 替代】
🎀🎀Shell语法入门篇 系列篇 🎀🎀 LinuxDocer 容器化部署之 Shell 语法入门篇 【准备阶段】LinuxDocer 容器化部署之 Shell 语法入门篇 【Shell变量】LinuxDocer 容器化部署之 Shell 语法入门篇 【Shell数组与函数】LinuxDocer 容…...
如何处理网络连接错误导致的fetch失败?
处理由于网络连接错误导致的 fetch 失败通常涉及捕获网络错误并提供适当的用户反馈。以下是如何在 Vue 3 中实现这一点的步骤和示例。 一、更新 useFetch 函数 在 useFetch 函数中,需要捕获网络错误,并设置相应的错误信息。网络错误通常会抛出一个 TypeError,可以根据这个…...
PHP PDO 教程
PHP PDO 教程 概述 PHP PDO(PHP Data Objects)扩展为PHP提供了数据访问抽象层。PDO可以让你使用相同的接口访问多种数据库系统,这大大简化了数据库操作。本文将详细介绍PHP PDO的基本用法、优势以及在实际开发中的应用。 ##PDO 简介 PDO是…...
离线统信系统的python第三方库批量安装流程
一、关于UOS本机 操作系统:UOS(基于Debian的Linux发行版) CPU:海光x86 二、具体步骤 1、在联网的电脑上用控制台的pip命令批量下载指定版本的第三方库 方法A cd <目标位置的绝对路径> pip download -d . --platform many…...
IDEA+DeepSeek让Java开发起飞
1.获取DeepSeek秘钥 登录DeepSeek官网 : https://www.deepseek.com/ 进入API开放平台,第一次需要注册一个账号 进去之后需要创建一个API KEY,然后把APIkey记录保存下来 接着我们获取DeepSeek的API对话接口地址,点击左边的:接口…...
mysql的原理及经验
1. 存储引擎 存储引擎是MySQL的核心组件之一,它负责数据的存储和检索。MySQL支持多种存储引擎,每种引擎都有其独特的特点和适用场景。 InnoDB:这是MySQL的默认存储引擎,支持事务处理(ACID特性)、行级锁定和…...
苹果公司宣布正式开源 Xcode 引擎 Swift Build145
2025 年 2 月 1 日,苹果公司宣布正式开源 Xcode 引擎 Swift Build145。 Swift 是苹果公司于 2014 年推出的一种开源编程语言,用于开发 iOS、iPadOS、macOS、watchOS 和 tvOS 等平台的应用程序。 发展历程 诞生:2014 年,苹果在全球…...
怀旧经典:1200+款红白机游戏合集,Windows版一键畅玩
沉浸在怀旧的海洋中,体验经典红白机游戏的魅力!我们为您精心准备了超过1200款经典游戏的合集,每一款都是时代的印记,每一场都是回忆的旅程。这个合集不仅包含了丰富的游戏资源,还内置了多个Windows版的NES模拟器&…...
《解锁GANs黑科技:打造影视游戏的逼真3D模型》
在游戏与影视制作领域,逼真的3D模型是构建沉浸式虚拟世界的关键要素。从游戏中栩栩如生的角色形象,到影视里震撼人心的宏大场景,高品质3D模型的重要性不言而喻。随着人工智能技术的飞速发展,生成对抗网络(GANs…...
【漫话机器学习系列】083.安斯库姆四重奏(Anscombe‘s Quartet)
安斯库姆四重奏(Anscombes Quartet) 1. 什么是安斯库姆四重奏? 安斯库姆四重奏(Anscombes Quartet)是一组由统计学家弗朗西斯安斯库姆(Francis Anscombe) 在 1973 年 提出的 四组数据集。它们…...
kafka消费端之分区分配策略
文章目录 概述分区分配策略RangeAssignor分配策略RoundRobinAssignor分配策略StickyAssignor自定义分区分配策略 总结 概述 我们知道kafka的topic可以被分成多个分区,消费者在集群模式下消费时一个消费组内的每个消费者实例只能消费到一个分区的消息,那…...
e2studio开发RA2E1(9)----定时器GPT配置输入捕获
e2studio开发RA2E1.9--定时器GPT配置输入捕获 概述视频教学样品申请硬件准备参考程序源码下载选择计时器时钟源UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()printf输出重定向到串口定时器输入捕获配…...
【Elasticsearch】分桶聚合功能概述
这些聚合功能可以根据它们的作用和应用场景分为几大类,以下是分类后的结果: 1.基础聚合(Basic Aggregations) • Terms(字段聚合) 根据字段值对数据进行分组并统计。 例子:按产品类别统计销…...
开源安全一站式构建!开启企业开源治理新篇章
在如今信息技术日新月异、飞速发展的数字化时代,开源技术如同一股强劲的东风,为企业创新注入了源源不断的活力,然而,正如一枚硬币有正反两面,开源技术的广泛应用亦伴随着不容忽视的挑战。安全风险如影随形,…...
功能架构元模型
功能架构的元模型是对功能架构进行描述和建模的基础框架,它有助于统一不同团队对系统的理解,并为系统的设计和开发提供一致的标准和规范。虽然具体的元模型可能因不同的应用领域和特定需求而有所差异,但一般来说,功能架构的元模型可以涵盖以下几个方面: 组件/模块元模型:…...
Node.js 与 npm 版本兼容性问题详解:如何避免版本冲突
个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] 📱…...
鸿蒙开发中 SaveButton 按钮 保存按钮点击后权限授权失败。
原因分析 查看官方文档的解释 在 控制台中 过滤这个字段 过滤关键字"SecurityComponentCheckFail"可以获取具体原因。 得到 产生的原因 是 因为层叠的原因 savebutton 组件必须的 在屏幕的最高层 不能有任何的覆盖和遮挡 通过这样书写就解决了 // 下面是安…...
胜任力冰山模型:深入探索职业能力的多维结构
目录 1、序言 2、什么是胜任力? 3、任职资格和胜任力的区别 4、胜任力冰山模型:职场能力的多维展现 4.1、冰山水面上的部分 4.2、冰山水面下的部分 4.3、深层的个人特质与价值观 5、如何平衡任职资格与胜任能力 6、结语 1、序言 在快速发展的I…...
