docker ps
和docker 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
答案 0 :(得分:26)
docker ps
和docker 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 -a
或docker container ps -a