git 可以从任意的 commit 创建出来一个 branch ,那 docker pull 下来的镜像,我怎么从 history 中的任意一层创建出来镜像?
1
CEBBCAT 2022-12-15 22:28:10 +08:00 via iPhone
你做过的研究是?
|
2
dzdh 2022-12-15 23:07:04 +08:00 1
目测行不通。
假设有一层是 apt-get install nginx 你要这一层的什么?只要 nginx 的 docs 、binary 、config ?还是从第一层开始的 from ubuntu/debian/centos/.... 都要? 如果只要 nginx 的 docs/binary/config 。那下载 deb 解压 from scratch copy 就行了。 如果是从第一层开始的全部都要,那你 from 他把那一层之后的修改都删了就行了呗? |
3
dcsuibian 2022-12-15 23:52:56 +08:00 via Android 1
|
4
wunonglin 2022-12-16 04:05:38 +08:00
你的目的是什么
|
5
fqzz OP @wunonglin @dzdh
我补充一下背景,有一台机器用于打包镜像,有很多镜像基于同一个 base 打出来的,但是这个 base 没有被推到仓库里面,只把最终需要发布的镜像推上去了。所以这个机器重装后,找不到 base 镜像了。 @CEBBCAT 我也做过啥研究,看了 @dcsuibian 提到的帖子,但是这个好像依赖本地的 cache 。我这 docker history 看到一堆 missing ,不知道咋操作,比如: ``` ➜ ~ docker history mcr.microsoft.com/mssql/server:2019-CU16-ubuntu-20.04 IMAGE CREATED CREATED BY SIZE COMMENT f554c0722914 8 months ago /bin/sh -c #(nop) CMD ["/opt/mssql/bin/sqls… 0B <missing> 8 months ago /bin/sh -c #(nop) ENTRYPOINT ["/opt/mssql/b… 0B <missing> 8 months ago /bin/sh -c #(nop) USER mssql 0B <missing> 8 months ago /bin/sh -c /tmp/install.sh 225MB <missing> 8 months ago /bin/sh -c #(nop) COPY dir:acfdd267f3b0f4031… 1.34GB <missing> 8 months ago /bin/sh -c #(nop) EXPOSE 1433 0B <missing> 8 months ago /bin/sh -c #(nop) LABEL vendor=Microsoft co… 0B <missing> 8 months ago /bin/sh -c #(nop) CMD ["bash"] 0B <missing> 8 months ago /bin/sh -c #(nop) ADD file:b83df51ab7caf8a4d… 72.8MB ``` |