Docker核心技术之Dockerfile

简介: Docker核心技术之Dockerfile

一、Dockerfile简介


Dockerfile其实就是根据特定的语法格式撰写出来的一个普通的文本文件 利用docker build命令依次执行在Dockerfile中定义的一系列命令,最终生成一个新的镜像(定制镜像)


二、Dockerfile 示例与使用


Dockerfile参考示例


20190502092218524.png20190502092241853.png20190502092412638.png


Dockerfile使用演示 – docker build


20190502092456342.png


Dockerfile使用命令 – docker build


作用:     根据dockerfile创建镜像


命令格式:     docker build [OPTIONS] PATH | URL | -


命令参数:     PATH        Dockerfile所在路径(文件夹路径),文件名必须是Dockerfile    


                      URL        Dockerfile所在URL地址          


                      OPTIONS:         -t, --tag list        为镜像设置名称和tag        


                                                -f, --file string        指定Dockerfile的路径(这是可以使用其他名称命名Dockerfile)


三、Dockerfile 特征


Dockerfile 构建特征(一)


查看官方的Dockerfile:https://github.com/docker-library/docs


20190502102328231.png


Dockerfile 构建特征(二)


Dockerfile必须具备一个FROM命令来进行构建


每一个Dockerfile命令都会构建一层镜像(本质上是每一层都会启动一个容器,执行完命令后,将容器进行提交后,产生新的镜像层)


通过查看下载下来的镜像,发现历史层信息的层ID是missing,其实是因为原本的层id只存在于构建镜像的宿主机上,一旦转移镜像后,历史层消息中将只保留最新一层的ID


四、Dockerfile 命令概述


Dockerfile 命令概述(一)


查看完整介绍


FROM: 指定基础镜像


RUN: 构建镜像过程中需要执行的命令。可以有多条。docker build


CMD:添加启动容器时需要执行的命令。多条只有最后一条生效。可以在启动容器时被覆盖和修改。


ENTRYPOINT:同CMD,但这个一定会被执行,不会被覆盖修改。


MLABELAINTAINER:表明镜像的作者。将被遗弃,被LABEL代替。


EXPOSE:设置对外暴露的端口。


ENV:设置执行命令时的环境变量,并且在构建完成后,仍然生效


ARG:设置只在构建过程中使用的环境变量,构建完成后,将消失


ADD:将本地文件或目录拷贝到镜像的文件系统中。能解压特定格式文件,能将URL作为要拷贝的文件


COPY:将本地文件或目录拷贝到镜像的文件系统中。


VOLUME:添加数据卷


USER:指定以哪个用户的名义执行RUN, CMD 和ENTRYPOINT等命令


WORKDIR:设置工作目录


Dockerfile 命令概述(二)


ONBUILD:如果制作的镜像被另一个Dockerfile使用,将在那里被执行Docekrfile命令


STOPSIGNAL:设置容器退出时发出的关闭信号。


HEALTHCHECK:设置容器状态检查。


SHELL:更改执行shell命令的程序。Linux的默认shell是[“/bin/sh”, “-c”],Windows的是[“cmd”, “/S”, “/C”]。


五、总结


重点掌握: Docker 容器与镜像之间的关系(尤其commit命令的作用和效果)


                  Dockerfile 的书写规则和使用规则


 20190502105704401.png


目录
相关文章
|
18天前
|
运维 持续交付 Docker
深入理解Docker容器化技术
深入理解Docker容器化技术
|
22天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
288 11
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
1天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
13 3
|
1天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
13 3
|
5天前
|
持续交付 开发者 Docker
探索容器化技术Docker及其在现代软件开发中的应用
探索容器化技术Docker及其在现代软件开发中的应用
|
10天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
14天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
18天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
13天前
|
Kubernetes Docker 容器
掌握Docker容器化技术:从入门到实战
掌握Docker容器化技术:从入门到实战
20 0
|
18天前
|
数据中心 开发者 Docker
理解并实践Docker容器化技术
理解并实践Docker容器化技术