Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式从Dockerfile中删除与docker build关联的docker映像_Docker_Dockerfile - Fatal编程技术网

以编程方式从Dockerfile中删除与docker build关联的docker映像

以编程方式从Dockerfile中删除与docker build关联的docker映像,docker,dockerfile,Docker,Dockerfile,作为自动生成的一部分,我正在生成docker映像,我希望删除我创建的映像以及与生成映像相关的任何后续映像 我可以通过指定名称和标记轻松删除构建的映像(因为我可以通过变量获取这些数据)。但是如何删除Dockerfile拉入的任何其他图像?(特别是使用FROM关键字,因为在一个Dockerfile中可以有多个FROM调用) 例如,我有一个图像,它在Dockerfile中引入了python:2.7.16-alpine。如果我一开始在系统上没有映像,运行docker build-f path/to/Do

作为自动生成的一部分,我正在生成docker映像,我希望删除我创建的映像以及与生成映像相关的任何后续映像

我可以通过指定名称和标记轻松删除构建的映像(因为我可以通过变量获取这些数据)。但是如何删除Dockerfile拉入的任何其他图像?(特别是使用
FROM
关键字,因为在一个Dockerfile中可以有多个
FROM
调用)

例如,我有一个图像,它在Dockerfile中引入了
python:2.7.16-alpine
。如果我一开始在系统上没有映像,运行
docker build-f path/to/Dockerfile
会留下两个映像:
生成的docker映像:tag
python:2.7.16-alpine


假设进程运行在一个系统上,该系统上可能有我不想删除的其他docker映像,那么如何以编程方式仅删除我的映像及其关联映像?

我认为您可以使用
docker history
(显示映像的历史记录)查找与最终映像相关的所有映像。我想告诉您,此解决方案不适用于多阶段构建,因为最终图像仅引用作为其基础层的图像

让我举几个例子:

1.我们创建了一个简单的
Dockerfile

FROM ubuntu:latest
RUN touch newfile
2.我们从中构建docker形象:

$ docker build -t new-image .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM ubuntu:latest
latest: Pulling from library/ubuntu
898c46f3b1a1: Pull complete
63366dfa0a50: Pull complete
041d4cd74a92: Pull complete
6e1bee0f8701: Pull complete
Digest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
Status: Downloaded newer image for ubuntu:latest
 ---> 94e814e2efa8
Step 2/2 : RUN touch newfile
 ---> Running in ac93702f363b
Removing intermediate container ac93702f363b
 ---> 4d52ac122761
Successfully built 4d52ac122761
Successfully tagged new-image:latest
3.现在我们可以清理用于构建最终图像的所有图像:

$ docker history new-image:latest | awk '!/IMAGE|<missing>/ {print $1}' | xargs -I {} docker rmi {}
Untagged: new-image:latest
Deleted: sha256:4d52ac122761ec1ba9f3d77606c49f98cf8c7d728d60834a87f25cede39a2027
Deleted: sha256:7f62b9533dbd6514fe0cb7f4ddc3086ad5ae45fe1c13f5eeea1cc38f575e92bd
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
Deleted: sha256:94e814e2efa8845d95b2112d54497fbad173e45121ce9255b93401392f538499
Deleted: sha256:e783d8ee44ce099d51cbe699f699a04e43c9af445d85d8576f0172ba92e4e16c
Deleted: sha256:cc7fae10c2d465c5e4b95167987eaa53ae01a13df6894493efc5b28b95c1bba2
Deleted: sha256:99fc3504db138523ca958c0c1887dd5e8b59f8104fbd6fd4eed485c3e25d2446
Deleted: sha256:762d8e1a60542b83df67c13ec0d75517e5104dee84d8aa7fe5401113f89854d9
$docker history新图像:最新| awk'/图像|/{print$1}'| xargs-I{}docker rmi{}
未标记:新图像:最新
已删除:sha256:4D52AC122761EC1BA9F3D77606C49F98CF8C7D728D60834A87F25CED39A2027
已删除:sha256:7F62B9533DBD6514FE0CB7F4DDC3086AD5AE45FE1C13F5EEA1CC38F575E92BD
未标记:ubuntu:最新版本
未标记:ubuntu@sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
已删除:sha256:94e814e2efa8845d95b2112d54497fbad173e45121ce9255b93401392f538499
已删除:sha256:E783D8EE44CE099D51CBE699A04E43C9AF445D85D8576F0172BA92E4E16C
已删除:sha256:CC7FAE10C2D465C5E4B95167987EAA53AE0113DF6894493EFC5B28B95C1BBA2
已删除:sha256:99fc3504db138523ca958c0c1887dd5e8b59f8104fbd6fd4eed485c3e25d2446
已删除:sha256:762d8e1a60542b83df67c13ec0d75517e5104dee84d8aa7fe5401113f89854d9

我认为您可以使用
docker history
(显示图像的历史记录)查找与最终图像相关的所有图像。我想告诉您,此解决方案不适用于多阶段构建,因为最终图像仅引用作为其基础层的图像

让我举几个例子:

1.我们创建了一个简单的
Dockerfile

FROM ubuntu:latest
RUN touch newfile
2.我们从中构建docker形象:

$ docker build -t new-image .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM ubuntu:latest
latest: Pulling from library/ubuntu
898c46f3b1a1: Pull complete
63366dfa0a50: Pull complete
041d4cd74a92: Pull complete
6e1bee0f8701: Pull complete
Digest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
Status: Downloaded newer image for ubuntu:latest
 ---> 94e814e2efa8
Step 2/2 : RUN touch newfile
 ---> Running in ac93702f363b
Removing intermediate container ac93702f363b
 ---> 4d52ac122761
Successfully built 4d52ac122761
Successfully tagged new-image:latest
3.现在我们可以清理用于构建最终图像的所有图像:

$ docker history new-image:latest | awk '!/IMAGE|<missing>/ {print $1}' | xargs -I {} docker rmi {}
Untagged: new-image:latest
Deleted: sha256:4d52ac122761ec1ba9f3d77606c49f98cf8c7d728d60834a87f25cede39a2027
Deleted: sha256:7f62b9533dbd6514fe0cb7f4ddc3086ad5ae45fe1c13f5eeea1cc38f575e92bd
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
Deleted: sha256:94e814e2efa8845d95b2112d54497fbad173e45121ce9255b93401392f538499
Deleted: sha256:e783d8ee44ce099d51cbe699f699a04e43c9af445d85d8576f0172ba92e4e16c
Deleted: sha256:cc7fae10c2d465c5e4b95167987eaa53ae01a13df6894493efc5b28b95c1bba2
Deleted: sha256:99fc3504db138523ca958c0c1887dd5e8b59f8104fbd6fd4eed485c3e25d2446
Deleted: sha256:762d8e1a60542b83df67c13ec0d75517e5104dee84d8aa7fe5401113f89854d9
$docker history新图像:最新| awk'/图像|/{print$1}'| xargs-I{}docker rmi{}
未标记:新图像:最新
已删除:sha256:4D52AC122761EC1BA9F3D77606C49F98CF8C7D728D60834A87F25CED39A2027
已删除:sha256:7F62B9533DBD6514FE0CB7F4DDC3086AD5AE45FE1C13F5EEA1CC38F575E92BD
未标记:ubuntu:最新版本
未标记:ubuntu@sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
已删除:sha256:94e814e2efa8845d95b2112d54497fbad173e45121ce9255b93401392f538499
已删除:sha256:E783D8EE44CE099D51CBE699A04E43C9AF445D85D8576F0172BA92E4E16C
已删除:sha256:CC7FAE10C2D465C5E4B95167987EAA53AE0113DF6894493EFC5B28B95C1BBA2
已删除:sha256:99fc3504db138523ca958c0c1887dd5e8b59f8104fbd6fd4eed485c3e25d2446
已删除:sha256:762d8e1a60542b83df67c13ec0d75517e5104dee84d8aa7fe5401113f89854d9