mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-26 03:35:31 +00:00
Remove blank lines after code block markers
This commit is contained in:
@@ -22,7 +22,6 @@ hello world
|
||||
hello world
|
||||
hello world
|
||||
```
|
||||
|
||||
容器会把输出的结果 (STDOUT) 打印到宿主机上面。此时:
|
||||
|
||||
- 终端被占用,无法执行其他命令
|
||||
@@ -35,7 +34,6 @@ hello world
|
||||
$ docker run -d ubuntu:24.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
|
||||
77b2dc01fe0f3f1265df143181e7b9af5e05279a884f4776ee75350ea9d8017a
|
||||
```
|
||||
|
||||
使用 `-d` 参数后:
|
||||
|
||||
- 容器在后台运行
|
||||
@@ -52,7 +50,6 @@ $ docker run -d ubuntu:24.04 /bin/sh -c "while true; do echo hello world; sleep
|
||||
```bash
|
||||
$ docker run -d ubuntu:24.04
|
||||
```
|
||||
|
||||
然后用 `docker ps` 查看,发现容器根本不在运行!这是为什么?
|
||||
|
||||
#### 核心原理:容器的生命周期与主进程绑定
|
||||
@@ -65,7 +62,6 @@ flowchart TD
|
||||
Exit["主进程退出"] --> Stop["容器停止"]
|
||||
end
|
||||
```
|
||||
|
||||
当你运行 `docker run -d ubuntu:24.04` 时:
|
||||
|
||||
1. 容器启动
|
||||
@@ -96,7 +92,6 @@ $ docker container ls
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
77b2dc01fe0f ubuntu:24.04 /bin/sh -c 'while tr 2 minutes ago Up 1 minute agitated_wright
|
||||
```
|
||||
|
||||
#### 查看容器输出日志
|
||||
|
||||
```bash
|
||||
@@ -106,19 +101,16 @@ hello world
|
||||
hello world
|
||||
...
|
||||
```
|
||||
|
||||
**实时查看日志** (类似 `tail -f`):
|
||||
|
||||
```bash
|
||||
$ docker container logs -f 77b2dc01fe0f
|
||||
```
|
||||
|
||||
#### 查看已停止的容器
|
||||
|
||||
```bash
|
||||
$ docker container ls -a
|
||||
```
|
||||
|
||||
加上 `-a` 参数可以看到所有容器,包括已停止的。这对于调试 “容器启动即退出” 的问题非常有用。
|
||||
|
||||
### 5.2.5 最佳实践
|
||||
@@ -126,7 +118,6 @@ $ docker container ls -a
|
||||
#### 1. 长期运行的服务使用 -d
|
||||
|
||||
```bash
|
||||
|
||||
## Web 服务器
|
||||
|
||||
$ docker run -d -p 80:80 nginx
|
||||
@@ -139,18 +130,15 @@ $ docker run -d -p 3306:3306 mysql:8
|
||||
|
||||
$ docker run -d -p 6379:6379 redis
|
||||
```
|
||||
|
||||
#### 2. 调试时先用前台模式
|
||||
|
||||
当容器启动有问题时,**去掉 `-d` 参数** 可以直接看到输出和错误:
|
||||
|
||||
```bash
|
||||
|
||||
## 有问题的容器,先前台运行看看发生了什么
|
||||
|
||||
$ docker run myimage:latest
|
||||
```
|
||||
|
||||
#### 3. 使用 --rm 自动清理
|
||||
|
||||
对于一次性任务,使用 `--rm` 参数让容器退出后自动删除:
|
||||
@@ -163,11 +151,9 @@ Hello, World!
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
#### 4. 配合日志查看
|
||||
|
||||
```bash
|
||||
|
||||
## 后台启动
|
||||
|
||||
$ docker run -d --name myapp myimage:latest
|
||||
@@ -184,7 +170,6 @@ $ docker logs -f myapp
|
||||
|
||||
$ docker logs -t myapp
|
||||
```
|
||||
|
||||
### 5.2.6 常见问题排查
|
||||
|
||||
#### Q:容器启动后立即退出
|
||||
@@ -227,7 +212,6 @@ $ docker logs -t myapp
|
||||
```bash
|
||||
$ docker attach mycontainer
|
||||
```
|
||||
|
||||
> **注意**:`attach` 会连接到容器的主进程。如果主进程不是交互式的,你可能只能看到输出。使用 `Ctrl+P` `Ctrl+Q` 可以安全退出而不停止容器。
|
||||
|
||||
### 5.2.7 延伸阅读
|
||||
|
||||
Reference in New Issue
Block a user