mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 16:37:34 +00:00
更新Docker安装、镜像、Dockerfile和Compose等文档内容
This commit is contained in:
@@ -1,5 +1,33 @@
|
||||
## 7.5 ENTRYPOINT 入口点
|
||||
|
||||
### 何时使用 ENTRYPOINT:从"容器"到"命令"
|
||||
|
||||
如果说 CMD 是"容器中的默认程序",那么 ENTRYPOINT 就是"把容器变成一个命令"。这个思维转变决定了你何时使用 ENTRYPOINT。
|
||||
|
||||
**使用 ENTRYPOINT 的典型场景**:
|
||||
|
||||
1. **命令行工具**:你想让镜像像 `curl` 或 `wget` 一样使用
|
||||
```dockerfile
|
||||
ENTRYPOINT ["curl"]
|
||||
# docker run myimage http://example.com → curl http://example.com
|
||||
```
|
||||
|
||||
2. **应用启动脚本**:你有一个初始化脚本,需要接收命令行参数
|
||||
```dockerfile
|
||||
ENTRYPOINT ["/app/entrypoint.sh"]
|
||||
# docker run myimage --debug → /app/entrypoint.sh --debug
|
||||
```
|
||||
|
||||
3. **与 CMD 结合**:ENTRYPOINT 定义入口,CMD 定义默认参数
|
||||
```dockerfile
|
||||
ENTRYPOINT ["python", "app.py"]
|
||||
CMD ["--port", "8000"]
|
||||
# docker run myimage → python app.py --port 8000
|
||||
# docker run myimage --port 9000 → python app.py --port 9000
|
||||
```
|
||||
|
||||
**对比 CMD**:如果没有这些"把容器当命令用"的需求,通常使用 CMD 就足够了。
|
||||
|
||||
### 7.5.1 什么是 ENTRYPOINT
|
||||
|
||||
`ENTRYPOINT` 指定容器启动时运行的入口程序。与 CMD 不同,ENTRYPOINT 定义的命令不会被 `docker run` 的参数覆盖,而是 **接收这些参数**。
|
||||
|
||||
Reference in New Issue
Block a user