Docker提交创建的图像和ENTRYPOINT

发布于 2021-02-01 13:02:17

docker run通过进行更改时,如何确保在Dockerfile中指定的原始CMD仍设置为在其上运行docker commit

这是事件的顺序,以使其更加清楚:

  1. 使用Dockerfile创建映像
  2. -ti --entrypoint /bin/bash之后从image运行容器以进行一些更改
  3. 在容器内进行更改并运行docker commit以创建带有新标签的新图像
  4. 运行新映像时,不再运行原始Dockerfile中的原始CMD条目

所以我问 如何在已提交的映像上再次从Dockerfile重置CMD?

关注者
0
被浏览
112
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    您将创建一个Dockerfile来设置CMDor ENTRYPOINT。只需将Dockerfile基于由返回的映像ID docker commit。例如,鉴于此:

    $ docker commit $(docker ps -lq)
    69e9c08825508ec780efc86268a05ffdf4edae0999a2424dbe36cb04c2a15d6b
    

    我可以创建一个如下所示的Dockerfile:

    FROM 69e9c08825508ec780efc86268a05ffdf4edae0999a2424dbe36cb04c2a15d6b
    CMD ["/bin/bash"]
    

    然后使用它来构建新图像:

    $ docker build .
    Step 0 : FROM 69e9c08825508ec780efc86268a05ffdf4edae0999a2424dbe36cb04c2a15d6b
     ---> 69e9c0882550
    Step 1 : CMD /bin/bash
     ---> Running in f886c783551d
     ---> 13a0f8ea5cc5
    Removing intermediate container f886c783551d
    Successfully built 13a0f8ea5cc5
    

    也就是说,最好的做法可能是 不对 容器进行更改,然后使用Docker
    commit。如果仅仅依靠Dockerfile首先实现必要的更改,那么最终将产生更多可审核的更改。



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看