docker使用教程相关系列 目录


目录

什么是 dockerfile

docker镜像制作的工作逻辑

Dockerfile的基本结构

Dockerfile格式 案例:

Build镜像


我们之前学习,docker的镜像都是官方给定义好的,我们可不可以 自己创造镜像呢。

什么是 dockerfile

  • dockerfile,相当于是一个文档,客户可以基于dockerfile生成新的容器
  • dockerfile 是用来制作镜像的源码文件,是构建容器过程中的指令。
  • docker能够读取dockerfile的指定进行自动构建容器,基于dockerfile制作镜像
  • 每一个指令都会创建一个镜像层,即镜像都是多层叠加而成,因此,层越多,效率越低,创建镜像,层越少越好。因此能在一个指令完成的动作尽量通过一个指令定义。

白话文:名为Dockerfile 的文件,里面写了 Dockerfile的必需存在的几点,然后build一下 他就变成了镜像。

docker镜像制作的工作逻辑

  • 首先需要有一个制作镜像的目录,该目录下有个文件,
  • 名称必须为Dockerfile,Dockerfile有指定的格式
  • 这个是在docker的convention,如果用过C语言的makefile,应该就会了解。都是一些编程语言的约定。固定的名字,docker程序代码中写好的。
  • 自己命名的话: docker build -t test -f dockerfile .
  • #号开头为注释。指定默认用大写字母来表示,以区分指令和参数。
  • docker build 读取Dockerfile是按顺序依次Dockerfile里的配置,且第一条非注释指令必须是FROM 开头,表示基于哪个基础镜像来构建新镜像。可以根据已存在的任意镜像来制作新镜像。

Dockerfile的基本结构

Dockerfile 一般分为四部分:

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时执行指令
    接下来详细介绍
    ‘#’ 是 Dockerfile 中的注释。

Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。

vim Dockerfile

Dockerfile格式 案例:

执行顺序是从上到下,依次执行

指令 描述
FROM 构建新景象是基于那个镜像
MAINTAINER 镜像维护者姓名或邮箱地址
LABEL 给镜像添加信息。
RUN 构建镜像时运行的Shell命令
ADD 将本地文件添加到容器中
COPY 拷贝文件或目录到景象中
ENV 设置环境变量
USER 为RUN、CMD 和 ENTRYPOINT 执行命令指定运行用户
ARG 由外部启动时必须传入的参数,在容器启动时用–build-arg传递参数
EXPOSE 声明容器运行服务端口
HEALTHCHECK 容器中服务健康检查
VOLUME 用于指定持久化目录
WORKDIR 为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录
ENTRYPOINT 运行容器时执行,如果有多个 ENTRYPOINT 命令,最后一个生效
CMD 运行容器时执行,如果有多个CMD指令,最后一个生效

Build镜像

docker build 是一条docker的命令,用于使用 Dockerfile 创建镜像。
Build方式需要写一个配置文件,然后利用当前是已存在的image,按照配置文件进行调整生成新的image。

参数格式:

docker build [OPTIONS] PATH |URL| -[flags]Options:
-t, --tag list   # 镜像名称
-f, --fire string   # 指定 Dockerfile文件位置
# Options 其他参数 docker build --helpOptions:--add-host list           Add a custom host-to-IP mapping (host:ip) # 添加自定义主机到ip的映射(主机:ip)--build-arg list          Set build-time variables # 设置构建时变量--cache-from strings      Images to consider as cache sources# 要考虑作为缓存源的图像--cgroup-parent string    Optional parent cgroup for the container# 容器的可选父cgroup--compress                Compress the build context using gzip# 使用gzip压缩构建上下文--cpu-period int          Limit the CPU CFS (Completely Fair Scheduler) period# 限制CPU CFS(完全公平调度程序)周期--cpu-quota int           Limit the CPU CFS (Completely Fair Scheduler) quota# 限制CPU CFS(完全公平调度程序)配额
-c, --cpu-shares int          CPU shares (relative weight)# CPU份额(相对权重)--cpuset-cpus string      CPUs in which to allow execution (0-3, 0,1)# 允许执行的cpu (0- 3,0,1)--cpuset-mems string      MEMs in which to allow execution (0-3, 0,1)# 允许执行的MEMs (0- 3,0,1)--disable-content-trust   Skip image verification (default true)# 跳过图像验证(默认为真)
-f, --file string             Name of the Dockerfile (Default is 'PATH/Dockerfile')# Dockerfile的名称(默认为‘PATH/Dockerfile’)--force-rm                Always remove intermediate containers# 总是移除中间容器--iidfile string          Write the image ID to the file# 将图像ID写入文件--isolation string        Container isolation technology# 容器隔离技术--label list              Set metadata for an image# 设置图像的元数据
-m, --memory bytes            Memory limit# 存储容量极限 / 内存限制--memory-swap bytes       Swap limit equal to memory plus swap: '-1' to enable unlimited swap# 交换限制等于内存加交换:'-1'以启用无限交换--network string          Set the networking mode for the RUN instructions during build (default "default")# 在构建期间为运行指令设置连网模式(默认为“default”)--no-cache                Do not use cache when building the image# 在构建映像时不使用缓存--pull                    Always attempt to pull a newer version of the image# 总是尝试拉一个较新的版本的图像
-q, --quiet                   Suppress the build output and print image ID on success# 如果成功,则禁止生成输出并打印图像ID--rm                      Remove intermediate containers after a successful build (default true)# 成功构建后删除中间容器(默认为true)--security-opt strings    Security options# 安全选项--shm-size bytes          Size of /dev/shm# 大小 /dev/shm
-t, --tag list                Name and optionally a tag in the 'name:tag' format# 名称和“Name:tag”格式的标记(可选)--target string           Set the target build stage to build.# 设置要构建的目标构建阶段。--ulimit ulimit           Ulimit options (default [])# Ulimit选项(默认[])

Dockerfile介绍 和 docker build常用命令介绍相关推荐

  1. Docker安装及镜像配置(常用命令介绍)

    一.安装Docker 官网 https://docs.docker.com/engine/install/centos/ # 1.卸载旧的版本 yum remove docker \docker-cl ...

  2. Hadoop生态圈-zookeeper本地搭建以及常用命令介绍

    Hadoop生态圈-zookeeper本地搭建以及常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载zookeeper软件 下载地址:https://www.ap ...

  3. linux系统防火墙相关问题及常用命令介绍

    今天介绍关于linux系统防火墙:centos5.centos6.redhat6系统自带的是iptables防火墙,centos7.redhat7自带firewall防火墙,ubuntu系统使用的是u ...

  4. Hadoop常用命令介绍

    下面分享一篇 常用的Hadoop命令介绍,希望对Hadoop初学者的朋友有所帮助~ Hadoop常用命令介绍

  5. alsa-util常用命令介绍

    目录 版本获取 前言 常用命令介绍 amixer aplay arecord 前言 我们在audio启动调试的时候,经常会遇到这样一个问题,就是我们调试时间很紧迫,并且所有的组件都在开机调试,有可能这 ...

  6. Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)

    Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩)         ...

  7. Linux中sysstat服务,Linux sysstat常用命令介绍

    一.sysstat 软件安装 下载sysstat软件包,解压 tar zxvf *.tar.gz ./configure make make install 二.sar 命令介绍 sar -h 用法: ...

  8. php基础命令,PHP命令行下的11个常用命令介绍

    本文整理了PHP命令行下的11个常用命令,下面介绍给大家,它们分别是php -m.php -v.php --ini.php -h.php --info.php --rf .php --rc .php ...

  9. Docker客户端常用命令整理

    之前在 https://blog.csdn.net/fengbingchun/article/details/109584460 中介绍过在Windows10家庭版和Ubuntu16.04上安装Doc ...

最新文章

  1. python将字典导入excel_python将字典列表导出为Excel文件的方法
  2. LeetCode 737. 句子相似性 II(并查集)
  3. 天津理工大学计算机调剂信息,天津理工大学2020考研调剂信息
  4. Spring JMS 整合 ActiveMQ
  5. Appium移动端自动化测试之元素定位(三)
  6. PERC5/6 RAID配置中文手册
  7. atitit.提升开发效率---动态语言总结
  8. Java实现Excel数据导入数据库
  9. C++ 相关职位的要求
  10. 程序猿如何提高申购新股中签率
  11. 在html里怎么给表单加上边框,html如何给table表单加边框
  12. win10 安装 SqlServer2008 亲测可行
  13. 一个好的软件,除了给我们带来效率,更重要的是为我们带来了快乐!
  14. 你需要知道的8种数据结构
  15. Visual C++网络编程经典案例详解 第9章 实用播放器 数据读取与播放控制 识别数据文件信息
  16. 汽车行业OTD业务模式入门学习
  17. 你知道GPU对Ansys Fluent仿真有多重要吗?
  18. java工程师英文简历_软件工程师英文简历范文
  19. 艾奇android视频格式转换器,艾奇android视频格式转换器 全部输出格式列表
  20. android 矢量粒子动画,android 手摸手教你用 Canvas 实现简单粒子动画

热门文章

  1. Sofia的同步与多线程
  2. 英业达 GameOver
  3. 【NOIP】入门题题解— —小玉买文具、P老师买铅笔
  4. 映射:每个国家/地区的主要出口商品
  5. 华为注册了整本山海经?这是专属于中国人的终极浪漫!
  6. 三周年!hoho~~
  7. 脑梗偏瘫怎么康复?顾连康复医院治疗脑梗偏瘫效果
  8. 线至板接线端子-市场现状及未来发展趋势
  9. 掌优刷脸支付品牌保证费率低
  10. BCGControlBar Pro 31.2 正式版-Key