dockerfile详细解读

1、FROM指令

  • 当前的镜像基于哪个镜像构建

  • 第一个指令就是FROM

2、RUN指令

  • 构建镜像
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim

RUN ["yum","-y","install","vim"]
# 这2个写法都可以

3、EXPOSE指令

  • 声明一个对外暴露的端口,不会真的映射,还是需要输入命令
FROM centos:latest
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim
EXPOSE 80  #声明容器中服务的端口

docker run -tid -P
docker run -tid -p 主机端口:容器端口 就可以进行暴露容器中的服务端口了
访问主机+主机端口就能转发到容器里面的服务了

4、WORKDIR

  • 在创建容器后,终端默认登录进来的工作目录

  • 如果这个目录不存在的话,会自动的创建一个目录

  • 绝对路径和相对路径都可以

[root@docker docker]# cat Dockerfile 
FROM centos:latest
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim
EXPOSE 80 
WORKDIR /apps   #登录后进入的是/apps/data这个目录
WORKDIR data


[root@docker docker]# docker run -ti centos:workdir 
[root@81a1a7785bac apps]# pwd
/apps

5、add指令

  • 将宿主机目录拷贝到容器里面

  • 如果是压缩文件的话,可以进行解压

  • url地址的也可以直接进行下载

FROM centos:latest
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim
EXPOSE 80 
WORKDIR /apps
add ./tmp.tar .  # 解压到了/apps目录下面
WORKDIR data
ADD https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.30/bin/apache-tomcat-10.1.30.tar.gz .


6、copy指令

  • 将宿主机目录拷贝到容器里面

7、ENV指令

  • 非常的有用,方便,用变量的形式来代替

  • 避免代码的冗余,容器修改

ENV BASE_PATH=/apps/data
WORKDIR /apps
WORKDIR data
WORKDIR /
COPY ./tmp.tar  $BASE_PATH
WORKDIR $BASE_PATH

8、volume指令

  • 只是声明一个挂载点

  • 还是需要使用-v 来实现挂载

  • 一个匿名的卷

VOLUME /share/data  # 声明容器中的/share/data是一个匿名卷


docker -v 宿主机目录:容器目录

9、ENDTRYPOINT指令

  • 容器启动默认执行的命令

  • 推荐使用json数组的形式

  • 命令行参数不支持传参

  • –entrypoint=ls 可以覆盖entrypoint

FROM centos:latest
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim
EXPOSE 80 
ENV BASE_PATH=/apps/data
WORKDIR /apps
WORKDIR data
WORKDIR /
COPY ./tmp.tar  $BASE_PATH
WORKDIR $BASE_PATH
CMD ls $BASE_PATH 


10、CMD指令

  • 容器启动时默认执行的命令

  • 如果有多个的话,只有最后一个生效

  • cmd 命令运行时,要覆盖的话,在docker run的时候,可以覆盖

11、cmd和ent

  • 配合使用
    • entrypoint 编写固定的指令

    • cmd 是传参的

    • 必须是json数组的形式,[]

[root@docker docker]# cat dockerfile 
FROM centos:latest
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim
EXPOSE 80 
ENTRYPOINT ["ls"]
CMD ["/"]


#默认是查看的ls /

# 当闯进容器的时候,可以进行传参即可,覆盖cmdss
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值