【问题标题】:How to create new docker image based on existing image?如何基于现有镜像创建新的 docker 镜像?
【发布时间】:2016-08-16 22:40:27
【问题描述】:

我刚开始使用 docker。我使用 docker 文件创建了一个图像。如何从现有图像创建新图像?

【问题讨论】:

    标签: docker docker-image


    【解决方案1】:

    您可以使用 docker 命令 $docker build -f docker_filename . 创建一个新镜像,它会首先读取写入指令的 Dockerfile 并自动构建镜像。 Dockerfile 中的指令包含组装映像所需的命令。一旦图像被构建,它将被分配一个图像ID。 可以将映像推送到 docker 注册表中心。为此,用户必须在 docker 注册表中心创建一个帐户。

    Dockerfile 的示例如下所示,

    FROM docker/whalesay:latest
    RUN apt-get -y update && apt-get install -y fortunes
    CMD /usr/games/fortune -a | cowsay
    

    在这里,第一条指令告诉新图像将使用 docker/whalesay:latest 图像。 第二条指令将运行这两个命令。 第三条指令告诉当环境建立时“fortune -a”命令应该运行。

    【讨论】:

      【解决方案2】:

      假设您有一个容器bd91ca3ca3c8 正在运行,并且您想在对容器进行更改后创建一个新映像。生成另一个图像可以让您保留所做的更改。

      在这种情况下你可以运行:

      docker commit -p -a "author_here" -m "your_message" bd91ca3ca3c8 name_of_new_image

      -p 在 commit 命令构建新镜像时暂停容器。

      -a 允许您提供新图像的作者信息。

      -m 允许您像在 Git 中一样添加评论。

      【讨论】:

        【解决方案3】:

        要从现有图像创建新图像,您只需指定“FROM”,例如:

        FROM sergiu/ubuntu
        MAINTAINER sergiu
        

        【讨论】:

        • 第一行的sergiu 是什么?一个文件夹?从私有注册表中的图像构建怎么样? MAINTAINER 关键字的用途是什么?
        • @DRz 'sergiu' 只是维护者的名字,它更像是一个评论。它可以是电子邮件地址、个人或部门的名称。
        • 我只是在回答@DRz:sergiu/ 不是文件夹。它很像一些高级语言中的命名空间。它只是标记后面的内容,以避免重复名称。
        【解决方案4】:

        我也是 docker 新手,但我发现可能会有所帮助。

        1) 每当您编写“FROM”并运行 docker 文件时,docker 会查看他的 repo 并首先加载该图像。所以如果你有任何你想在“FROM”中使用的本地图像,那么它应该被加载。

        2) 你在“FROM”中给出的参数很重要,就好像你给 repo_name 或 tag 错误一样,它会给出错误消息。因此,为此运行“docker images”命令以查看您的图像正确的 repo_name 和标签。

        3) 现在您可以像这样启动新的 docker 文件了

        FROM REPOSITORY:TAG
        

        它会起作用的

        【讨论】:

          【解决方案5】:

          Docker commit:根据容器的更改创建新图像。

          将容器的文件更改或设置提交到新映像中会很有用。这允许您通过运行交互式 shell 来调试容器,或者将工作数据集导出到另一台服务器。通常,最好使用 Dockerfiles 以记录和可维护的方式管理您的图像。

          【讨论】:

            【解决方案6】:

            您可以按照以下命令为现有图像创建图像:

            docker tag jboss/wildfly myimage:v1
            

            为图片jboss/wildfly:latest创建一个名为myimage的图片,标签为v1

            【讨论】:

              猜你喜欢
              • 2021-10-27
              • 1970-01-01
              • 1970-01-01
              • 2017-04-24
              • 2019-08-03
              • 2020-01-20
              • 2015-08-25
              • 2015-07-14
              • 2017-12-31
              相关资源
              最近更新 更多