dockerfile镜像实战

 

dokerfile结构:

一、基础镜像信息

二、维护者信息

三、操作指令

四、容器启动时执行指令

 

如何将镜像体积缩小??

1.基础镜像尽量用最小化的来构建

2.dockerfile尽量少用指令,能合并就合并,来减少镜像的层数

3.用之前构建过的镜像进行二次构建,在原来基础上再构建一次(相当于只追求第一次的结果)

镜像的分层:

 

 dockerfile操作的常用的指令:

 

 优先级:

docker run --entrypoint   >  Dockerfile ENTRYPOINT >  docker run命令 > dockerfile

(1)FROM 镜像

指定镜像所基于的基础镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令

(2)MAINTAINER 名字

说明新镜像的维护人员信息

(3)RUN命令

基于镜像上执行的命令,并且提交到新的镜像中

(4)ENTRYPOINT【“要运行的程序”,“参数1”,“参数2”】

设定容器启动时的第一个运行的命令及其参数

可以通过使用docker  run --entrypoint 来覆盖镜像中的

 

exec(数值格式):ENTRYPOINT["命令",“选项”,“参数”]

shell格式:entrypoint 命令   选项   参数

 (5)CMD【“要运行的程序”,“参数1”,“参数2”】

 

设定容器运行时的默认指令

CMD可以给ENTRYPOINT进行传参

****ENTRYPOINT 和CMD区别

  1. 优先级 ENTRYPOINT 高于 CMD
  2. entrypoint是设定容器启动时的第一个运行的命令及其参数
  3. cmd是执行默认命令
  4. 他们若同时存在,cmd将作为传参作用

优先级:

docker run --entrypoint   >  Dockerfile ENTRYPOINT >  docker run命令 > dockerfile

 CMD

 

(6)EXPOSE端口号

指定新镜像加载到Docker时要开启的端口

暴露端口之后,外部才可以访问

docker run -p  3400:80

port可以查看暴露的端口

(7)ENV环境变量 变量值

设置一个环境变量的值,后面会被RUN使用

(8)***ADD源文件/目录   目标文件/目录

将文件复制到镜像中,源文件要与Dockerfile位于相同目录中、

 

(9)COPY 源文件/目录  目标文件/目录

****ADD和COPY的区别

都具有复制作用

ADD支持源文件下载到目标目录

也支持将源文件解压后然后复制目标目录

(10)VOLUME【“目录”】

在容器中创建一个数据卷

(11)USER 用户名/UID

指定运行容器时的用户

(12)WORKDIR 路径

为后续的RUN 、CMD、ENTRYPOINT指定工作目录

用于切换当前工作目录用的

(13)ONBUILD 命令

 (14)ARG

设置编译镜像时加入的参数

 

 

  • 第一行必须使用FROM指令指明所有基于的镜像名称
  • 之后使用MAINTAINER指令说明维护镜像的用户信息
  • 然后是镜像操作的相关指令,如RUN指令,每运行一条指令,都会给基础镜像添加新一层
  • 最后使用CMD指令指定启动容器要运行的命令操作

Dockerfile 案例部署

 脚本:

 构建SSH镜像

 

 systemclt镜像

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chiu莓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值