【问题标题】:Stopping and running Docker container doesn't update停止和运行 Docker 容器不会更新
【发布时间】:2020-09-11 23:11:44
【问题描述】:

我正在努力学习 Docker。也许我把它复杂化了。我已经用 Nginx 构建了一个 Docker 容器,并且正在尝试构建一个静态 HTML 网站。我最初只将 Hello World 放在我的 HTML 文件中并运行容器。它只是在浏览器中找到。然后我停止了容器并在 html 文件中添加了很多内容。但是,当我启动容器备份时,什么都没有改变,Hello World 是唯一显示在浏览器中的东西。我想我不明白为什么它没有随着我的 HTML 而改变。任何帮助将不胜感激。

我正在停止容器: $ docker stop web

我开始备份: $ docker run -it --rm -d -p 8080:80 --name web webserver

当我停止它并且 docker ps 它不显示时

另外,使用 docker restart 似乎并没有真正做任何事情

【问题讨论】:

    标签: html docker nginx containers


    【解决方案1】:

    Docker 容器是不可变的,专门用于运行单个特定进程。应该构建并运行映像,并且您不应更改容器的内容。

    因此,在生产的最佳实践中,您将基于图像创建一个新容器,并附上您的代码/更新。

    虽然我知道有一些用例可以修改正在运行的容器,但这很大程度上取决于您使用的映像以及生成的容器处理实时更改的能力(是否缓存?)。

    【讨论】:

      【解决方案2】:

      您在哪里修改了 HTML 文件?容器内的 HTML 文件似乎没有更新。

      docker ps 命令只显示正在运行的容器。您可以使用docker ps -a 查看所有容器,包括已停止的容器。

      【讨论】:

        【解决方案3】:

        一旦构建了 dockerfile,它的包含就不再可变了。 因此,您可以采取其他一些途径来实现您的目标。

        1. 您可以重建映像并重新运行它。 (也许是投入生产的最佳案例)
        2. 您可以构建映像以执行在 docker run 上动态绑定的文件。

        遵循第二条路径:

        1. 写一个图像来执行你的 ./index.html 而不把它复制到 dockerfile 上。
        2. docker run -it -v <HTML_LOCAL_PATH>:<HTML_CONTAINER> --rm -d -p 8080:80 --name web webserver

        【讨论】:

          【解决方案4】:

          这通常发生在 Docker 容器不知道您在容器外的何处进行更改时。容器中的代码是您项目中代码的副本,而不是代码本身。因此,您必须以某种方式告诉 Docker“这是我的代码库,我希望您将其复制到您的容器中”。为此,您使用volumes。我使用 Docker-compose 执行此操作并像这样指定卷:

              volumes:
                - .:/usr/src/service
              working_dir: /usr/src/service
          

          . 点表示您的工作目录,而 : 另一侧的内容是您的工作目录被复制到的位置 - 在这种情况下,/usr/src/service 是 Docker 保存其容器化服务的位置(在 unix 系统(Mac、 Linux),至少,我不确定这是否适用于 Windows)。

          working_dir 命令告诉 Docker 监听容器内服务目录中发生的内容的更改。

          如果您现在运行您的应用并进行更改,并且在工作目录中运行 Nodemon 等实时服务器类型的服务,它通常会获取这些更改并显示您编辑的 html 内容。

          如果您对 Dockerfile、package.json 或其他“构建文件”进行了更改,则必须运行 docker-compose up --build 才能将这些更改放入容器中。如果您只是更改常规源代码,则仅运行 docker-compose up

          【讨论】:

            猜你喜欢
            • 2019-11-01
            • 1970-01-01
            • 1970-01-01
            • 2022-12-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-24
            • 2020-06-01
            相关资源
            最近更新 更多