前言:近年来 Docker 非常火,想要玩好 Docker 的话 Dockerfile 是绕不开的,这就好比想要玩好 Linux 服务器绕不开 shell 道理是一样的。今天我们就来聊一聊 Dockerfile 怎么写,那些指令到底是什么意思。
一、先来看一个简单的 Dockerfile

#这个Dockerfile作用是打一个python3项目环境

二、Dockerfile 编写规则

指令到小写不敏感,为了区分习惯上用大写
Dockerfile 非注释行第一行必须是 FROM
文件名必须是 Dockerfile
Dockerfile 指定一个专门的目录为工作空间
所有引入映射的文件必须在这个工作空间目录下
Dockerfile 工作空间目录下支持隐藏文件(.dockeringore)
(.dockeringore)作用是用于存放不需要打包导入镜像的文件,根目录就是工作空间目录
每一条指令都会生成一个镜像层,镜像层多了执行效率就慢,能写成一条指定的就写成一条

三、Dockerfile 指令详解
1.FROM:基础镜像

1.1、FROM是Dockerfile文件开篇第一个非注释行代码

2.MAINTAINER:镜像作者信息

2.1、废弃了,使用LABLE替代

3.LABLE:镜像描述信息

3.1、LABLE author=“haili”

4.COPY:从 Docker 宿主机复制文件至创建的新镜像文件

4.1、COPY

5.ADD:类似于 COPY 指令,ADD 支持 tar 文件和 URL 路径

5.1、ADD

6.WORKDIR:用于为 Dockerfile 中所有的 RUN、CMD、ENTRYPOINT、COPY、ADD 指定设定工作目录

6.1、WORKDIR /mnt,如果目录不存在会自动创建,包括他的父目录

7.VOLUME:数据卷,用于在 image 中创建挂载点目录,以挂载 Docker host 上的卷或者其他容器上的卷

7.1、VOLUM mount_point

8.EXPOSE:为容器打开指定的监听端口以实现与外部通信

8.1、EXPOSE

9.ENV:用于为镜像定义所需的环境变量,可以被 Dockerfile 文件中其他命令调用(ENV、ADD、COPY、RUN、CMD)

9.1、ENV key value

10.RUN:docker build 镜像构建的时候需要执行的 shell 命令默认"/bin/sh -c"运行

10.1、docker build过程中需要执行的命令

11.CMD:启动容器指定默认要运行的程序或命令,默认"/bin/sh -c"运行

11.1、docker run过程中需要执行的命令

12.ENTRYPOINT:类型 CMD 指令的功能,用于为容器指定默认运行程序或命令

12.1、与CMD不同的是,由ENTRYPOINT启动的程序不会被docker run命令行指定的参数覆盖,这些命令行参数会被当做参数传递给ENTRYPOINT指定的程序

13.CMD 和 ENTRYPOINT 同时存在 Dockerfile 中

13.1、CMD的值会当做参数传递给ENTRYPOINT

14.USER:指定运行 image 时和 Dockerfile 中任何 RUN、CMD、ENTRYPOINT 指令指定的程序的用户

14.1、使用用户名或者UID

15.HEALTHCHECK:健康检查,定义一个命令用于检查主进程工作状态是否健康

15.1、HEALTHCHECK参数

16.SHELL:指定运行 RUN、CMD、ENTRYPOINT 的 shell 程序
17.OPSIGNAL:给主进程发送信号
18.ARG:docker build 过程中的参数

18.1、定义pyton镜像作者,通过参数传入

19.ONBUILD:用于在 Dockerfile 中定义一个触发器

19.1、Dockerfile1中加一个ONBUILD add file,当docker build -t=testpython Dockerfile1的时候ONBUIL
房子要一层一层盖,知识要一点一点学。大家在学习过程中要好基础,多上手实操,话不多说,这里狠狠上一次干货!我熬夜整理好的各阶段(功能、接口、自动化、性能、测开)技能学习资料+实操讲解,非常适合私下里学习,比找资料自学高效多了,分享给你们。

领取关 w/x/g/z/h:软件测试小dao

敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。

Docker 大热,还不了解 Dockerfile 你就OUT啦~相关推荐

  1. AI 时代,还不了解大数据?

    来自:IT人的职场进阶 如果要问最近几年,IT行业哪个技术方向最火?一定属于ABC,即AI + Big Data + Cloud,也就是人工智能.大数据和云计算. 这几年,随着互联网大潮走向低谷,同时 ...

  2. docker镜像的构建及Dockerfile的详解应用,镜像加速器,镜像优化

    docker镜像的构建及dockerfile的祥解应用 1.镜像的构建 1.1创建一个Dockerfile 1.2构建镜像 1.3查看镜像的分层结构 1.4镜像的缓存特性 2.Dockerfile详解 ...

  3. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  4. 都2021年了,不会还有人连深度学习还不了解吧(六)-- Padding篇

    导读 本篇文章主要介绍CNN中常见的填充方式Padding,Padding在CNN中用的很多,是CNN必不可少的组成部分,使用Padding的目的主要是为了调整输出的大小,是必须搞清楚的知识点.如果你 ...

  5. 附005.Docker Compose文件详解

    一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域: version:用于指定当前docker-compose.yml语法遵循哪个版本 services:服 ...

  6. docker常用参数详解,docker run常用参数详解(精)

    1. 查询github上的镜像 docker search sybase 2. 下载 docker pull ifnazar/sybase_15_7 3. 删除镜像 docker rmi -f run ...

  7. 乘风破浪的迁移学习!四字成语讲明白这个大热研究方向

    导读:现在迁移学习大热,它红,是有它的道理的.什么是迁移学习?本文用最通俗易懂的语言为你讲解. 作者:木羊同学 来源:大数据DT(ID:hzdashuju) 迁移学习现在是很热的一个前沿研究方向. 当 ...

  8. dockerfile详解-dockerfile构建过程解析,dockerfile体系结构保留字解析,案例解析

    Dockerfile详解 1.定义:Dockerfile是用来构建Docker镜像的构建文件,是一系列命令和参数构成的脚本 2.步骤: --手动编写一个dockerfile文件,必须要要符合规范 -- ...

  9. kubernetes基础之docker file文件详解(百分之百空手接白刃篇)

    docker file让你有意想不到的收获 针对这个docker file自己也是找了好久,想着怎么可以用自己的话,讲出来.当你学习一个东西的时候,不是因为你学会了他就过,而是你还要试着给别人讲出来, ...

最新文章

  1. curl php 空,直接访问链接有数据,CURL GET 一片空白
  2. AJAX 缓存问题的两种解决方法(IE
  3. C# 发送电子邮件源码片段
  4. operator new在C++中的各种写法
  5. c语言甘勇第二版第五章答案,C语言(1) - Patata的个人页面 - OSCHINA - 中文开源技术交流社区...
  6. devops实践指南_开发DevOps的实用指南:减少八卦的步骤
  7. python面向对象和面向过程_python--什么是面向对象和面向过程,对象的进化,什么是对象...
  8. textarea文本框默认显示文本鼠标点击时清空
  9. python sklearn做文本分类
  10. Print 与Debug.Log的区别
  11. RatingBar的实现
  12. 基于R语言的贝叶斯网络模型、现代贝叶斯统计学方法
  13. 网络扫描实验(win10使用nmap,X-Scan工具使用)
  14. Acer 4750 安装黑苹果_黑苹果安装 你要知道的那些坑
  15. Nginx支持ipv6
  16. python统计字符串个数_python实现字符串中字符分类及个数统计
  17. windows10系统纯净版下载地址
  18. 【Web前端】【疑难杂症】轮播图图片自适应显示问题(bootstrap3轮播图)
  19. C语言实现贪吃蛇代码
  20. python小数乘法_运营管理案例分析:《质保主管 Hank Kolb》.docx

热门文章

  1. IT女孩特不烦恼---九月实习总结
  2. 机器人编程软件semia_AlphaRobot2S(Alpha2机器人PC编程软件)
  3. 【源码解读】BertLayer
  4. vue报错 ‘Cannot find module ‘D:\nodejs\node_modules\npm\bin\npm-cli.js‘
  5. 小实操(3): 利用键盘事件实现小人快跑
  6. minio分布式对象存储
  7. 前端性能优化总结/懒加载、函数节流、优化dom操作、雪碧图、合并文件
  8. mybatis-Springboot配置多数据源出现错误记录
  9. GreenPlum企业应用实践--第五章SQL执行计划
  10. 今晚直播,你该了解的MySQL 8.0 SQL优化新特性