Fix and improve

This commit is contained in:
Baohua Yang
2026-02-12 16:51:50 -08:00
parent bae82e993a
commit 0835f8467a
100 changed files with 280 additions and 622 deletions

View File

@@ -40,8 +40,6 @@ ENTRYPOINT nginx -g "daemon off;"
#### 行为对比
具体内容如下
```docker
## 只用 CMD
@@ -82,14 +80,12 @@ $ docker run myimage -v http://other.com # curl -s -v http://other.com ✓
### 场景一让镜像像命令一样使用
#### 需求
#### 需求启动前准备
创建一个查询公网 IP "命令"镜像
#### 使用 CMD 的问题
具体内容如下
```docker
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
@@ -104,14 +100,11 @@ $ docker run myip -i # ✗ 错误!
exec: "-i": executable file not found
## -i 替换了整个 CMD被当作可执行文件
具体内容如下:
...
```
#### 使用 ENTRYPOINT 解决
具体内容如下
```docker
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
@@ -130,8 +123,6 @@ HTTP/1.1 200 OK
#### 交互图示
具体内容如下
```
ENTRYPOINT ["curl", "-s", "http://myip.ipip.net"]
@@ -153,8 +144,6 @@ curl -s http://myip.ipip.net -i
#### 实现方式
具体内容如下
```docker
FROM redis:7-alpine
COPY docker-entrypoint.sh /usr/local/bin/
@@ -186,8 +175,6 @@ exec "$@"
#### 工作流程
具体内容如下
```
docker run redis docker run redis bash
│ │
@@ -210,8 +197,6 @@ docker-entrypoint.sh redis-server docker-entrypoint.sh bash
### 场景三带参数的应用
具体内容如下
```docker
FROM python:3.12-slim
WORKDIR /app
@@ -238,8 +223,7 @@ $ docker run myapp --host 0.0.0.0 --port 9000
$ docker run myapp --help
## 执行: python app.py --help
具体内容如下:
...
```
---
@@ -282,8 +266,6 @@ $ docker run --entrypoint /bin/cat myimage /etc/os-release
#### 1. 使用 exec 格式
具体内容如下
```docker
## ✅ 推荐
@@ -296,8 +278,6 @@ ENTRYPOINT python app.py
#### 2. 提供有意义的默认参数
具体内容如下
```docker
ENTRYPOINT ["nginx"]
CMD ["-g", "daemon off;"]
@@ -346,6 +326,6 @@ wait $PID
### 延伸阅读
- [CMD 容器启动命令](cmd.md)默认命令
- [最佳实践](../../16_appendix/16.1_best_practices.md)启动命令设计
- [后台运行](../../05_container/5.2_daemon.md)前台/后台概念
- [CMD 容器启动命令](7.4_cmd.md)默认命令
- [最佳实践](../16_appendix/16.1_best_practices.md)启动命令设计
- [后台运行](../05_container/5.2_daemon.md)前台/后台概念