mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-10 20:04:36 +00:00
Fix and update
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
## 终止容器
|
||||
|
||||
本节将介绍如何终止一个运行中的容器,以及几种不同的终止方式及其区别。
|
||||
|
||||
### 终止方式概述
|
||||
|
||||
终止容器有三种方式:
|
||||
@@ -16,12 +18,16 @@
|
||||
|
||||
#### 基本用法
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker stop 容器名或ID
|
||||
```
|
||||
|
||||
#### 工作原理
|
||||
|
||||
具体内容如下:
|
||||
|
||||
```
|
||||
docker stop mycontainer
|
||||
│
|
||||
@@ -37,21 +43,29 @@ docker stop mycontainer
|
||||
|
||||
#### 自定义超时时间
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
## 等待 30 秒后强制终止
|
||||
|
||||
$ docker stop -t 30 mycontainer
|
||||
|
||||
## 立即发送 SIGKILL(相当于 docker kill)
|
||||
|
||||
$ docker stop -t 0 mycontainer
|
||||
```
|
||||
|
||||
#### 停止多个容器
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
## 停止多个指定容器
|
||||
|
||||
$ docker stop container1 container2 container3
|
||||
|
||||
## 停止所有运行中的容器
|
||||
|
||||
$ docker stop $(docker ps -q)
|
||||
```
|
||||
|
||||
@@ -61,6 +75,8 @@ $ docker stop $(docker ps -q)
|
||||
|
||||
#### 基本用法
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker kill 容器名或ID
|
||||
```
|
||||
@@ -74,11 +90,15 @@ $ docker kill 容器名或ID
|
||||
|
||||
#### 发送自定义信号
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
## 发送 SIGHUP(让进程重新加载配置)
|
||||
|
||||
$ docker kill -s HUP mycontainer
|
||||
|
||||
## 发送 SIGTERM
|
||||
|
||||
$ docker kill -s TERM mycontainer
|
||||
```
|
||||
|
||||
@@ -90,10 +110,12 @@ $ docker kill -s TERM mycontainer
|
||||
|
||||
```bash
|
||||
## 主进程是交互式 bash
|
||||
|
||||
$ docker run -it ubuntu bash
|
||||
root@abc123:/# exit # 退出 bash → 容器停止
|
||||
|
||||
## 主进程执行完毕
|
||||
|
||||
$ docker run ubuntu echo "Hello" # echo 执行完 → 容器停止
|
||||
```
|
||||
|
||||
@@ -101,6 +123,8 @@ $ docker run ubuntu echo "Hello" # echo 执行完 → 容器停止
|
||||
|
||||
### 查看已停止的容器
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker ps -a
|
||||
CONTAINER ID IMAGE COMMAND STATUS NAMES
|
||||
@@ -124,20 +148,27 @@ c5d3a5e8f7b2 nginx "nginx" Up 5 minutes mynginx
|
||||
|
||||
#### 启动已停止的容器
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker start 容器名或ID
|
||||
|
||||
## 启动并附加终端
|
||||
|
||||
$ docker start -ai 容器名
|
||||
```
|
||||
|
||||
#### 重启运行中的容器
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
## 先停止再启动
|
||||
|
||||
$ docker restart 容器名
|
||||
|
||||
## 自定义停止超时
|
||||
|
||||
$ docker restart -t 30 容器名
|
||||
```
|
||||
|
||||
@@ -145,6 +176,8 @@ $ docker restart -t 30 容器名
|
||||
|
||||
### 生命周期状态图
|
||||
|
||||
具体内容如下:
|
||||
|
||||
```
|
||||
docker create
|
||||
│
|
||||
@@ -186,18 +219,24 @@ $ docker restart -t 30 容器名
|
||||
|
||||
#### 停止所有容器
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker stop $(docker ps -q)
|
||||
```
|
||||
|
||||
#### 删除所有已停止的容器
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker container prune
|
||||
```
|
||||
|
||||
#### 停止并删除所有容器
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker stop $(docker ps -q) && docker container prune -f
|
||||
```
|
||||
@@ -221,19 +260,25 @@ $ docker stop $(docker ps -q) && docker container prune -f
|
||||
|
||||
```dockerfile
|
||||
## Dockerfile 示例
|
||||
|
||||
FROM node:22
|
||||
...
|
||||
## 使用 exec 形式确保信号能传递给 node 进程
|
||||
|
||||
CMD ["node", "server.js"]
|
||||
```
|
||||
|
||||
#### Q: 容器无法停止
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
## 强制终止
|
||||
|
||||
$ docker kill 容器名
|
||||
|
||||
## 如果仍无法停止,检查系统资源
|
||||
|
||||
$ docker inspect 容器名
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user