Dockerfile

2020-10-22  本文已影响0人  小啊小狼

什么是 Dockerfile?

Dockerfile是一个创建镜像所有命令的文本文件, 包含了一条条指令和说明, 每条指令构建一层, 通过docker build命令,根据Dockerfile的内容构建镜像,因此每一条指令的内容, 就是描述该层如何构建.有了Dockefile, 就可以制定自己的docker镜像规则,只需要在Dockerfile上添加或者修改指令, 就可生成docker 镜像.

Dockerfile 四部分说明:

一.初探

根据上面4部分创建一个简单的Dockerfile

#This is a sample image
FROM ubuntu 
LABEL maintainer='liang@qq.com'
RUN apt-get update && apt-get install -y \ 
nginx
CMD [ 'echo', 'Hello liang' ]

二、文件内指令

1、FROM

1.base image为基础镜像
2.往往在一个Dockerfile文件中只有一个FROM指令(多阶段构建除外)
3.FROM后跟 镜像名:版本(如果本地没有,会自动去docker hub中下载)

2、LABEL

LABEL maintainer=‘’ 指定当前Dockerfile文件的维护者(作者)
LABEL description=‘’ 指定功能描述信息

3、RUN

Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大
可以用&&来连接多个需要执行的命令,这样执行后,只会创建 1 层镜像。
\ 表示换行

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

4、ENV

ENV username1=liang \
    password1=123456

5、COPY

相当于cp命令,将宿主机中的目录或者文件复制粘贴到容器中

COPY requirements.txt ./
COPY requirements.txt ./dir

6、ADD

 ADD one.zip ./
 ADD http://www.keyou.site:8866/static/img/logo.3eee1364.png ./

7、WORKDIR

相当于cd命令,切换到容器中的某个目录,如果指定的目录不存在,那么会自动化创建

WORKDIR /app

8、VOLUME

VOLUME指定容器运行时,需要映射出去的目录(容器中)

VOLUME /app

9、EXPOSE

EXPOSE指定容器运行时,需要映射出去的端口号(容器中)

EXPOSE 8080

10、CMD

#shell类型
CMD python fun.py
#exec类型,exec类型的命令["指令", "参数1", "参数2"],为json数组(必须得使用双引号)
CMD ["ls", "/"]

11、ENTRYPOINT

ENTRYPOINT ["ls", "/"]

三、使用Dockerfile构建镜像

可以使用如下命令将Dockerfile文件构建成镜像

构建完成后,docker images就可以查看到我们构建的镜像了,之后就可以根据需要使用此镜像了

上一篇 下一篇

猜你喜欢

热点阅读