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

news/2024/12/23 23:19:52/文章来源:https://www.cnblogs.com/bigcat26/p/18625267

@

目录
  • 二、高级篇(大厂进阶)
    • 2.DockerFile解析
      • 2.1 是什么
      • 2.2 DockerFile构建过程解析
      • 2.3 DockerFile常用保留字指令
      • 2.4案例
        • 2.4.1自定义镜像mycentosjava8
        • 2.4.2 虚悬镜像
      • 2.5 小总结
  • 本人其他相关文章链接

二、高级篇(大厂进阶)

2.DockerFile解析

2.1 是什么

问题:DockerFile是什么?

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

  • 概述

  • 官网
    https://docs.docker.com/engine/reference/builder/

  • 构建三步骤
    1)编写Dockerfile文件
    2)docker build命令构建镜像
    3)docker run依镜像运行容器实例

2.2 DockerFile构建过程解析

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

  • 小总结

2.3 DockerFile常用保留字指令


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

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

注意点3:
RUN-两种格式

  • shell格式

  • exec格式

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

注意点5:
小总结

2.4案例

2.4.1自定义镜像mycentosjava8

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

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

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

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

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 .


注意点4:

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

答案:尚硅谷视频安装的是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-2allsobaiduend~default-1-124361367-null-null.142v40pc_rank_34_ctr0,185v2control&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

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

2.4.2 虚悬镜像

注意点1:

问题:虚悬镜像是什么?

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

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

1 vim Dockerfile
from ubuntu
CMD echo 'action is success'2 docker build .

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

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

2.5 小总结

本人其他相关文章链接

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集群

重要信息

  • 官网:https://ais.cn/u/vEbMBz

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/857722.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

按钮修改状态

首先创造函数void updateBaoxiaoSchedule( int id, String schedule, String schedulereason); 及其实现。 SQL语句: @Update("update submit set state=#{state},statereason=#{statereason} where id=#{id} ") void updateSubmit1( @Param("id") int id…

泰山派设备控制(RGB)

泰山派设备系统控制(RGB) 1、进入设备系统 cd /sys/class2、进入RGB灯子系统 cd /sys/class/leds/罗列可操作的设备,可以看到三个设备,“rgb-led-b”,“rgb-led-g”,“rgb-led-r”,分别对应RGB的蓝,绿,红。3、我们对其单一色灯进行操作 cd rgb-led-b4、ls罗列出可操作的…

《计算机组成及汇编语言原理》阅读笔记:p48-p81

《计算机组成及汇编语言原理》学习第 4 天,p48-p81 总结,总计 34 页。 一、技术总结 1.CISC vs RISC p49, complex instruction set computing For example, a complex instruction set computing (CISC) chip may be able to move a large block of data, perhaps a strin…

在VS2022中,“根据模型生成数据库”时报错:已添加了具有相同键的项(或:An item with the same key has already been added)

解决方法:关闭解决方案,打开解决方案所在文件夹,打开以下文件夹:.vs\ConsoleApp7\FileContentIndex,然后删除里面的所有文件,再重新在VS中打开解决方案重新生成即可

超级AI图像放大工具Upscayl:让你的照片细节更清晰,色彩更鲜艳!

前言 Hello大家好,我又来推荐非常好用的AI图片无损放大器,模糊图片秒变高清,Upscayl是一个免费开源的AI图像超分辨率工具。它使用AI模型来通过猜测细节的方式增强图像并提高其分辨率。该工具适用于Linux、macOS和Windows操作系统 安装环境 [名称]:Upscayl [大小]:400.99MB …

全民点评 测试用例Xmind

项目简介:该项目是一款基于用户点评和校园商户信息为主的生活服务平台。项目利用 Redis 的特性解决不同业务场景中的问题,核心工作包括设计实现缓存更新策略,解决缓存相关问题、订单超卖的线程安全问题。 技术架构:SpringBoot + Mybatis - Plus + MySQL + Redis 功能测试:…

NginxUI:界面化管理Nginx的工具

一、NginxUI简介 1.1 NginxUI介绍 Nginx UI 是一个全新的 Nginx 网络管理界面,旨在简化 Nginx 服务器的管理和配置。它提供实时服务器统计数据、ChatGPT 助手、一键部署、Lets Encrypt 证书的自动续签以及用户友好的网站配置编辑工具。 此外,Nginx UI 还提供了在线访问 Nginx…

Codeforces 1842I. Tenzing and Necklace

神仙题。本题解参考官方题解进行编写,并补充了最后比较关键的怎么调整 \(m\)。 题目链接:I - Tenzing and Necklace 题目大意:给定一个环,环上有 \(n\) 个点与 \(n\) 条边,第 \(i\) 条边连接 \(i\) 与 \(i\bmod n +1\),边权为 \(a_i\)。要求断开若干边使得环断为若干段,…

Docker-compose 实战

以下是一个使用 Docker-compose 启动 Flask 应用的示例: 项目结构:app/|-- app.py|-- requirements.txt|-- Dockerfile|-- docker-compose.ymlapp.py 文件内容: from flask import Flaskapp = Flask(__name__)@app.route(/) def hello_world():return Hello from Flask in D…

Doc for DevNow

DevNow 官方文档,介绍 DevNow 的使用方法及一些扩展内容,方便大家使用前言 DevNow 是一个精简的开源技术博客项目模版,支持 Vercel 一键部署,支持评论、搜索等功能,欢迎大家体验。 🎉🎉 首先庆祝下 DevNow star 在不久前过百,对我来说还是蛮有成就感的,感谢大家的支…

巧用mask属性创建一个纯CSS图标库

说明mask 是CSS中的一个属性,它允许开发者在元素上设置图像作为遮罩层。这个属性的强大之处,在于它可以接受多种类型的值,包括关键字值、图像值、渐变色,甚至可以设置多个属性值。 SVG(Scalable Vector Graphics,可缩放矢量图形)是一种基于 XML 的图像格式,用于定义二维…

绕过CPU:英伟达与IBM致力推动GPU直连SSD以大幅提升性能

绕过CPU:英伟达与IBM致力推动GPU直连SSD以大幅提升性能| Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission | | -------------| -------------…