Bootstrap

Docker 入门到精通专栏--2.2 容器 (Container)

目录

2.2 容器 (Container)

2.2.1 容器的生命周期管理

2.2.2 启动、停止、删除容器

2.2.3 查看容器状态与日志

总结


2.2 容器 (Container)

容器是 Docker 镜像的运行实例,它提供了一个独立的、隔离的运行环境,包含了自己的文件系统、进程空间和网络栈。容器化技术使得应用程序可以在不同的环境中保持一致的行为,并且可以快速启动和停止。本节将详细介绍容器的生命周期管理、如何启动、停止和删除容器,以及如何查看容器的状态和日志。

2.2.1 容器的生命周期管理

容器的生命周期包括创建、启动、运行、停止、重启和删除等阶段。Docker 提供了一系列命令来管理容器的生命周期,确保你可以灵活地控制容器的运行状态。

容器的生命周期阶段

  1. 创建 (Create):使用 docker create 命令创建一个容器,但不立即启动它。你可以稍后通过 docker start 启动该容器。
  2. 启动 (Start):使用 docker start 命令启动一个已创建但未运行的容器。
  3. 运行 (Run):使用 docker run 命令创建并立即启动一个容器。这是最常用的命令,结合了创建和启动两个步骤。
  4. 停止 (Stop):使用 docker stop 命令优雅地停止一个正在运行的容器。Docker 会向容器发送 SIGTERM 信号,给应用程序一定的时间进行清理操作。如果超时,Docker 会发送 SIGKILL 强制终止容器。
  5. 重启 (Restart):使用 docker restart 命令重启一个已经停止的容器。Docker 会先停止容器,然后重新启动它。
  6. 删除 (Remove):使用 docker rm 命令删除一个已停止的容器。你也可以使用 -f 选项强制删除正在运行的容器。
  7. 暂停 (Pause):使用 docker pause 暂停容器中的所有进程。暂停后的容器不会消耗 CPU 资源,但仍然占用内存。
  8. 恢复 (Unpause):使用 docker unpause 恢复被暂停的容器,使其继续运行。
2.2.2 启动、停止、删除容器

启动容器

  • 创建并启动容器:使用 docker run 命令创建并立即启动一个容器。你可以指定容器的名称、端口映射、卷挂载等参数。

     Bash 

    深色版本

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

    常用选项

    • -d:后台运行容器(detached mode)。
    • -p:将主机端口映射到容器端口。格式为 host_port:container_port
    • -v:将主机目录或文件挂载到容器中。格式为 host_path:container_path
    • --name:为容器指定一个名称。
    • -e:设置环境变量。

    示例

    • 后台启动一个 Nginx 容器,并将主机的 8080 端口映射到容器的 80 端口:
       Bash 

      深色版本

      docker run -d -p 8080:80 --name my-nginx nginx:latest
  • 仅创建容器:如果你不想立即启动容器,可以使用 docker create 命令创建容器,稍后再启动它。

     Bash 

    深色版本

    docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

    示例

    • 创建一个 Nginx 容器,但不启动它:

       Bash 

      深色版本

      docker create --name my-nginx nginx:latest
    • 启动刚刚创建的容器:

       Bash 

      深色版本

      docker start my-nginx

停止容器

  • 优雅停止容器:使用 docker stop 命令停止一个正在运行的容器。Docker 会向容器发送 SIGTERM 信号,给应用程序一定的时间进行清理操作。如果超时,Docker 会发送 SIGKILL 强制终止容器。

     Bash 

    深色版本

    docker stop CONTAINER_ID_OR_NAME

    示例

    • 停止名为 my-nginx 的容器:
       Bash 

      深色版本

      docker stop my-nginx
  • 强制停止容器:如果你需要立即停止容器,可以使用 docker kill 命令。Docker 会直接发送 SIGKILL 信号,强制终止容器。

     Bash 

    深色版本

    docker kill CONTAINER_ID_OR_NAME

    示例

    • 强制停止名为 my-nginx 的容器:
       Bash 

      深色版本

      docker kill my-nginx

删除容器

  • 删除已停止的容器:使用 docker rm 命令删除一个已停止的容器。你不能删除正在运行的容器,除非使用 -f 选项强制删除。

     Bash 

    深色版本

    docker rm CONTAINER_ID_OR_NAME

    示例

    • 删除名为 my-nginx 的容器:
       Bash 

      深色版本

      docker rm my-nginx
  • 强制删除正在运行的容器:使用 -f 选项强制删除正在运行的容器。

     Bash 

    深色版本

    docker rm -f CONTAINER_ID_OR_NAME

    示例

    • 强制删除名为 my-nginx 的容器:
       Bash 

      深色版本

      docker rm -f my-nginx
  • 删除所有已停止的容器:使用 docker container prune 命令删除所有已停止的容器。

     Bash 

    深色版本

    docker container prune

    系统会提示你确认是否删除这些容器。你可以使用 -f 选项跳过确认:

     Bash 

    深色版本

    docker container prune -f
2.2.3 查看容器状态与日志

查看容器状态

  • 列出所有正在运行的容器:使用 docker ps 命令列出当前正在运行的容器。你可以看到容器的 ID、名称、镜像、端口映射等信息。

     Bash 

    深色版本

    docker ps

    示例输出

     

    深色版本

    CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS                   NAMES
    1a2b3c4d5e6f   nginx:latest  "/docker-entrypoint.…"   10 minutes ago   Up 10 minutes   0.0.0.0:8080->80/tcp    my-nginx
  • 列出所有容器(包括已停止的):使用 docker ps -a 命令列出所有容器,包括已停止的容器。

     Bash 

    深色版本

    docker ps -a

    示例输出

     

    深色版本

    CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS                      PORTS     NAMES
    1a2b3c4d5e6f   nginx:latest  "/docker-entrypoint.…"   10 minutes ago   Exited (0) 5 minutes ago               my-nginx
  • 查看容器的详细信息:使用 docker inspect 命令查看容器的详细信息,包括配置、网络、存储等。

     Bash 

    深色版本

    docker inspect CONTAINER_ID_OR_NAME

    示例

    • 查看名为 my-nginx 的容器的详细信息:
       Bash 

      深色版本

      docker inspect my-nginx
  • 实时查看容器的日志:使用 docker logs 命令查看容器的日志输出。你可以使用 -f 选项实时跟踪日志。

     Bash 

    深色版本

    docker logs [OPTIONS] CONTAINER_ID_OR_NAME

    常用选项

    • -f:实时跟踪日志(类似 tail -f)。
    • -t:显示日志的时间戳。
    • --tail <number>:只显示最近的几行日志。

    示例

    • 实时查看名为 my-nginx 的容器的日志:

       Bash 

      深色版本

      docker logs -f my-nginx
    • 查看名为 my-nginx 的容器的最后 10 行日志:

       Bash 

      深色版本

      docker logs --tail 10 my-nginx
  • 查看容器的资源使用情况:使用 docker stats 命令实时查看容器的 CPU、内存、网络和磁盘 I/O 使用情况。

     Bash 

    深色版本

    docker stats

    示例输出

     

    深色版本

    CONTAINER ID   NAME        CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
    1a2b3c4d5e6f   my-nginx    0.01%     2.5MB / 1.94GB       0.13%     1.2kB / 0B        0B / 0B           6
总结

容器的生命周期管理是 Docker 使用中的核心操作之一,掌握如何启动、停止、删除容器以及查看其状态和日志,可以帮助你更好地管理和监控应用程序的运行情况。通过 docker rundocker startdocker stopdocker rm 等命令,你可以灵活地控制容器的生命周期。而 docker psdocker logsdocker stats 等命令则提供了丰富的工具,帮助你实时了解容器的运行状态和性能表现。

;