《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结

简介: 《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结

image.png

@[toc]

二、高级篇(大厂进阶)

2.DockerFile解析

image.png

2.1 是什么

image.png

问题:DockerFile是什么?

答案:Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

2.2 DockerFile构建过程解析

image.png

  • Docker执行Dockerfile的大致流程
    (1)docker从基础镜像运行一个容器
    (2)执行一条指令并对容器作出修改
    (3)执行类似docker commit的操作提交一个新的镜像层
    (4)docker再基于刚提交的镜像运行一个新容器
    (5)执行dockerfile中的下一条指令直到所有指令都执行完成
  • 小总结
    image.png

2.3 DockerFile常用保留字指令

image.png
image.png

注意点1:
ENV-用来在构建镜像过程中设置环境变量
image.png

注意点2:
ENTRYPOINT-命令格式和案例说明
image.png

注意点3:
RUN-两种格式

  • shell格式
    image.png

  • exec格式
    image.png

注意点4:
CMD-指定容器启动后的要干的事情
image.png

注意点5:
小总结
image.png

2.4案例

image.png

2.4.1自定义镜像mycentosjava8

image.png

使用步骤:
1)编写Dockerfile文件
2)构建:docker build -t 新镜像名字:TAG .
3)运行:docker run -it 新镜像名字:TAG

注意点1:
JDK的下载镜像地址,官网下载地址:https://www.oracle.com/java/technologies/downloads/#java8

image.png

其他下载地址:https://mirrors.yangxingzhen.com/jdk/
image.png

注意点2:
执行命令创建目录:mkdir /myfile -> 进入 /myfile目录 -> 准备编写Dockerfile文件执行命令vim Dockerfile -> 大写字母D
image.png

FROM centos:7
MAINTAINER zzyy
ENV MYPATH /usr/local
WORKDIR $MYPATH
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash

注意点3:
构建命令docker build -t 新镜像名字:TAG .

docker build -t centosjava8:1.5 .

image.png
image.png

注意点4:

问题:执行命令:docker build -t centosjava8:1.5 .可能会报错如图?

image.png

答案:尚硅谷视频安装的是Centos7环境,而你看红框显示Cnetos8进行下载,明显版本不匹配。
视频原配置为FROM centos
所以需要配置版本号Dockerfile的from命令为FROM centos:7,注意后面有版本号,而视频源代码为FROM centos。

详情请看其他人博客:https://blog.csdn.net/weixin_45630258/article/details/124361367?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166011738116781790737138%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166011738116781790737138&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-124361367-null-null.142^v40^pc_rank_34_ctr0,185^v2^control&utm_term=The%20command%20%2Fbin%2Fsh%20-c%20yum%20-y%20install%20vim%20returned%20a%20non-zero%20code%3A%201&spm=1018.2226.3001.4187

注意点5:
运行命令docker run -it 新镜像名字:TAG

 docker run -it centosjava8:1.5 /bin/bash

image.png

注意点6:
再体会下UnionFS(联合文件系统)
image.png

2.4.2 虚悬镜像

image.png

注意点1:

问题:虚悬镜像是什么?

答案:仓库名、标签都是的镜像,俗称dangling image

注意点2:
Dockerfile写一个虚悬镜像

1 vim Dockerfile
from ubuntu
CMD echo 'action is success'

2 docker build .

image.png

注意点3:
虚悬镜像查看命令docker image ls -f dangling=true
命令结果
image.png

注意点4:
虚悬镜像删除命令docker image prune
image.png

2.5 小总结

image.png

本人其他相关文章链接

1.《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
2.《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
3.《docker高级篇(大厂进阶):3.Docker微服务实战》
4.《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
5.《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
6.《docker高级篇(大厂进阶):6.Docker轻量级可视化工具Portainer》
7.《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
8.docker基础篇:安装tomcat
9.docker基础篇:安装mysql单机版
10.docker基础篇:安装redis单机版
11.docker高级篇(大厂进阶):安装mysql主从复制
12.docker高级篇(大厂进阶):安装redis集群

image.png

重要信息

image.png

目录
相关文章
|
2月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
4月前
|
存储 安全 数据建模
Docker数据卷深入解析与操作技巧
通过巧妙使用Docker数据卷,我们就能实现数据的灵活管理和无缝迁移,享受容器化的便捷,同时确保数据的安全与高效共享。
66 6
|
6月前
|
存储 Kubernetes 调度
Kubernetes、Docker和Containerd的关系解析
总的来说,Docker、Containerd和Kubernetes之间的关系可以用一个形象的比喻来描述:Docker就像是一辆装满货物的卡车,Containerd就像是卡车的引擎,而Kubernetes就像是调度中心,负责指挥卡车何时何地送货。
268 12
|
7月前
|
开发框架 .NET 中间件
.net8 使用 license 证书授权案例解析
本文介绍了如何使用 `.NET CLI` 创建并改造一个 `ASP.NET Core Web API` 项目,以实现基于许可证的授权机制。具体步骤包括创建项目、添加必要的 NuGet 包(如 `Standard.Licensing` 和 `Swashbuckle.AspNetCore`),以及修改 `Program.cs` 文件以集成自定义的许可证验证中间件。项目结构中新增了 `LicenseController` 接口用于处理授权相关操作,并通过测试流程验证了默认天气接口在未授权和授权状态下的响应情况。整个过程确保了应用程序能够在启动时正确验证许可证,保障系统的安全性与可控性。
337 8
.net8 使用 license 证书授权案例解析
|
7月前
|
机器学习/深度学习 人工智能 搜索推荐
技术革新下的培训新趋势:案例解析
从最初的“试试看”,到如今的“非做不可”,企业培训已经成为央国企和上市公司不可或缺的战略环节。无论是AI与大模型的赋能,DeepSeek,还是具身智能、智算技术和数据科学的实战应用,这些课程都在为企业打开新的可能性。
|
7月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
存储 人工智能 程序员
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
556 9
|
8月前
|
云安全 人工智能 安全
阿里云网络安全体系解析:如何构建数字时代的"安全盾牌"
在数字经济时代,阿里云作为亚太地区最大的云服务提供商,构建了行业领先的网络安全体系。本文解析其网络安全架构的三大核心维度:基础架构安全、核心技术防护和安全管理体系。通过技术创新与体系化防御,阿里云为企业数字化转型提供坚实的安全屏障,确保数据安全与业务连续性。案例显示,某金融客户借助阿里云成功拦截3200万次攻击,降低运维成本40%,响应时间缩短至8分钟。未来,阿里云将继续推进自适应安全架构,助力企业提升核心竞争力。
|
7月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
639 29
|
7月前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
185 4

推荐镜像

更多
  • DNS