目录
背景
开发中,有时候不想通过Dockerfile重新构建镜像(如:构建所需文件暂时找不到;又或者制造开发基础镜像减少打包时间),想直接通过修改原有镜像来完成更新;
这时候给镜像打补丁就很重要了。
Docker commit
docker commit 命令:用于将一个镜像进行提交成一个新的副本
# docker commit -m="comment content etc" -a="author name" <container-id> <image-name>:<tag>
例子:
docker commit -m="add basic dependency" -a="leo song" 39eaa5aa7332 python:3.10.0-dev
例如:我想更新init.sql脚本到基础镜像my-app:latest
Step1: 启动镜像
docker run --name myapp -d my-app:latest
Step2::修改init.sql
这里我通过docker cp命令来操作:
docker cp /app/test/init.sql c:/app/init.sql
Tip:很多基础镜像是不存在vi或者vim命令的,想要使用需要在容器中安装:
apt-get install vim
但我没有使用这种方式,因为安装vim在给镜像打补丁时将产生额外的内容,我使用在宿主机修改内容之后,复制到容器内的方式;这就是我为什么使用docker cp命令了。
Step3: 提交改动到镜像
docker commit -m="modify sql script" -a="leo song" myapp myapp:latest
这样,当下次运行myapp:latest镜像的时候,你会发现里边init.sql已经更改;
### 重启查看内容是否更改
docker rm -f myapp
docker run --name myapp -d my-app:latest
docker exec -it myapp /bin/bash
cat init.sql
END...