《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

目录
相关文章
|
8月前
|
存储 安全 数据建模
Docker数据卷深入解析与操作技巧
通过巧妙使用Docker数据卷,我们就能实现数据的灵活管理和无缝迁移,享受容器化的便捷,同时确保数据的安全与高效共享。
157 6
|
6月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
10月前
|
存储 Kubernetes 调度
Kubernetes、Docker和Containerd的关系解析
总的来说,Docker、Containerd和Kubernetes之间的关系可以用一个形象的比喻来描述:Docker就像是一辆装满货物的卡车,Containerd就像是卡车的引擎,而Kubernetes就像是调度中心,负责指挥卡车何时何地送货。
443 12
|
11月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
12月前
|
存储 人工智能 程序员
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
736 9
|
12月前
|
云安全 人工智能 安全
阿里云网络安全体系解析:如何构建数字时代的"安全盾牌"
在数字经济时代,阿里云作为亚太地区最大的云服务提供商,构建了行业领先的网络安全体系。本文解析其网络安全架构的三大核心维度:基础架构安全、核心技术防护和安全管理体系。通过技术创新与体系化防御,阿里云为企业数字化转型提供坚实的安全屏障,确保数据安全与业务连续性。案例显示,某金融客户借助阿里云成功拦截3200万次攻击,降低运维成本40%,响应时间缩短至8分钟。未来,阿里云将继续推进自适应安全架构,助力企业提升核心竞争力。
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
3325 11
|
Docker 容器
在Docker中,Dockerfile有哪些常见指令?
在Docker中,Dockerfile有哪些常见指令?
|
Linux Docker 容器
Docker Dockerfile 语法与指令
Docker Dockerfile 语法与指令
301 0
|
应用服务中间件 Linux Shell
Docker进阶 dockerfile指令构建docker镜像
Docker进阶 Dockerfile指令,编译dockerfile文件构建镜像,dockerfile常用指令,实操训练:Dockerfile构建Nginx镜像: FROM #指定基础镜像,一切从这里开始构建 MAINTAINER #镜像是谁写的,姓名+邮箱 RUN #镜像构建的时候需要运行的命令 ADD #步骤:tomcat镜像,这个tomcat压缩包!添加内容 WORKDIR #镜像的工作目录 VOLUME #挂载的目录 EXPOST #暴露端口配置
Docker进阶 dockerfile指令构建docker镜像

推荐镜像

更多
  • DNS