使用Dockerfile定制镜像流程笔记

Dockerfile定制镜像

1. 创建文件夹,并在文件夹里创建名为Dockerfile 的文件
2. 在Dockerfile里写构建镜像的语句
关键字 作用
FROM 指定基础镜像
MAINTAINER 维护者的信息
RUN 执行什么命令
EXPOSE 声明容器对外服务的端口
WORKDIR 指定工作目录
ENV 配置环境变量
ADD 将文件拷贝到镜像中并解压
COPY 将文件拷贝到镜像中
VOLUME 配置数据卷
CMD 容器启动时候执行的命令
ENTRYPOINT 容器启动时候执行的命令

编写Dockerfile文件注意点

FROM ubuntu:18.04                        #指定基础镜像,这一句必须要有
MAINTAINER  Evan_Tang@admin.com          #维护者信息(可以不写)
RUN apt-get install -y vim               #执行 apt-get install -y vim 命令,安装vim
RUN apt-get install -y net-tools         #执行 apt-get install -y net-tools, 安装net-tools工具
WORKDIR /dev/                            #启动容器后,如果启动交互模式,直接进入到哪个目录
CMD ["/bin/bash"]                        #启动容器的时候,进入到/bin/bash这种命令行
  • FROM 表示指定基础镜像 >如果没有基于镜像则用scratch表示

  • RUN 表示运行命令 可以使用shell格式或者使用exec格式

    • shell格式:RUN 后面直接接命令。
    • exec 格式:RUN ["可执行文件", "参数1", "参数2"]
  • COPY 原路径 目标路径 将上下文的路径的文件复制一份到新镜像的目标路径

  • ADD 和COPY基本一样 如果拷贝压缩文件 ADD命令会进行解压(会令构建镜像缓存失效不推荐使用,尽可能使用COPY)

  • CMD和ENTRYPOINT 都用是启动命令都只能有一个生效,最后出现的生效,
    如果同一个Dockerfile文件同时出现CMD和ENTRYPOINT,CMD在前ENTRYPOINT在后 CMD无效,如果ENTRYPOINT在前CMD在后,CMD可能无效而被当作ENTRYPOINT的参数

FROM ubuntu:18.04                      
MAINTAINER  Evan_Tang@admin.com  
RUN mkdir -p /datas/ 
ENTRYPOINT ["echo", "hello"]
CMD ["world"]                           #会将world作为echo hello的参数,最后的命令其实为echo hello world 
  • ubuntu镜像默认的CMD是/bin/bash,如果我们直接docker run -it ubuntu的话,会直接进入bash,可以在运行时用cat 路径/文件名指定运行别的命令

  • ENV用于设置环境变量 ENV <key> <value>

  • VOLUME用于设置数据卷 VOLUME <路径>

  • EXPOSE 声明提供服务的端口并不会开启这个端口 EXPOSE <端口1>

  • WORKDIR 用于指定工作目录,如果目录不存在会建立目录

  • Dockerfile中的每一个指令都会建立一层,所以在编写RUN >时我们需要考虑进行RUN合并减少RUN的条数

  • \ 表示换行 && 用于连接两条语句

  • 每层构建后需要清理掉无用的东西,减少构建的镜像体积

  • 写完后使用 :wq 退出保存

3. 在有Dockerfile的文件目录下执行 docker build -t 镜像名:镜像标签 .(有个空格点别忘了)

构建命令中最后一个点 表示当前目录,指定上下文的路径,构建镜像时并不是在本地构建的,而是在服务端,也就是 Docker 引擎中构建的,执行构建命令时会将上下文路径下的内容打包发送到服务端执行构建

4. 构建成功后可以使用 docker images 查看镜像 使用docker image rm <镜像>(可以是镜像短 ID、镜像长 ID、镜像名或者镜像摘要)删除镜像
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容