dockerfile常用指令
指令 | 描述 | 指令 | 描述 |
FROM |
构造的新镜像是基于哪个镜像 例如:FROM centos:v1 |
COPY |
拷贝文件或者目录到镜像,用法同ADD 例如:COPY ./startup.sh /startup.sh |
MAINTAINER |
维护者信息 例如:MAINTAINER yanglin |
ENTRYPOINT |
运行容器时执行的shell命令 例如:ENTRYPOINT ["/bin/bash","-c","/startup.sh"] ENTRYPOINT /bin/bash -c '/startup.sh' |
RUN |
构建镜像时运行的shell命令 例如:RUN ["yum", "install", "http"] RUN yum install httpd |
VOLUME |
指定容器挂载点到宿主机自动生成的目录或者其他容器 例如:VOLUME ["/path/to/dir"] |
CMD |
运行容器时执行的shell命令 例如:CMD ["-c","/startup.sh"] CMD ["/usr/sbin/sshd","-D"] CMD /usr/sbin/sshd -D |
USER |
为RUN,CMD,ENTRYPOINT执行命令指定运行用户 例如:USER www 镜像构建完成后,通过docker run运行容器时,可以通过-u参数来覆盖所指定的用户。 |
EXPOSE |
指定于外界交互的端口,即容器在运行时监听的端口 EXPOSE 8081 8082 |
WORKDIR |
为RUN,CMD,ENTRYPOINT,COPY和ADD设置工作目录 例如:WORKDIR /data |
ENV |
设置容器内环境变量 例如:ENV MYSQL_ROOT_PASSWORD 123456 |
HEALTHCHECK |
健康检查 HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ ||exit 1 |
ADD |
拷贝文件或者目录到镜像,如果是URL或者压缩包会自动下载或者自动解压 例如: ADD hom* /mydir/ |
ARG |
在构建镜像时指定一些参数 例如: FROM centos:6 ARG age=100 |
1.RUN,CMD,ENTRYPOINT的区别
A.RUN 指令:用于指定 docker build 过程中要运行的命令,可以写多条 B.CMD和ENTRYPOINT在运行容器时运行,只能写一条,如果是写多条,最后一条生效 C.CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。 D.ENTRYPOINT类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,如果运行 docker run 时使用了 --entrypoint 选项,
此选项的参数可当作要运行的程序覆盖 ENTRYPOINT 指令指定的程序;
2.通过dockerfile构建Tomcat网站环境镜像
FROM centos MAINTAINER linzi ADD apache-tomcat-8.5.37.tar.gz /usr/local/ ADD jdk-8u191-linux-x64.rpm /root/ RUN rpm -ivh /root/jdk-8u191-linux-x64.rpm WORKDIR /usr/local/apache-tomcat-8.5.37/ ENTRYPOINT ["bin/catalina.sh","run"] EXPOSE 8080
3.通过dockerfile构建ssh服务器
FROM centos MAINTAINER linzi ENV ROOT_PASSWORD 123456 RUN yum install -y openssh-server RUN echo $ROOT_PASSWORD |passwd --stdin root RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key CMD ["/usr/sbin/sshd","-D","&"] EXPOSE 22
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构