我是第一次尝试Docker,还没有一个“心理模型”。完全是初学者。我看到的所有示例都包含要运行的--rm标志,例如
--rm
docker run -it --rm ... docker container run -it --rm ...
问题:
为什么这些命令包含--rm标志?我会想,如果我要经历设置或下载一个容器的麻烦,其中的好东西,为什么要删除它?我想保留它再次使用。所以我知道我对多克的看法是错误的。
wpx232ag1#
容器只是你用来运行它们的映像的一个示例,创建容器化应用程序时的心态并不是拿一个全新的、干净的ubuntu容器为例,下载你想要的应用程序和配置,然后让它运行。您应该将容器视为应用程序的一个示例,但您的应用程序是嵌入到映像中的。正确的用法是创建一个自定义映像,您可以在其中将所有文件、配置、环境变量等嵌入到映像中。了解更多关于Dockerfile的信息以及如何实现here这样做之后,您就拥有了一个包含所有内容的映像,为了使用您的应用程序,您只需使用docker run <your-image>,通过适当的端口设置或其他动态变量来运行该映像运行带有--rm标志的容器对于那些你使用很短时间只是为了完成某件事的容器是很好的,例如,在容器内编译你的应用程序,或者只是测试它工作的东西,然后你知道它是一个短命的容器,你告诉你的Docker守护进程,一旦它完成运行,擦除与它相关的一切并节省磁盘空间。
docker run <your-image>
sr4lhrrt2#
当您需要在容器的任务完成后删除容器时,使用标志--rm。这适用于小型测试或POC目的,省去了内务管理的麻烦。
gkn4icbw3#
来自https://docs.docker.com/engine/reference/run/#clean-up---rm默认情况下,容器的文件系统即使在容器退出后仍然存在。(因为你可以检查最终状态),默认情况下你会保留所有的数据。但是如果你正在运行短期前台进程,这些容器文件系统可能会堆积起来。如果你希望Docker在容器退出时自动清理容器并删除文件系统,可以添加--rm标志简而言之,保持主机上没有已停止和未使用的容器非常有用。
csbfibhn4#
当你使用一个简单的命令(docker run -it ubuntu)从一个映像运行一个容器时,它会自动生成一个容器。你可以使用docker attach container-name(或者对于不同的会话使用exec)连接到你的容器。因此,当你在容器中工作时,你键入exit或ctrl+z或其他任何方法,而不是ctrl+p+q,你的容器就会退出。这意味着你的容器已经停止,但它仍然在你的磁盘上可用,你可以用以下命令重新启动它:docker start container-name/ID。但是,当您运行带有—rm标记的容器时,在退出时,该容器将被永久删除。
docker run -it ubuntu
docker attach container-name
exec
exit
ctrl+z
ctrl+p+q
docker start container-name/ID
—rm
mtb9vblg5#
我在连接到运行中的容器时使用--rm来执行一些操作,如数据库备份或文件复制。docker run -v $(pwd):/mnt --link app_postgres_1:pg --rm postgres:9.5 pg_dump -U postgres -h pg -f /mnt/docker_pg.dump1 app_db以上命令将连接一个名为“app_postgres_1”的正在运行的容器并创建一个备份。备份命令完成后,该容器将被完全删除。
docker run -v $(pwd):/mnt --link app_postgres_1:pg --rm postgres:9.5 pg_dump -U postgres -h pg -f /mnt/docker_pg.dump1 app_db
pieyvz9o6#
“docker run rm“命令让我们运行一个新的容器,稍后当我们的工作完成后,通过节省磁盘空间将其删除。需要注意的重要一点是,容器就像一个类示例,而不是用于数据存储。我们最好在工作完成后删除它们。当我们重新开始时,它会重新开始。问题来了,如果容器被删除,那么容器中的数据怎么办?数据实际上保存在本地系统中,并在容器启动时链接到它。这个概念被命名为“卷或共享卷”。
6条答案
按热度按时间wpx232ag1#
容器只是你用来运行它们的映像的一个示例,创建容器化应用程序时的心态并不是拿一个全新的、干净的ubuntu容器为例,下载你想要的应用程序和配置,然后让它运行。
您应该将容器视为应用程序的一个示例,但您的应用程序是嵌入到映像中的。正确的用法是创建一个自定义映像,您可以在其中将所有文件、配置、环境变量等嵌入到映像中。了解更多关于Dockerfile的信息以及如何实现here
这样做之后,您就拥有了一个包含所有内容的映像,为了使用您的应用程序,您只需使用
docker run <your-image>
,通过适当的端口设置或其他动态变量来运行该映像运行带有
--rm
标志的容器对于那些你使用很短时间只是为了完成某件事的容器是很好的,例如,在容器内编译你的应用程序,或者只是测试它工作的东西,然后你知道它是一个短命的容器,你告诉你的Docker守护进程,一旦它完成运行,擦除与它相关的一切并节省磁盘空间。sr4lhrrt2#
当您需要在容器的任务完成后删除容器时,使用标志
--rm
。这适用于小型测试或POC目的,省去了内务管理的麻烦。
gkn4icbw3#
来自https://docs.docker.com/engine/reference/run/#clean-up---rm
默认情况下,容器的文件系统即使在容器退出后仍然存在。(因为你可以检查最终状态),默认情况下你会保留所有的数据。但是如果你正在运行短期前台进程,这些容器文件系统可能会堆积起来。如果你希望Docker在容器退出时自动清理容器并删除文件系统,可以添加
--rm
标志简而言之,保持主机上没有已停止和未使用的容器非常有用。
csbfibhn4#
当你使用一个简单的命令(
docker run -it ubuntu
)从一个映像运行一个容器时,它会自动生成一个容器。你可以使用docker attach container-name
(或者对于不同的会话使用exec
)连接到你的容器。因此,当你在容器中工作时,你键入
exit
或ctrl+z
或其他任何方法,而不是ctrl+p+q
,你的容器就会退出。这意味着你的容器已经停止,但它仍然在你的磁盘上可用,你可以用以下命令重新启动它:docker start container-name/ID
。但是,当您运行带有—rm
标记的容器时,在退出时,该容器将被永久删除。mtb9vblg5#
我在连接到运行中的容器时使用
--rm
来执行一些操作,如数据库备份或文件复制。docker run -v $(pwd):/mnt --link app_postgres_1:pg --rm postgres:9.5 pg_dump -U postgres -h pg -f /mnt/docker_pg.dump1 app_db
以上命令将连接一个名为“app_postgres_1”的正在运行的容器并创建一个备份。备份命令完成后,该容器将被完全删除。
pieyvz9o6#
“docker run rm“命令让我们运行一个新的容器,稍后当我们的工作完成后,通过节省磁盘空间将其删除。
需要注意的重要一点是,容器就像一个类示例,而不是用于数据存储。我们最好在工作完成后删除它们。当我们重新开始时,它会重新开始。
问题来了,如果容器被删除,那么容器中的数据怎么办?数据实际上保存在本地系统中,并在容器启动时链接到它。这个概念被命名为“卷或共享卷”。