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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值