docker file 学习

dockerfile 的作用是将本地文件打包成docker镜像以供使用,这里详细说下他的个个参数
首先是FORM
FORM 是指定你的镜像是基于那个镜像之上运行的,一般来说就是写各种服务器的镜像名,比如nginx,ubuntu,apche等等。

FROM nginx

然后MAINTAINER,就是写作者,这里就可以写下你的大名了

MAINTAINER "hahahah"

接着 WORKDIR,WORKDIR指令为Dockerfile中的任何 RUN、CMD、ENTRYPOINT、COPY 和 ADD指令设置工作目录。如果WORKDIR不存在,即使在后续的Dockerfile指令中不使用它,也会创建它。

WORKDIR /www/wwwroot/test

WORKDIR指令可以在Dockerfile中多次使用。如果提供了一个相对路径,它将相对于前面的WORKDIR指令的路径。

WORKDIR /a
WORKDIR b
WORKDIR c

COPY和ADD
这里ADD其实就是COPY的加强版,作用就是把本地文件复制到docker镜像中的指定位置,ADD比较COPY还可以将本地目录改为一个链接,或者一个gzip, bzip2 以及 xz的压缩包,ADD会自动下载,解压。

ADD . /www/wwwroot/test

"."的意义是当前目录,这个操作就是将当前目录下的所有文件都复制到镜像中/www/wwwroot/test目录下。
RUN
RUN 的作用就是执行你的一个命令,然后将执行命令后镜像在原有的基础上新建一层,这里的话就要讲下docker的基础,分层镜像了。
首先docker镜像的本质是。一个docker镜像由多个可读的镜像层组成,然后运行的容器会在这个docker的镜像上面多加一层可写的容器层,任何的对文件的更改都只存在此容器层。因此任何对容器的操作均不会影响到镜像。
它的基础层就是你form的镜像,然后你每写一个run,它就加一层,所以过多无意义的层,会造成镜像膨胀过大。能够一次写完的就尽量只写一个run

FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
以上执行会创建 3 层镜像。可简化为以下格式:
FROM centos
RUN yum install wget \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
    && tar -xvf redis.tar.gz

CMD
类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:

CMD 在镜像打包好了,使用docker run的时候默认的命令
RUN 是在dockerfile镜像打包的时候运行,

CMD ["/bin/echo", "this is a echo test"]
CMD echo "this is a echo test"

但是这里有个问题,就是cmd里的这个“this is a echo test”是写死的,如果你想要在docker run的时候才输入想要echo的参数,那么就要用
ENTRYPOINT
在使用了ENTRYPOINT之后,CMD就不在是一个shell命令了,而是一个默认参数

CMD ["this is a echo test"]
ENTRYPOINT echo

这是时候如果你直接运行

docker run test 

那么会输出

this is a echo test

如果你带上参数

docker run test hahahahah

就会输出

hahahahah
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值