Docker打包镜像(三种方式)并发布到Docker Hub

项目场景:

        公司项目发生较大改动(添加表、重要文件备份、自动脚本上传),在原有的项目镜像基础下重新打包生成新的镜像,并发布到Docker Hub上,(注意:以下命令全程管理员操作,非管理员操作则在命令前自行添加sudo)


解决(三种方式):

一、基于docker容器Commit命令打包

二、基于docker快照打包镜像(export导出,import导入命令)

三、基于镜像导出导入(save导出,load导入命令)


一、基于docker容器Commit命令打包

第一步:拉项目镜像

docker pull  镜像名

第二步:基于镜像生成docker红色背景是项目的端口映射,数据卷挂载,定制化自启动和root登录权限,这里按照自己的项目需求来:

docker run -dit -p 222:22 -p 8081:8080 -p 80:80 -p 3307:3306 -p 6380:6379 -p 15673:15672 -p 22123:22122 -p 23001:23000 -v /d/usr:/home -v /c/Windows/identification:/data/identification --privileged --restart=always -h 用户名 --name=容器名 镜像名:版本号  /bin/bash  /etc/rc.d/enable

第三步:进入docker,添加或修改docker这里看需求修改:我个人添加表sql,备份文件,脚本文件迁移到docker上用到了以下指令:

1、进入docker

docker start 容器名

docker exec -it 容器名  bash

2、宿主机复制文件到docker(当然也可以用Xftp):

docker cp 文件路径 容器长ID:docker容器中的路径

3、连接数据库执行sql文件

①连接MySQL:mysql -u用户 -p密码

②选择数据库:use 数据库名;

③执行sql文件:source 脚本文件全路径(/data/xxx.sql)

第四步:docker commit命令生成副本镜像(先stop容器)

docker stop 容器名

docker commit -m "备注" -a "修改人" 容器id  镜像名:新版本号

第五步:验证副本镜像(重复第二步骤、第三步骤,查看自己的修改
第六步:docker push命令上传至Docker Hub上

docker push 镜像名:新版本号

第七步:登录Docker Hub查看自己的提交

二、基于docker快照打包镜像(export导出,import导入命令)

第一步:基于容器导出tar包这里LZ的tar包名:luntek-ic-platform3d5.tar),export命令(-o:指向导出tar文件,也可以用”>“大于号替代)

# container表示容器id或容器名
docker export [options] container

示例如下: 

# 如果容器启动的,则需要stop容器,确保在创建快照时,容器内部的状态是稳定的

docker stop  容器ID

# 使用 export 导出容器,使用的是容器 id

docker export > luntek-ic-platform3d5.tar 容器ID

或者

docker export -o luntek-ic-platform3d5.tar 容器ID 

第二步:将tar包解压导入为镜像(这里LZ的镜像名:luntek/ic-platform:3.5

 注意:推荐使用方式三,因为它更符合现代的Docker镜像管理实践。

docker import [options] file|URL|- [REPOSITORY[:TAG]]

示例如下:  

# 方式一:docker import方式在2022年的时候就已过时

docker import luntek-ic-platform3d5.tar luntek/ic-platform:3.5

# 方式二:管道方式解压

cat luntek-ic-platform3d5.tar | docker import - luntek/ic-platform:3.5

# 方式三:load加载压缩文件,然后docker tag 命令为镜像指定新的名字和版本号。

docker load -i luntek-ic-platform3d5.tar

docker tag <IMAGE_ID> luntek/ic-platform:3.5

第三步:docker上传至docker hub

sudo docker push luntek/ic-platform:3.5

三、基于镜像导出导入(save导出,load导入命令 

第一步:基于镜像(可多个镜像)中导出文件(这里LZ的文件名:luntek-ic-platform3d5.tar,镜像名:luntek/ic-platform:3.5),save命令(-o:指向导出文件,也可以用”>“大于号替代)

 注意:推荐使用方式二,因为它更符合现代的Docker镜像管理实践。

# images [images...] 可以有多个 images 镜像
docker save [options] images [images...]

示例如下:  

# 方式一:2023年8月Docker官方更新了save命令,如下已过时
docker save -o /root/luntek-ic-platform3d5.tar luntek/ic-platform:3.5

或者

docker save > /root/luntek-ic-platform3d5.tar luntek/ic-platform:3.5

# 方式二:

docker save  luntek/ic-platform:3.5 > /root/luntek-ic-platform3d5.tar

或者

docker save  镜像ID > /root/luntek-ic-platform3d5.tar

第二步:基于文件解压导入镜像(这里LZ的绝对路径文件名:/root/luntek-ic-platform3d5.tar),docker load命令(-i:指向解压导入文件,也可以用”<“小于号替代

示例如下:  

docker load -i /root/luntek-ic-platform3d5.tar

或者

docker load < /root/luntek-ic-platform3d5.tar

第三步:docker上传至docker hub

sudo docker push luntek/ic-platform:3.5


结束语:所有的痛苦都是上天给予的成长提示

  • 14
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

热心码民阿振

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

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

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

打赏作者

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

抵扣说明:

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

余额充值