[docker学习笔记] 6.dockerfile

本文详细介绍了Dockerfile的各个指令,包括FROM、LABLE、RUN、ADD、COPY、EXPOSE、ENV、CMD、ENTRYPOINT、WORKDIR、VOLUME,并提供了Dockerfile实战示例,帮助读者掌握构建Docker镜像的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6.1 FROM

语法 from <image>:<tag> FROM centos:7 FROM scratch #最小镜像

6.2 LABLE

指定镜像作者 LABLE maintainer="Sdy"

6.3 RUN

运行命令 RUN mkdir -p /usr/local/java

6.4 ADD

拷贝文件或目录到镜像中,src可以是一个本地文件夹或是本地压缩文件夹,压缩文件夹会自动解压,还可以是一个url,如果把src写成url,那么ADD类似于wget命令,然后自动下载和解压 ADD jdk-11.0.12_linux-x64_bin.tar.gz /usr/local/java

6. 5 COPY

弱化版ADD,拷贝文件,不会自动下载或解压 COYP jdk-11.0.12_linux-x64_bin.tar.gz /usr/local/java

6.6 EXPOSE

暴露容器和解压,可指定协议tcp或udp,不指定默认为tcp EXPOSE 80 443 8080/tcp

6.7 ENV

设置环境变量 ENV JAVA_HOME=/usr/local/java/jdk-11.0.12 ENV PATH=PATH:JAVA_HOME/bin

6.8 CMD

启动容器时执行的Shell命令。在Dockerfile中只能有一条cmd命令,如果有多条,只有最后一条生效。 CMD ehco $JAVA_HOME #打印环境变量

6.9 ENTRYPOINT

启动容器时执行shell命令,同cmd类似,不会被docker run所覆盖。同样dockerfile中只有最后一条ENTRYPOINT指令生效。

如果在Dockerfile中同时写ENTRYPOINT和CMD,并且CMD指令不是一个完整的可执行命令,那么 CMD指定的内容将会作为ENTRYPOINT的参数;

如果在Dockerfile中同时写ENTRYPOINT和CMD,并且CMD是一个完整指令,那么它两会互相覆盖,谁在最后谁生效

6.10 WORKDIR

为RUN/CMD/ENTRYPOINT/COPY/AND等,设置工作目录 WORKDIR /usr/local

6.11 VOLUME

#容器 /varlib/mysql目录在运行时自动挂载为匿名卷,匿名卷的宿主机的 /var/lib/docker/volumes 目录下 VOLUME ["/varlib/mysql"]

一般不会在Dockerfile中用到,更常见的还是在docker run 的时候通过 -v 指定数据卷。

6.12 Dockerfile实战

 mkdir /usr/local/dockerfile #创建目录
 cd /usr/local/dockerfile #跳转目录
 vi Dockerfile #编辑dockerfile文件(:set paste 进行粘贴)

 # 指明构建的新镜像的基础镜像来自哪
 FROM centos:7
 # 通过镜像标签声明了作者信息
 LABEL maintainer="sdy"
 # 设置工作目录
 WORKDIR /usr/local
 # 新镜像构建成功以后创建指定目录
 RUN mkdir p /usr/local/java && mkdir /usr/local/tomcat
 # 拷贝文件到镜像中并解压
 ADD jdk-11.0.12_linux-x64_bin.tar.gz /usr/local/java
 ADD apache-tomcat-9.0.52.tar.gz /usr/local/tomcat
 # 暴露容器
 EXPOSE 8080
 # 设置容器内java的环境变量
 ENV JAVA_HOME=/usr/local/java/jdk-11.0.12
 ENV PATH=$PATH:$JAVA_HOME/bin
 # 启动tomcat
 CMD ["/usr/local/tomcat/apache-tomcat-9.0.52/bin/catalina.sh","run"]

构建镜像 docker build -f /usr/local/dockerfile/Dockerfile -t mycentos:7 /usr/local/dockerfile/

docker build 构建命令

第一个url是dockerfile文件的路径

第二个url是资源所在文件夹的路径

通过镜像创建容器 docker run -di --name mycentos7 -p 8080:8080 mycentos:7 肉眼查看浏览器运行tomcat,地址:http://192.168.146.124:8080/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值