论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
备份容灾
›
备份
›
Linux 情况下Docker将镜像打包导出到本地,上传至内网服 ...
Linux 情况下Docker将镜像打包导出到本地,上传至内网服务器(八) ...
民工心事
金牌会员
|
2024-7-10 22:54:36
|
显示全部楼层
|
阅读模式
楼主
主题
538
|
帖子
538
|
积分
1614
背景
docker将镜像导出到本地,上传至内网服务器上
背景:在企业中往往出现了内网不能和外网相通,不能使用docker pull命令来拉取镜像,这个时间我们就可以考虑在有所需镜像的服务器上导出镜像,再将其上传到内网服务器上。
有两种方法,一种是通过容器,一种是通过镜像,其实本质是一样的,容器的实质就是镜像
参考文章一
本文重要报告的是第二种通过镜像的方式进行导出和上传
docker save用于导出镜像到文件,包罗镜像元数据和汗青信息;(个人推荐这种)
docker export用于将当前容器状态导出至文件,雷同快照,以是不包罗元数据及汗青信息,体积更小,此外从容器快照导入时也可以重新指定标签和元数据信息;
1. docker容器打包成镜像和压缩
(1)起首查看镜像所在的容器,获取到容器id
docker ps
-a
复制代码
(2)将容器生存成镜像
sudo docker commit -a 'yjw' e007d8b7e1b7 my_projectv2:v2
复制代码
sudo:以管理员权限运行命令,通常用于在 Linux 系统中运行需要管理员权限的命令。
docker:Docker 命令行工具。
commit:提交 Docker 镜像的命令。
-a:指定镜像的作者,这里是作者的名字: yjw。
e007d8b7e1b7:docker的容器id。
my_projectv2:v2:要新创建的镜像的名称和版本号,这里是新建一个名为 my_projectv2:v2的镜像,版本号为 v2。
因此,这条命令将创建一个新的 Docker 镜像,名为 my_projectv2:v2,并将它提交到 Docker 堆栈中。
(3)将镜像打包
docker save -o my_projectv2.tar my_projectv2
复制代码
docker:Docker 命令行工具。
save:将 Docker 镜像生存为文件的命令。
~
-o : 参数表示指定输出文件的路径和名称,这个路径是相对于当前工作目录的路径。如果当前工作目录是 /etc/docker,那么 my_projectv2.tar 文件会被生存到 /etc/docker/my_projectv2.tar , 如上图所示。
~
my_projectv2:v2 :要生存的 Docker 镜像的名称和版本号,这里是一个名为 my_projectv2的镜像,版本号为 v2。
(留意:我没加版本号也执行了,是因为我镜像名称是唯一的,不存在雷同的版本号,因此命令没有加:v2不会出错)
因此,这条命令将把名为 my_projectv2、版本号为 v2 的 Docker 镜像生存为一个名为 my_projectv2.tar 的文件。
(4)将镜像包压缩
sudo tar -zcvf my_projectv2.tar.gz my_projectv2.tar
复制代码
还有一种容器的打包和压缩一步到位的方法:
docker save my_projectv2:v2 | gzip > my_projectv2.tar.gz
复制代码
2. docker镜像压缩包解压及镜像载入 (移动到自己想要运行的服务器)
(1)压缩包解压
通过finalshell大概其它方式,把前面步调压缩的镜像压缩包给上传到内网服务器指令目录
(留意:我这里只是模仿步调。有什么出入请指正)
tar -zxvf mask_detection_v5.tar.gz
复制代码
得到.tar格式的镜像包
(2)镜像载入
sudo docker load -i my_projectv2.tar
复制代码
载入后利用 (比如想要修改加载的镜像,可以参阅反面的一、二、…五等步调)
sudo docker images
复制代码
查看已存在的镜像。
(3)启动镜像-运行项目
docker run -d -it -p 8888:8888 --restart always --name my_dockerv2 my_projectv2:v2
或者 (-p 8888:8888 端口号的前后书写顺序没有关系,但是建议使用第一个 )
docker run -d -it --restart always --name my_dockerv2 -p 8888:8888 my_projectv2:v2
复制代码
(4)启动镜像-项目乐成
(5)docker制止容器(制止项目)
① 先查看所有正在运行中的容器
docker ps
复制代码
② docker stop 容器id 制止容器
docker stop 2baed9f6f723
复制代码
PS:某些情况下需要强制关闭,可以使用 docker kill 容器ID
(6)再次启动容器
docker start my_dockerv2
复制代码
留意:执行启动命令后,后台运行项目情况需要花时间,因此使用IP地点访问时需要花时间等待才气够访问乐成
PS:因为docker run 属于创建新容器并运行,我只是启动已有的容器,故不使用docker run xxx。
而 docker start 命令用于启动一个已经存在的容器
参考文章二
———————————————————————————————————————————————————
一、加载镜像(已有)
在镜像目录下打开linux终端,输入如下命令:
sudo docker load -i 镜像文件名.tar
复制代码
二、运行镜像(已有)
镜像加载好之后,使用如下命令查看对应的镜像id:
sudo docker images
复制代码
然后根据镜像id将镜像运行在容器中:
docker run -it 要运行的镜像id /bin/bash
复制代码
三、对已有镜像进行修改
容器运行起来之后,就可以对镜像进行相应的修改了。
查看已安装的包:
pip list
复制代码
安装新的包:
pip install 包名
复制代码
卸载已安装的包:
pip uninstall 包名
复制代码
修改完毕后,使用如下命令退出容器:
exit
复制代码
四、将容器打包成新的镜像
起首查看镜像所在的容器,获取到容器id:
docker ps
-a
复制代码
然后将容器生存为新的镜像:
docker commit 容器id 要保存的镜像名称
复制代码
五、将新的镜像生存为tar包
起首获取到新的镜像id:
docker images
复制代码
然后将新镜像生存为tar包:
docker save 新镜像id -o 要保存的tar包名称.tar
复制代码
生存为tar包之后,就可以加载使用了。
———————————————————————————————————————————————————
参考文章三
上一篇:
Linux 情况下Docker摆设项目(七)
下一篇:
end
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
民工心事
金牌会员
这个人很懒什么都没写!
楼主热帖
Cilium系列-10-启用 IPv6 BIG TCP和启 ...
[源码阅读]-Redis核心事件流程 ...
读Java实战(第二版)笔记07_用Optiona ...
c++ container容器(string,vector,map, ...
Biwen.QuickApi代码生成器功能上线 ...
OpenGL ES google angle
Java中如何将“日期字符串”转换为java ...
Java入门11(JDBC)
二进制数的高精度运算
一文看懂java单例模式
标签云
挺好的
服务器
快速回复
返回顶部
返回列表