跳转到内容

Docker容器启动停止

来自代码酷

Docker容器启动停止[编辑 | 编辑源代码]

介绍[编辑 | 编辑源代码]

Docker容器是Docker技术的核心组件之一,它们是轻量级、可执行的软件包,包含运行应用程序所需的所有内容(代码、运行时、系统工具、库和设置)。容器的启动和停止是日常操作中最基本的任务之一,理解这些操作对于有效管理容器化应用程序至关重要。

本节将详细介绍如何启动和停止Docker容器,包括相关命令、选项以及实际应用场景。

启动容器[编辑 | 编辑源代码]

从镜像启动新容器[编辑 | 编辑源代码]

要从镜像启动一个新容器,可以使用docker run命令。这是最常用的启动容器的方法。

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

示例:启动一个Nginx容器

docker run -d --name my-nginx -p 8080:80 nginx

输出:

Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
...
Status: Downloaded newer image for nginx:latest
3a4b2e5d8c1a3f2e1d0c9b8a7f6e5d4c3b2a1

解释:

  • -d:以"分离模式"(后台)运行容器
  • --name my-nginx:为容器指定名称
  • -p 8080:80:将主机的8080端口映射到容器的80端口
  • nginx:使用的镜像名称

启动已停止的容器[编辑 | 编辑源代码]

要启动已经停止的容器,可以使用docker start命令。

docker start [OPTIONS] CONTAINER [CONTAINER...]

示例:启动之前停止的容器

docker start my-nginx

输出:

my-nginx

停止容器[编辑 | 编辑源代码]

优雅停止容器[编辑 | 编辑源代码]

要正常停止运行中的容器,使用docker stop命令。这会发送SIGTERM信号,给容器一个优雅关闭的机会。

docker stop [OPTIONS] CONTAINER [CONTAINER...]

示例:停止Nginx容器

docker stop my-nginx

输出:

my-nginx

强制停止容器[编辑 | 编辑源代码]

如果容器不响应docker stop命令,可以使用docker kill命令强制停止它。这会发送SIGKILL信号,立即终止容器。

docker kill [OPTIONS] CONTAINER [CONTAINER...]

示例:强制停止容器

docker kill my-nginx

输出:

my-nginx

容器生命周期图[编辑 | 编辑源代码]

以下是Docker容器生命周期的简化图示:

stateDiagram-v2 [*] --> Created: docker create Created --> Running: docker start Running --> Stopped: docker stop/kill Stopped --> Running: docker start Stopped --> [*]: docker rm

常用选项详解[编辑 | 编辑源代码]

启动选项[编辑 | 编辑源代码]

  • -i--interactive:保持STDIN打开,即使没有附加
  • -t--tty:分配一个伪终端
  • -d--detach:在后台运行容器
  • --restart:设置容器的重启策略(no, on-failure, always, unless-stopped)
  • -e--env:设置环境变量
  • -v--volume:挂载卷
  • -p--publish:发布容器端口到主机

停止选项[编辑 | 编辑源代码]

  • -t--time:设置等待容器停止的超时时间(默认10秒)
  • -s--signal:发送给容器的信号(默认SIGTERM)

实际应用场景[编辑 | 编辑源代码]

场景1:开发环境[编辑 | 编辑源代码]

开发人员可以启动一个包含所有依赖项的容器进行开发,完成后停止它:

# 启动开发容器
docker run -d --name dev-env -v $(pwd):/app -p 3000:3000 node:14

# 开发完成后停止容器
docker stop dev-env

场景2:临时调试[编辑 | 编辑源代码]

启动一个临时容器进行调试,完成后自动删除:

docker run -it --rm alpine sh

解释:

  • --rm:容器退出时自动删除
  • 这将启动一个Alpine Linux容器并进入交互式shell

常见问题解答[编辑 | 编辑源代码]

Q1: 如何查看所有容器(包括已停止的)?[编辑 | 编辑源代码]

使用docker ps -a命令:

docker ps -a

Q2: 如何设置容器自动重启?[编辑 | 编辑源代码]

使用--restart选项:

docker run -d --restart unless-stopped nginx

Q3: 启动容器时如何覆盖默认命令?[编辑 | 编辑源代码]

在镜像名称后指定命令:

docker run -it ubuntu bash

最佳实践[编辑 | 编辑源代码]

1. 总是为容器指定名称(--name),便于管理 2. 生产环境中使用--restart策略确保服务可用性 3. 使用docker stop而不是docker kill,除非必要 4. 清理不再需要的容器,避免资源浪费 5. 使用-v选项持久化重要数据

总结[编辑 | 编辑源代码]

Docker容器的启动和停止是容器管理的基本操作。通过docker run可以创建并启动新容器,docker start可以重新启动已停止的容器。docker stopdocker kill提供了不同方式的停止容器操作。理解这些命令及其选项对于有效使用Docker至关重要。