深入理解 Docker:为什么 docker ps 没有列出 Images?

Docker 作为一种流行的容器化平台,已经对软件开发和运维产生了巨大的影响。许多用户在使用 Docker 时,可能会遇到一个常见的现象:使用 docker ps 命令时,看到的仅仅是运行中的容器,而没有显示出可用的镜像(Images)。在本文中,我们将深入探讨这个现象,并学习到如何使用 Docker 命令管理容器和镜像。

1. 了解 Docker 容器与镜像

在深入讨论之前,我们首先需要理解 Docker 实际上是如何工作的:

  • 镜像(Images):是一种只读的模板,定义了容器的内容和运行环境。镜像中包含应用程序及其依赖项。
  • 容器(Containers):是镜像的一个可执行实例,具有各自的文件系统、网络接口和进程空间。

这两个概念是 Docker 的核心,因此,了解它们之间的区别非常重要。

2. 使用 docker ps 命令

docker ps 命令用于列出正在运行的容器。例如:

docker ps

执行此命令后,您看到的输出可能如下:

CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS     NAMES
abcd12345678   my-app:latest "/bin/sh -c 'npm star…" 2 minutes ago    Up 2 minutes    8080/tcp  my-running-app

如上所示,docker ps 命令输出的主要是关于正在运行的容器的信息,而不包括未运行的镜像。

3. 查看镜像

要查看当前系统中可用的 Docker 镜像,您可以使用以下命令:

docker images

此命令的输出可能如下:

REPOSITORY      TAG       IMAGE ID       CREATED       SIZE
my-app          latest    cdef12345678   2 days ago    120MB

重点:

docker ps 只显示正在运行的容器,而 docker images 显示所有现有镜像。

4. 结合使用

了解 docker psdocker images 的区别后,您可能会需要同时使用这两个命令来管理您的 Docker 资源,下面是一个简单的示例工作流程,展示它们如何协作:

# 列出所有正在运行的容器
docker ps

# 列出所有可以使用的镜像
docker images

# 从镜像启动一个新的容器
docker run -d --name my-new-app my-app:latest

其中:

  • -d 参数用于以分离模式运行容器。
  • --name 用于为容器指定一个名称。

5. 流程图

以下是一个简单流程图,展示了如何在 Docker 中使用容器和镜像:

flowchart TD
    A[开始使用Docker] --> B{查看容器}
    B -->|运行中的容器| C[使用 `docker ps`]
    B -->|已存在的镜像| D[使用 `docker images`]
    D --> E[创建容器]
    E --> F[管理容器]
    F --> G[停止或删除容器]
    C --> H[查看容器状态]
    H --> F

6. 结尾

在这篇文章中,我们讨论了 Docker 容器与镜像之间的关系,并明确了使用 docker psdocker images 的用途。理解这两个命令的使用场景,可以让您更高效地管理 Docker 环境。

无论您是在开发新应用还是在维护现有系统,掌握 Docker 的基本操作都是非常重要的。这不仅能提高您工作的效率,还能帮助您在容器化技术日益盛行的今天,走在技术的前沿。希望本文能够帮助您更好地理解 Docker!