当前位置: 首页 > 知识库问答 >
问题:

如何将卷添加到现有的Docker容器中?

梁宏才
2023-03-14

我创建了一个Docker容器,只需在Ubuntu上安装Docker并执行以下操作:

sudo docker run -i -t ubuntu /bin/bash

我立即开始安装Java和一些其他工具,花了一些时间与它,并停止了容器通过

exit

然后我想增加一个卷,并意识到这并不像我想的那样简单。如果我使用sudo docker-v/somedir run...,那么我最终会得到一个新的容器,因此我必须安装Java并执行之前已经执行的操作,只需要到达一个具有已装入卷的容器。

所有关于从主机装入文件夹的文档似乎都暗示装入卷是创建容器时可以完成的事情。因此,避免从头重新配置新容器的唯一选择是将现有容器提交到存储库中,并在安装卷的同时将其作为新容器的基础。

这确实是向现有容器添加卷的唯一方法吗?

共有1个答案

景宏朗
2023-03-14

您可以提交现有的容器(即根据容器的更改创建一个新的映像),然后使用新的挂载来运行它。

示例:

$ docker ps  -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS                          PORTS               NAMES
    5a8f89adeead        ubuntu:14.04          "/bin/bash"              About a minute ago   Exited (0) About a minute ago                       agitated_newton

$ docker commit 5a8f89adeead newimagename

$ docker run -ti -v "$PWD/somedir":/somedir newimagename /bin/bash

如果一切正常,停止你的旧容器,并使用这个新的。

就是这样:)

 类似资料:
  • 问题内容: 我有一个Docker容器,它是通过在Ubuntu上安装Docker并执行以下操作而创建的: 我立即开始安装Java和其他一些工具,花了一些时间并通过以下方式停止了该容器 然后,我想添加一个卷,并意识到这并不像我想象的那样简单。如果我使用了,那么我将得到一个全新的容器,因此我将安装Java并做我已经做过的事情,然后再到达一个具有已安装卷的容器。 有关从主机安装文件夹的所有文档似乎都暗示了

  • 我有一个Sinatra应用程序,在Docker中运行良好: 但是当我尝试添加Redis时: Redis似乎没有启动。 那么,将Redis添加到Ruby()Docker容器中的好方法是什么呢?

  • 问题内容: 我有一个运行着某些进程(uwsgi和celery)的docker容器。我想为这些进程以及它们都属于的工作组创建一个celery用户和uwsgi用户,以便分配权限。 我尝试将和添加到我的Dockerfile中,但这会引起问题,因为这些命令会提示您输入(我已在下面的构建中发布了响应)。 将用户添加到Docker容器以便为在该容器中运行的工作人员设置权限的最佳方法是什么? 我的Docker映

  • 我使用命令在我的macOS Big Sur上运行带有Ubuntu Xenial映像的docker容器,它工作正常,给我一个Linux的终端。 然而,我想将一个卷附加到我的容器中,这样我就可以将我在ubuntu终端中所做的工作保存在Mac文件系统的容器中。为此,我尝试运行以下命令: sudo docker run-it ubuntu:xenial-v/Users/myname/Documents/U

  • 本文向大家介绍Docker 将容器添加到网络,包括了Docker 将容器添加到网络的使用技巧和注意事项,需要的朋友参考一下 示例 此命令将myAwesomeApp-1容器连接到app-backend网络。将容器添加到用户定义的网络时,嵌入式DNS解析器(它不是功能齐全的DNS服务器,并且不可导出)允许网络上的每个容器解析同一网络上的其他容器。此简单的DNS解析器在默认网桥bridge网络上不可用。

  • 在部署时,我面临一个“CrashLoopBackoff”错误。Net核心API和