Docker将容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库

Docker将容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库

何海龙
2024-02-16 / 0 评论 / 127 阅读 / 正在检测是否收录...

X5OXpng

前言

工作中遇到三方闭源的中间件运行起来某项特性不符合需求,但是镜像提供方偏偏又没有将配置文件挂载出来以供修改,这就导致要使软件符合需求地运行只能进入到容器内部修改配置文件后重启,可谓非常之蛋疼。笔者平时对 Docker 接触不多,好在有同事提到 Docker 支持将运行中的容器重新打包为镜像,于是网上搜索资料,大致整理出以下步骤解决上面的问题,故有本文聊作记录,本文就以CentOS7作为演示。

一、容器保存为镜像

1.Docker 提供了 commit 命令支持将容器重新打成镜像文件,其命令格式如下所示:

命令:

docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]

命令行说明:

-a :提交的镜像作者
-c :使用Dockerfile指令来创建镜像
-m :提交时的说明文字
-p :在commit时,将容器暂停
容器名称|容器ID :当前要被打包的容器名称或容器ID
生成的镜像名[:标签名] :指定镜像名称或标签名称
2. 创建测试容器

创建并启动容器:

#拉取镜像
docker pull centos:7

#启动CentOS镜像
docker run --name centos7 --privileged -d --ulimit memlock=-1 -td centos:7 /usr/sbin/init

命令行说明:

--name "centos7" :容器名字
-i :以交互模式运行容器,通常与 -t 同时使用
-t :启动容器后,为容器分配一个命令行,通常与 -i 同时使用
-v :目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录>
-d :守护进程,后台运行该容器
-p :指定端口映射,格式:主机(宿主)端口:容器端口
-P :随机端口映射,容器内部端口随机映射到主机的端口

进入容器:

#进入Docker容器命令:
docker exec -it centos7 /bin/bash

XDklpng

在容器中随便增加一些文件作为测试:

XEv7png

3.将该容器打包成镜像

退出容器

9w4epng

执行打包命令(镜像名必须要全部小写,否则将不能打包)

docker commit -m thisthetextcentos -a hehailong centos7 textcentos7:1.0

命令行说明:

docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]

-m= : 为镜像添加描述信息
-a= : 为镜像添加创建者信息
容器名称|容器ID : 当前要被打包的容器名称或容器ID
生成的镜像名[:标签名] : 指定镜像名称或标签名称

9lNspng

查看镜像列表:

#docker查看镜像命令
docker images

9zl8png

4.运行容器
将打包的镜像在本机Docker验证打包成镜像是否成功:

运行容器:

docker run -it textcentos7:1.0 /bin/bash

XZaNpng

二、将镜像备份成.tar文件

1.备份

命令:

docker save -o 保存的PathName 镜像名:标签

将镜像打包,并保存在当前目录下:

#打包备份textcentos7镜像,备份镜像名为mydockercentos.tar
docker save -o ./mydockercentos.tar textcentos7

9tudpng

2.从.tar文件恢复成Docker镜像

先删除原有的textcentos:1.0镜像:

X8Szpng

恢复镜像:

#恢复mydockercentos.tar镜像备份文件
docker load -i mydockercentos.tar

XXFPpng

命令行解释:

docker load -i :指定导出的文件。
docker load -q  :精简输出信息。

三、上传到阿里云仓库

1.阿里云控制台

进入阿里云控制台,找到容器镜像服务,并点击进去。初次进入需要设置远程仓库密码:

Xgx1png

XkMVpng

XLvFpng

XQumpng

XGkrpng

Xhlopng

2.将镜像提交到阿里云

查看上图阿里云基本信息中的操作指南:

XOYGpng

Docker tag的目的是:标记此镜像为阿里云仓库的镜像:

Xdlppng

3.从云仓库拉取镜像

先删除原有镜像:

XWVBpng

拉取镜像:

XNxapng

运行镜像(另一台docker主机测试,完美部署):

XYREpng

参考文献

Docker 使用-将容器打成镜像_docker将容器打包成镜像-CSDN博客

Docker容器打包成镜像-【如何使用Docker将容器打包成镜像】_CSDN博客

Docker将容器打包成镜像并传输至其他服务器部署(可用于容器重新run) - 007少侠 - 博客园 (cnblogs.com)

0

评论

博主关闭了所有页面的评论