ENTRYPOINT
ENTRYPOINT vs CMD
# ENTRYPOINT:容器的主命令,不容易被覆盖
ENTRYPOINT ["python", "app.py"]
# CMD:默认参数,容易被覆盖
CMD ["--port", "8080"]
组合使用
ENTRYPOINT ["python", "app.py"]
CMD ["--port", "8080"]
# docker run my-app → python app.py --port 8080
# docker run my-app --port 9000 → python app.py --port 9000
覆盖 ENTRYPOINT
docker run --entrypoint /bin/sh my-app
Shell vs Exec 形式
# Exec 形式(推荐)
ENTRYPOINT ["python", "app.py"]
# Shell 形式(不推荐,信号处理有问题)
ENTRYPOINT python app.py
小结
| 指令 | 可覆盖性 | 用途 |
|---|
ENTRYPOINT | 难 | 主命令 |
CMD | 易 | 默认参数 |