和#34; docker ps"之间有区别吗?和#34; docker container ls"?

时间:2017-07-22 12:40:59

标签: docker

docker psdocker container ls的文档都说"列出容器",但没有提到另一个命令。这两个命令之间有区别吗?

输出看起来完全一样:

CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                    NAMES
bbe3d7158eaa        flaskmysqldockerized_web   "python app.py"          5 hours ago         Up 18 seconds       0.0.0.0:8082->5000/tcp   flaskmysqldockerized_web_1
4f7d3f0763ad        mysql                      "docker-entrypoint..."   6 hours ago         Up 18 seconds       0.0.0.0:3307->3306/tcp   flaskmysqldockerized_db_1

2 个答案:

答案 0 :(得分:26)

docker psdocker container ls之间没有区别。在Docker 1.13中添加了新的命令结构(docker container <subcommand>),以便在使用命令行时提供更结构化的用户体验。

据我所知,还没有任何官方声明放弃对旧式命令(如docker ps和其他命令)的支持,尽管可能有理由认为这可能会在某些时候发生。将来

这在blog post accompanying the release of Docker 1.13

中有所描述
  

Docker在过去几年中已经发展了许多功能,Docker CLI现在有很多命令(在撰写本文时有40个)。有些像构建或运行一样被使用很多,有些比较模糊,比如暂停或历史。许多顶级命令会使页面混乱,并使标签完成更加困难。

     

在Docker 1.13中,我们重新组合了每个命令,使其位于与其交互的逻辑对象下。例如,list和startof容器现在是docker容器的子命令,history是docker image的子命令。

docker container list
docker container start
docker image history
     

这些更改让我们可以清理Docker CLI语法,改进帮助文本并使Docker更易于使用。仍然支持旧的命令语法,但我们鼓励每个人采用新的语法。

答案 1 :(得分:0)

docker ps是“ docker process status”的缩写,而docker container ls是更详细的docker container list的缩写。

正如公认的答案所解释,它们的工作方式没有区别,并且docker container ls是'newer'命令,因此您可能应该更喜欢它。

这两个命令实际上默认情况下仅显示正在运行的容器,这使第一个(docker ps)更加混乱,因为该命令本身并没有真正显示“进程状态”。要查看 all 容器的状态,请为“ all”添加-a选项(或使用--all),例如

docker container ls -a

docker ps -adocker container ps -a