我是 Docker 的新手,刚刚开始。我拉了一个基本的 ubuntu 镜像,用它启动了几个容器,然后停止了它们。当我运行命令列出所有 docker 容器(甚至是停止的容器)时,我得到如下输出:
> docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
099c42011f24 ubuntu:latest "/bin/bash" 6 seconds ago Exited (0) 6 seconds ago sleepy_mccarthy
dde61c10d522 ubuntu:latest "/bin/bash" 8 seconds ago Exited (0) 7 seconds ago determined_rosalind
cd1a6fa35741 ubuntu:latest "/bin/bash" 9 seconds ago Exited (0) 8 seconds ago unruffled_lichterman
ff926b6eba23 ubuntu:latest "/bin/bash" 10 seconds ago Exited (0) 10 seconds ago cool_rosalind
8bd50c2c4729 ubuntu:latest "/bin/bash" 12 seconds ago Exited (0) 11 seconds ago cranky_darwin
我的问题是,docker 默认不删除已停止的容器是否有原因?
答案 0 :(得分:1)
您提供的示例表明您正在使用 Ubuntu 容器来运行 bash。虽然这是学习 Docker 时相当常见的模式,但它不是 docker 用于在生产场景中的,这是 Docker 关心并正在优化的。
Docker 用于在具有给定配置的容器内部署应用程序。
假设您建立了一个数据库容器来保存有关您的应用程序的信息。然后您的 docker 主机出于某种原因重新启动,并且该数据库默认消失。那将是一场灾难。
因此,Docker 假设您要保留容器、映像、卷等要安全得多,除非您明确要求删除它们并决定这是您想要的当您启动它们时,例如使用 docker run --rm <image>
。
答案 1 :(得分:0)
在我看来,这可能有一些原因。考虑以下条件:
我构建镜像并启动容器(生产环境,出于某种原因我停止了当前容器,对镜像进行了一些更改并运行另一个实例,因此具有新名称的新容器正在运行。
我发现新容器没有按预期正常工作,所以现在我有了旧容器,我可以运行旧容器并停止新容器,这样客户就不会遇到任何问题。< /p>
但是如果容器在停止后被自动删除怎么办?
简单的答案,我只会失去我的客户(甚至是我的工作):) 一个人会被添加到失业人员中:D
正如@msanford 提到的,Docker 假设您想要保留数据、卷等,因此您可能会在需要时重新使用它们。
由于 Docker 用于部署和运行应用程序(就像 WordPress 和 MySQL 一样简单,但在共享主机上安装有一些差异),因此通常它不仅仅用于运行 bash
。
通过运行 bash
或 sh
之类的东西来查看容器的内容,在第一步学习 Docker 肯定是好的。