企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
### **WORKDIR 指定工作目录** 用于为Dockerfile中所有的RUN,CMD,ENTRYPOINT,COPY,ADD指定工作目录,只影响他开始往后的指令 ### **ADD 更高级的复制文件** 因此在`COPY`和`ADD`指令中选择的时候,可以遵循这样的原则,所有的文件复制均使用`COPY`指令,仅在需要自动解压缩的场合使用`ADD`。 ### **VOLUME 定义匿名卷** 对于数据库类需要保存动态数据的应用,其数据库文件应该保存于卷(volume)中,后面的章节我们会进一步介绍 Docker 卷的概念。为了防止运行时用户忘记将动态文件所保存目录挂载为卷,在`Dockerfile`中,我们可以事先指定某些目录挂载为匿名卷,这样在运行时如果用户不指定挂载,其应用也可以正常运行,不会向容器存储层写入大量数据。 ### **EXPOSE** 用于为容器打开指定要监听的端口,会动态随机绑定宿主机的端口 ### **HEALTHCHECK 健康检查** 在没有`HEALTHCHECK`指令前,Docker 引擎只可以通过容器内主进程是否退出来判断容器是否状态异常。很多情况下这没问题,但是如果程序进入死锁状态,或者死循环状态,应用进程并不退出,但是该容器已经无法提供服务了。 自 1.12 之后,Docker 提供了`HEALTHCHECK`指令,通过该指令指定一行命令,用这行命令来判断容器主进程的服务状态是否还正常,从而比较真实的反应容器实际状态。 当在一个镜像指定了`HEALTHCHECK`指令后,用其启动容器,初始状态会为`starting`,在`HEALTHCHECK`指令检查成功后变为`healthy`,如果连续一定次数失败,则会变为`unhealthy` ### **USER 指定当前用户** ### **ONBUILD 为他人做嫁衣** `ONBUILD`是一个特殊的指令,它后面跟的是其它指令,比如`RUN`,`COPY`等,而这些指令,在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行。 `Dockerfile`中的其它指令都是为了定制当前镜像而准备的,唯有`ONBUILD`是为了帮助别人定制自己而准备的。