linux - 如何在无法启动的 Docker 容器中创建目录?

标签 linux docker

我有一个 Docker 容器(不是镜像),当我尝试启动它时它崩溃了。 Docker 日志显示它失败了,因为 Apache2 conf 文件找不到目录(/var/www/html/log/- 这是我尝试获取 SSL 设置但在 000-default.conf 文件中引用它并重新启动 Apache 后忘记创建此目录的结果)。

如何在容器中创建此目录而无需启动容器本身?

最佳答案

我想到了 4.5 个选项:

  • 您可以在执行此操作时重建镜像并设置目录。
  • 您可以在启动镜像时附加卷,但在这种情况下,您的更改将保留在磁盘中,而不是容器中。
  • 您可以使用 --entrypoint="bash"或其他方式运行覆盖入口点的图像。您需要使用 -ti 来完成此操作标志,以便它以交互模式开始。然后进行更改并运行 docker commit -p <container> <image:tag> -p 在提交时暂停容器。我建议这样做,除非它绝对需要运行。
  • 我不确定这个是否有效,所以我给半分:P,但如果有效,这实际上将是最快的选择。您可以使用 docker start -i container 以交互模式启动容器这将连接一个终端。如果您在容器退出之前有时间或阅读该部分配置,则可以创建该文件夹。
  • 啊,最后,我刚刚想起来,您应该能够使用 docker cp [container:]<source> [container:]<destination> 将文件和文件夹从文件系统移动到容器。即使容器没有运行。

关于linux - 如何在无法启动的 Docker 容器中创建目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54468404/

相关文章:

c++ - 默认情况下使用 g++ 而不是 arm 编译器进行构建?

docker - 如何在本地安装引用为 github.com 地址的 Golang 包

linux - 无法在 CentOS 中运行 cat 命令(参数列表太长)

linux - 如何通过 docker cp 复制目录?

linux - 安装Qt 4 ubuntu 17.04

linux - SQLPlus 中的脚本后退出?

Windows 使用 --network=host 运行 docker 并使用 127.0.0.1 访问

linux - 以交互方式启动 docker 容器

php - 在 Mac OS 上设置 docker - 无法安装 php-intl

docker - 如何在单个域上为 React app + Express 设置 k8s 入口?