【问题标题】:Saving docker container after updating the container更新容器后保存 docker 容器
【发布时间】:2017-10-24 18:10:19
【问题描述】:

我是 Docker 的新手,我正在尝试创建/使用现有图像来启动我的应用程序。在阅读了几篇 stackoverflow 帖子和 Docker 文档后,我能够使用 Docker 容器启动我的应用程序。 现在我正在寻找正确的方法来保存修改后的 Docker 容器,以便我可以通过运行 docker 命令重用容器来启动我的应用程序。

我看到人们使用 $docker commit 来保存 docker 容器。如果我运行此命令,容器将保存在哪里?其他人可以下载我保存的容器吗?

我也计划将保存的 docker 容器部署到 AWS 云。

对此的任何建议或 cmet 都会有所帮助。

更新帖子 这是我用来下载和构建容器的 dockerfile

FROM tomcat:7.0.82-jre8
RUN apt-get update && apt-get -y upgrade
WORKDIR /usr/local/tomcat
COPY /app.war /usr/local/tomcat/webapps/app.war
RUN unzip /usr/local/tomcat/webapps/app.war -d /usr/local/tomcat/webapps/app
RUN apt-get update && apt-get install -y dos2unix
EXPOSE 8080
COPY tomcat-users.xml /usr/local/tomcat/conf/
COPY config1.xml /usr/local/tomcat/webapps/app/conf/
COPY config2.properties /usr/local/tomcat/webapps/app/conf/properties/
COPY config4.properties /usr/local/tomcat/webapps/app/conf/

ENV JAVA_OPTS="-Xms2G -Xmx2G"
# Copy Entrypoint script in the container
COPY ./docker-entrypoint.sh / 
RUN dos2unix /docker-entrypoint.sh && apt-get --purge remove -y dos2unix && rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["/docker-entrypoint.sh"]

【问题讨论】:

    标签: amazon-web-services docker save docker-compose


    【解决方案1】:

    If i run this command, where does the container gets saved ?

    在您的本地计算机上。只需输入docker images,您就会看到它。

    will anybody else able to download my saved container ?

    不,因为它只在您的本地计算机上。


    但这不是你应该使用 docker 的方式! 不要修改正在运行的容器!相反,写一个 Dockerfile 并通过这个 Dockerfile 构建你的镜像。

    【讨论】:

    • 好的。如何将此图像发送到不同的台式机?例如,我更新了一个容器,该容器实际上从官方的 tomcat 存储库中下载了一个图像,并且我使用 $docker commit 命令将容器保存在我的本地机器中。之后我想将此容器运送到同一网络中的不同盒子或台式机?我该怎么做?
    • 最好的方法是使用像 Docker Hub 这样的 Docker 存储库:在本地机器上执行 docker push,在远程机器上执行 docker pull。一种(丑陋的)替代方法是将您的图像导出到 .tar 文件(docker export),将此 tar 复制到您的远程计算机并导入此 tar(docker import)。
    • 我知道 Docker Hub 是您下载所有现有容器的地方。如果我执行 $docker push,它将在 Docker Hub 中可用。这是否意味着任何人都可以访问我的容器? .但我喜欢将图像导出到 tar 文件的另一种方式,我也可以在不同的框中使用相同的方式。我能知道它为什么丑吗?
    • 我已经用我用来构建容器的 dockerfile 更新了我的原始帖子
    • 您可以在 Docker Hub 上创建只有授权用户才能访问的私有仓库。 // 有关创建更小的 Docker 镜像的一些提示,请参阅这篇文章:stackoverflow.com/questions/24394243/…
    【解决方案2】:

    来自Docker Documentation

    一般来说,最好使用 Dockerfiles 来管理你的镜像 记录和可维护的方式。

    ...

    提交操作不会包含卷中包含的任何数据 安装在容器内。

    提交一个容器:

    $ docker ps
    
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS              NAMES
    c3f279d17e0a        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours                            desperate_dubinsky
    197387f1b436        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours                            focused_hamilton
    
    $ docker commit c3f279d17e0a  svendowideit/testimage:version3
    
    f5283438590d
    
    $ docker images
    
    REPOSITORY                        TAG                 ID                  CREATED             SIZE
    svendowideit/testimage            version3            f5283438590d        16 seconds ago      335.7 MB
    

    正如您在示例中看到的那样,保存的图像存储在运行docker commit的机器中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2020-11-07
      • 2020-01-13
      • 2017-09-06
      • 2023-02-13
      • 2022-01-21
      • 2021-07-22
      相关资源
      最近更新 更多