第五集:Docker之Dockerfile详解

本文详细解析了Dockerfile中的关键指令,包括FROM、LABEL、RUN、WORKDIR、ADD/COPY、ENV、CMD和ENTRYPOINT的使用方法及区别,帮助读者深入理解Docker镜像构建过程。

1.FROM:引入和开始

#从头制作baseImage

FROM scratch

#使用已有的baseImage

FROM centos

#指定使用的版本

FROM ubuntu:14.04

2.LABEL:定义一些说明信息

LABEL maintainer=604702050@qq.com

LABEL version=”1.0”

LABEL description=”xxx”

3.RUN:执行命令,每执行一条RUN,多一个分层,一般用&&合并语句,反斜杠换行

RUN yum -y update && yum -y install lrzsz \

net-tools

RUN apt-get -y update && apt-get -y install lrzsz\

net-tools

RUN /bin/bash -c ‘source $HOME/.bashrc;echo $HOME’

4.WORKDIR:进入或创建目录,尽量不要使用相对路径

#进入/root目录

WORKDIR /root

#如果没有会自动创建

WORKDIR /test

WORKDIR demo

#输出:/test/demo

RUN pwd

5.ADD和COPY:将本地的文件,添加到image里

#将hello添加到根目录下

ADD hello /

#将tar包直接解压到根目录

ADD test.tar.gz /

#最终hello应该在 /root/test/hello

WORKDIR /root

COPY hello test/

6.ENV:增加Dockerfile的可读性

#设置常量

ENV MYSQL_MAJOR 5.5

#使用常量

$MYSQL_MAJOR

RUN apt-get -y install mysql-server=”${MYSQL_VERSION}”


CMDENTRYPOINT:

#shell格式

RUN apt-get -y install lrzsz

CMD echo “hello docker”

ENTRYPOINT echo “hello docker”

 

#exec格式

RUN [“apt-get”,”-y”,”install”,”lrzsz”]

CMD [“/bin/echo”,”hello docker”]

ENTRYPOINT [“/bin/echo”,”hello docker”]

  • ENTRYPOINT使用的比CMD多一些
  • ENTRYPOINT:设置容器启动时运行的命令,一定会执行,不会被忽略

操作一下:

  • 分别编写Dockerfile

  • 构建image

  • 查看下

  • 分别运行两个image看效果

  • 修改Dockerfile如下

  • 重新构建和运行

CMD和ENTRYPOINT对比:CMD命令可能被覆盖,ENTRYPOINT命令一定会执行

CMD:设置容器启动后默认执行的参数和命令,若docker指定了其他命令,CMD可以被忽略,CMD若指定多个,只运行最后一个

  • 编写file

  • 构建和运行

ENTRYPOINT:

  • 再构建一个ENTRYPOINT

  • 构建

  • 运行CMD的image

  • 运行ENTRYPOINT的image

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值