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
Docker 如何正确删除以前提交的映像,以便从头开始构建它_Docker_Dockerfile - Fatal编程技术网

Docker 如何正确删除以前提交的映像,以便从头开始构建它

Docker 如何正确删除以前提交的映像,以便从头开始构建它,docker,dockerfile,Docker,Dockerfile,经过一些尝试和玩我有一个Node.JS项目,我想包。这是我的dockerfile: FROM node:latest MAINTAINER me <ma@me.me> COPY ./backend-codebase /app RUN /bin/bash -c 'cd /app; npm install' EXPOSE 80 ENV NODE_ENV=production CMD [ "sh", "-c", "cd /app; npm run start" ] 所有的东西都是构建和运

经过一些尝试和玩我有一个Node.JS项目,我想包。这是我的dockerfile:

FROM node:latest
MAINTAINER me <ma@me.me>
COPY ./backend-codebase /app
RUN /bin/bash -c 'cd /app; npm install'
EXPOSE 80
ENV NODE_ENV=production
CMD [ "sh", "-c", "cd /app; npm run start" ]
所有的东西都是构建和运行的,但是当我推动它的时候,我意识到它的尺寸对于我的小应用来说太大了。所以我试着去了解它:

Matteos-MBP-2: matteo$ docker history 98e2a25bffe7
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
98e2a25bffe7        28 seconds ago      /bin/sh -c #(nop)  CMD ["sh" "-c" "cd /app; n   0 B
9d2ee235ec5d        28 seconds ago      /bin/sh -c #(nop)  ENV NODE_ENV=production      0 B
f80a1e12748f        29 seconds ago      /bin/sh -c #(nop)  EXPOSE 80/tcp                0 B
c8353dfcd198        30 seconds ago      /bin/sh -c /bin/bash -c 'cd /app; npm install   0 B
e286e75eb2d9        40 seconds ago      /bin/sh -c #(nop) COPY dir:601eb26de2e2876ab1   18.93 MB
2e81fb2f03ab        44 seconds ago      /bin/sh -c #(nop)  MAINTAINER Me Me   0 B
7c4d899628d5        21 hours ago        /bin/sh -c #(nop)  CMD ["node"]                 0 B
<missing>           21 hours ago        /bin/sh -c curl -SLO "https://nodejs.org/dist   47.39 MB
<missing>           21 hours ago        /bin/sh -c #(nop)  ENV NODE_VERSION=7.4.0       0 B

<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV NPM_CONFIG_LOGLEVEL=in   0 B
<missing>           2 weeks ago         /bin/sh -c set -ex   && for key in     9554F0   108.3 kB
<missing>           2 weeks ago         /bin/sh -c groupadd --gid 1000 node   && user   335.1 kB
<missing>           3 weeks ago         /bin/sh -c apt-get update && apt-get install    322.6 MB
<missing>           3 weeks ago         /bin/sh -c apt-get update && apt-get install    122.6 MB
<missing>           3 weeks ago         /bin/sh -c apt-get update && apt-get install    44.31 MB
<missing>           3 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B
<missing>           3 weeks ago         /bin/sh -c #(nop) ADD file:1d214d2782eaccc743   123.1 MB
Matteos-MBP-2:matteo$docker历史98E2A25BFE7
由大小注释创建的图像
98E2A25BFE7 28秒前/bin/sh-c#(nop)CMD[“sh”“-c”“cd/app;n 0 B
9d2ee235ec5d 28秒前/bin/sh-c#(nop)ENV NODE_ENV=production 0b
f80a1e12748f 29秒前/bin/sh-c#(nop)EXPOSE 80/tcp 0 B
c8353dfcd198 30秒前/bin/sh-c/bin/bash-c'cd/app;npm安装0 B
e286e75eb2d9 40秒前/bin/sh-c#(nop)复制目录:601eb26de2e2876ab1 18.93 MB
2e81fb2f03ab 44秒前/bin/sh-c#(nop)维护者Me 0 B
7c4d899628d5 21小时前/bin/sh-c#(nop)CMD[“node”]0 B
21小时前/bin/sh-c curl-SLO“https://nodejs.org/dist   47.39 MB
21小时前/bin/sh-c#(nop)ENV NODE_VERSION=7.4.0 B
2周前/bin/sh-c#(nop)ENV NPM_CONFIG_LOGLEVEL=在0b中
2周前/bin/sh-c set-ex&用于9554F0 108.3 kB中的键
2周前/bin/sh-c groupadd--gid 1000节点和用户335.1 kB
3周前/bin/sh-c apt get update和apt get install 322.6 MB
3周前/bin/sh-c apt get update和apt get install 122.6 MB
3周前/bin/sh-c apt get update和apt get install 44.31 MB
3周前/bin/sh-c#(nop)CMD[“/bin/bash”]0b
3周前/bin/sh-c#(nop)添加文件:1D214D2782EACC743 123.1 MB

这里是:一些以前的提交仍然存在,这与docker在我仍然使用它时产生的一些旧提交有关(参见apt GET?)。当我推它时,它尝试以某种方式推它,尽管它说“丢失”在outpus中,我删除了它们。如何在构建它之前清理石板,以便重新开始并基于node:latest进行下一次提交?谢谢你你的
docker rmi
可能有错误。
-f
需要出现在你要删除的图像id之前:

docker rmi -f $(docker images -q)
也就是说,您的历史记录看起来非常好。您用来构建容器的源图像不会被重建,而是会被提取,并且将具有上一次构建时的历史记录,即数小时或数周前的历史记录


从下面的评论来看,似乎有人不相信7c4d899628d5下面的所有层都来自节点映像。下面是对我自己的本地环境的测试:

$ docker pull node:latest
latest: Pulling from library/node
75a822cd7888: Already exists
57de64c72267: Already exists
4306be1e8943: Already exists
871436ab7225: Pull complete
0110c26a367a: Pull complete
1f04fe713f1b: Pull complete
723bac39028e: Pull complete
Digest: sha256:08d77f1984cf79739ba7c987636cb871fd69745754200e5891a0c7ee2d9965b0
Status: Downloaded newer image for node:latest

$ docker history node:latest
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
7c4d899628d5        23 hours ago        /bin/sh -c #(nop)  CMD ["node"]                 0 B
<missing>           23 hours ago        /bin/sh -c curl -SLO "https://nodejs.org/dist   47.39 MB
<missing>           23 hours ago        /bin/sh -c #(nop)  ENV NODE_VERSION=7.4.0       0 B
<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV NPM_CONFIG_LOGLEVEL=in   0 B
<missing>           2 weeks ago         /bin/sh -c set -ex   && for key in     9554F0   108.3 kB
<missing>           2 weeks ago         /bin/sh -c groupadd --gid 1000 node   && user   335.1 kB
<missing>           3 weeks ago         /bin/sh -c apt-get update && apt-get install    322.6 MB
<missing>           3 weeks ago         /bin/sh -c apt-get update && apt-get install    122.6 MB
<missing>           3 weeks ago         /bin/sh -c apt-get update && apt-get install    44.31 MB
<missing>           3 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B
<missing>           3 weeks ago         /bin/sh -c #(nop) ADD file:1d214d2782eaccc743   123.1 MB
$docker拉节点:最新版本
最新版本:从库/节点拉取
75a822cd7888:已存在
57de64c72267:已存在
4306be1e8943:已存在
871436ab7225:拉动完成
011026A367A:拉动完成
1f04fe713f1b:拉动完成
723bac39028e:拉动完成
摘要:sha256:08D77F1984CF79739BA7C987636CB871FD6974754200E58910C7EE2D9965B0
状态:已下载节点的较新映像:最新
$docker历史记录节点:最新
由大小注释创建的图像
7c4d899628d5 23小时前/bin/sh-c#(nop)CMD[“node”]0 B
23小时前/bin/sh-c curl-SLO“https://nodejs.org/dist   47.39 MB
23小时前/bin/sh-c#(nop)ENV NODE_VERSION=7.4.0 B
2周前/bin/sh-c#(nop)ENV NPM_CONFIG_LOGLEVEL=在0b中
2周前/bin/sh-c set-ex&用于9554F0 108.3 kB中的键
2周前/bin/sh-c groupadd--gid 1000节点和用户335.1 kB
3周前/bin/sh-c apt get update和apt get install 322.6 MB
3周前/bin/sh-c apt get update和apt get install 122.6 MB
3周前/bin/sh-c apt get update和apt get install 44.31 MB
3周前/bin/sh-c#(nop)CMD[“/bin/bash”]0b
3周前/bin/sh-c#(nop)添加文件:1D214D2782EACC743 123.1 MB

您的
docker rmi
可能有错误。
-f
需要在要删除的图像id之前出现:

docker rmi -f $(docker images -q)
也就是说,您的历史记录看起来非常好。您用来构建容器的源图像不会被重建,而是会被提取,并且将具有上一次构建时的历史记录,即数小时或数周前的历史记录


从下面的评论来看,似乎有人不相信7c4d899628d5下面的所有层都来自节点映像。下面是对我自己的本地环境的测试:

$ docker pull node:latest
latest: Pulling from library/node
75a822cd7888: Already exists
57de64c72267: Already exists
4306be1e8943: Already exists
871436ab7225: Pull complete
0110c26a367a: Pull complete
1f04fe713f1b: Pull complete
723bac39028e: Pull complete
Digest: sha256:08d77f1984cf79739ba7c987636cb871fd69745754200e5891a0c7ee2d9965b0
Status: Downloaded newer image for node:latest

$ docker history node:latest
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
7c4d899628d5        23 hours ago        /bin/sh -c #(nop)  CMD ["node"]                 0 B
<missing>           23 hours ago        /bin/sh -c curl -SLO "https://nodejs.org/dist   47.39 MB
<missing>           23 hours ago        /bin/sh -c #(nop)  ENV NODE_VERSION=7.4.0       0 B
<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV NPM_CONFIG_LOGLEVEL=in   0 B
<missing>           2 weeks ago         /bin/sh -c set -ex   && for key in     9554F0   108.3 kB
<missing>           2 weeks ago         /bin/sh -c groupadd --gid 1000 node   && user   335.1 kB
<missing>           3 weeks ago         /bin/sh -c apt-get update && apt-get install    322.6 MB
<missing>           3 weeks ago         /bin/sh -c apt-get update && apt-get install    122.6 MB
<missing>           3 weeks ago         /bin/sh -c apt-get update && apt-get install    44.31 MB
<missing>           3 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B
<missing>           3 weeks ago         /bin/sh -c #(nop) ADD file:1d214d2782eaccc743   123.1 MB
$docker拉节点:最新版本
最新版本:从库/节点拉取
75a822cd7888:已存在
57de64c72267:已存在
4306be1e8943:已存在
871436ab7225:拉动完成
011026A367A:拉动完成
1f04fe713f1b:拉动完成
723bac39028e:拉动完成
摘要:sha256:08D77F1984CF79739BA7C987636CB871FD6974754200E58910C7EE2D9965B0
状态:已下载节点的较新映像:最新
$docker历史记录节点:最新
由大小注释创建的图像
7c4d899628d5 23小时前/bin/sh-c#(nop)CMD[“node”]0 B
23小时前/bin/sh-c curl-SLO“https://nodejs.org/dist   47.39 MB
23小时前/bin/sh-c#(nop)ENV NODE_VERSION=7.4.0 B
2周前/bin/sh-c#(nop)ENV NPM_CONFIG_LOGLEVEL=在0b中
2周前/bin/sh-c set-ex&用于9554F0 108.3 kB中的键
2周