docker 打包镜像

docker将容器打包成镜像

我们项目中给客户交付了镜像部署tar文件,现在客户要求镜像中的某些pip包需要升级,于是使用load加载镜像,直接在容器中进行pip包的升级,最后再保存成tar文件交付。

1.docker常用命令

docker ps 查看已经启动的容器
docker ps -a 查看已经启动的容器包括stop掉的容器
docker images 查看当前拥有的镜像
docker stop 容器id 停止启动的容器
docker rm 容器的id 删除已经停止的容器
docker run -itd --name zhangsan -v /home/zhangsan/drawing_assembled/:/opt/app/ harbor.xxx.com/drawing_assembled:v0.1.14.8 bash
启动容器其中
–name 后面是启动的容器的名称可以随意命名
-v 冒号挂载目录前面是本地目录, 冒号后面是容器内的目录
bash 启动是可以直接进容器的
(注意⚠️这里有可能是/bin/bash 也有可能是sh和镜像打包的时候的设置有关)
docker exec -it xxxxxx bash 进入容器

2.将正在运行的容器打包成镜像

命令:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
options选项:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

命令是 docker commit 135a0d19f757 ai_service:1.0
完成后使用docker images可以看见该镜像
其中135a0d19f757是容器的id, 查看容器的id可以用docker ps

3.将容器保存成tar文件

命令:docker save [OPTIONS] IMAGE [IMAGE…],
示例:docker save -o ai_service.tar ai_service:1.0。这里的ai_service:1.0是你刚打包的镜像
完成后,会在当前目录生成一个tar文件。

4.tar文件的镜像加载

命令:docker load [OPTIONS]
-option选项:–input,-i 指定导入的文件
–quiet,-q 精简输出信息
示例:docker load --input ai_service.tar

5.检查文件的md5属性

md5sum ai_service.tar