Dockerfile相关指令

本文深入解析Dockerfile的指令用法,包括基础镜像选择、工作目录设定、环境变量配置、端口映射等,同时介绍了如何利用Dockerfile进行分层构建,提升构建效率。

FROM

FROM centos #制作基准镜像(基于centos:lastest)

From scratch #不依赖任何基准镜像base image

尽量使用官方提供的Base Image

WORKDIR设置工作目录

WORKDIR /usr/local

WORKDIR /usr/local/lql #自动创建

尽量使用绝对路径

ADD -复制文件

ADD hello / #复制到根路径

ADD test.tar.gz /#添加到根路径并压缩

ADD除了复制,还有添加远程文件的功能

ENV-设置环境常量

ENV JAVA_HOME /usr/local/openjdk8

RUN { JAVA_HOME }/bin/java –jar test.jar

尽量使用环境常量,提高程序的维护性

EXPOSE-暴露容器端口

EXPOSE 8080

EXPOSE 3306

将容器内部端口暴露给物理机

 

分层

 

FROM centos              //镜像层

RUN ["echo" , "好好学习"]  //镜像层

RUN ["echo" , "天天向上"]  //镜像层

RUN ["echo" , "人见人爱"]  //镜像层

RUN ["echo" , "花见花开"]  //镜像层

 

 

[root@rabbitmq1 layer]# docker build -t mylayer:1.0 /opt/layer/ 

Sending build context to Docker daemon  2.048kB

Step 1/5 : FROM centos

latest: Pulling from library/centos

729ec3a6ada3: Pull complete

Digest: sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9

Status: Downloaded newer image for centos:latest

 ---> 0f3e07c0138f

Step 2/5 : RUN ["echo" , "好好学习"]

 ---> Running in b4ae7c86dd0e  //镜像层

好好学习

Removing intermediate container b4ae7c86dd0e

 ---> 52faaa758bea

Step 3/5 : RUN ["echo" , "天天向上"]

 ---> Running in 7d0a93acf720

天天向上

Removing intermediate container 7d0a93acf720

 ---> f504016c92a8

Step 4/5 : RUN ["echo" , "人见人爱"]

 ---> Running in b31259b25987

人见人爱

Removing intermediate container b31259b25987

 ---> fecfcd9995fc

Step 5/5 : RUN ["echo" , "花见花开"]

 ---> Running in 42a9c0e036c3

花见花开

Removing intermediate container 42a9c0e036c3

 ---> 5160b9150fc2

Successfully built 5160b9150fc2

Successfully tagged mylayer:1.0

 

只有变化的部分重新构建,没有变化的部分不会重新构建,从缓存中取出

RUN&CMD&ENTRYPOINT

RUN:在Build构建时执行命令

RUN [“yum”,”install”,”-y”,”vim”] #Exec命令格式

ENTRYPOINT:容器启动时执行的命令

   用于容器启动时执行命令

   Dockerfile只有最后一个ENTRYPOINT被执行

ENTRYPOINT[“ps”]推荐使用exec格式

CMD:容器启动后执行默认的命令或参数

   用于设置默认执行的命令

   Dockerfile出现多个CMD,只有最后一个

   容器启动时附加命令,则CMD被忽略

   CMD[“ps”, “ef”] #推荐使用exec格式

ENTRYPOINT于CMD区别

ENTRYPOINT:执行的固定的命令

CMD:执行的是默认的命令,外部一旦有参数,CMD命令会失效

 

实例

[root@rabbitmq1 opt]# docker build -t shell /opt/shell/

Sending build context to Docker daemon  2.048kB

Step 1/4 : FROM centos

 ---> 0f3e07c0138f

Step 2/4 : RUN echo "image building!!"

 ---> Running in 46cee04ff86c

image building!!

Removing intermediate container 46cee04ff86c

 ---> 71a6c43b7eae

Step 3/4 : ENTRYPOINT ["ps"]

 ---> Running in d8a57b6e5412

Removing intermediate container d8a57b6e5412

 ---> b0ae531425df

Step 4/4 : CMD ["-ef"]

 ---> Running in d0688f5b7a3a

Removing intermediate container d0688f5b7a3a

 ---> e0daac469b04

Successfully built e0daac469b04

Successfully tagged shell:latest

 

[root@rabbitmq1 opt]# docker run shell

UID         PID   PPID  C STIME TTY          TIME CMD

root          1      0  0 13:00 ?        00:00:00 ps –ef

 

此时内部执行的命令是:ps –ef

 

[root@rabbitmq1 opt]# docker run shell -aux

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root          1  0.0  0.0  46332  1708 ?        Rs   13:01   0:00 ps –aux

此时内部执行的命令是:ps –aux

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)内容概要:本文介绍了基于实时迭代的数值鲁棒非线性模型预测控制(NMPC)双模稳定预测模型的研究与Matlab代码实现,重点在于通过数值方法提升NMPC在动态系统中的鲁棒性与稳定性。文中结合实时迭代机制,构建了能够应对系统不确定性与外部扰动的双模预测控制框架,并利用Matlab进行仿真验证,展示了该模型在复杂非线性系统控制中的有效性与实用性。同时,文档列举了大量相关的科研方向与技术应用案例,涵盖优化调度、路径规划、电力系统管理、信号处理等多个领域,体现了该方法的广泛适用性。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事自动化、电气工程、智能制造等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于解决非线性动态系统的实时控制问题,如机器人控制、无人机路径跟踪、微电网能量管理等;②帮助科研人员复现论文算法,开展NMPC相关创新研究;③为复杂系统提供高精度、强鲁棒性的预测控制解决方案。; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,重点关注NMPC的实时迭代机制与双模稳定设计原理,并参考文档中列出的相关案例拓展应用场景,同时可借助网盘资源获取完整代码与数据支持。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值