IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【详解】Dockerfile原理、镜像容器、命令总结 -> 正文阅读

[系统运维]【详解】Dockerfile原理、镜像容器、命令总结

目录

1、Docker 中镜像和容器概念

2、Dockerfile原理详解

①镜像:

?②Dockerfile原理

?③Dockerfile中指令的作用

具体将一个工程部署到docker容器【图解】:

关于Dockerfile,你学会了吗?



重要事情说三遍:

创建Dockerfile文件的时候,文件名必须是Dockerfile

创建Dockerfile文件的时候,文件名必须是Dockerfile

创建Dockerfile文件的时候,文件名必须是Dockerfile

1、Docker 中镜像和容器概念

①Docker镜像

Docker 镜像是一个特殊的文件系统,除了提供容器所需的程序、库、资源、配置等文件外,还包含了一些能为运行时准备的一些配置参数(匿名卷、环境变量、用户等)。

镜像不包含任何动态数据,其内容在构建之后不会被改变。

构建镜像:

docker build -d -p 8000:8000 --name myimage image 

②Docker容器

Docker 容器是一个在运行的Docker镜像的实例(instance)。包括服务或应用的状态和其他动态的数据。

运行镜像——>容器

docker run -it 容器ID

③镜像和容器小结

镜像是一个类,容器是类的一个实例,一个镜像可以有多个容器。容器是一个动态的。

2、Dockerfile原理详解

镜像:

镜像是一种轻量级、可执行的独立软件包,用来打包软件可运行环境和基于运行环境开发的软件,它包含了某个软件运行所需的所有内容,包括代码、库、环境变量,配置文件等。

docker中的镜像,实际上是由一层一层的文件系统组成,Dockerfile中的每一行命令代表一层,为什么Docker镜像采用的是分层结构呢?因为docker镜像最大的作用是资源共享,多个镜像从相同的Base镜像构建而来,在最底层的镜像是最基础的镜像。docker中所有的镜像都起始于一个基础镜像层,当进行修改或者增加内容时,就会在当前镜像之上创建新的镜像层。如下图,基础Ubuntu镜像层,在此基础之上,创建Python镜像层,Security Patch镜像层。

?就像集装箱一样,一层一层的叠加在一起,而彼此之间相互独立。

?②Dockerfile原理

为什么要有Dockerfile:

? ? ? ?当我们写项目工程的时候,希望自己的工程应用以容器的方式运行,这个时候我们需要把自己的项目打包成一个镜像,运行镜像(容器)。这样项目工程才会在Docker容器里面运行。?一般在公司项目交付的时候都是交付一个镜像。

Dockerfile就是构建Docker镜像的镜像文件,通过命令脚本生成镜像,镜像是一层一层的,脚本是一个个命令,每个命令都是一层

下面是流程:

? ? ? ??构建镜像可以拉取远程的,也可以通过Dockerfile构建,运行镜像变成容器,容器打包所需的项目成功后,提交镜像。

?下面重点讲解的是Dockerfile构建镜像的过程。

docker build --name myimage .

?docker build的时候,写的命令是在docker的客户端,执行命令是在docker的服务端,docker服务端接收到build指令的时候,Docker服务端会把Dockerfile所在的目录称之为上下文目录,Docker服务端找到上下文目录的时候,会把上下文中的所有目录进行一次性打包,并发送到Docker服务端。当Docker服务端接收到上下文context打包的文件的时候,根据Dockerfile指令进行构建,一行一行的进行构建。

注意docker build 最后一点【.】的含义:【docker build --name myimage .】 指令的最后一点代表的是Dockerfile所在的目录,也就是上下文目录,docker build 的时候,将后面的一点提交到服务端,Docker服务端找到这个上下文,然后对Dockerfile进行加载。

简洁:

? ? ? ?Docker服务端先收到context(上下文:包信息指的是Dockerfile所在目录))的包信息,然后根据Dockerfile中的指令一行一行进行构建,每读取一行,都会在Docker服务端生成一层镜像。第二层基于第一层,在第一层之上生成一层镜像,最后一行指令会最终生成整个镜像的产物。

docker build 在构建镜像的时候,会把构建成功的镜像放到缓存区。

如下图所示:

?再看下图:

?③Dockerfile中指令的作用

所有指令必须是大写

<1>FROM:基于哪个镜像构建,第一个指令必须是FROM

<2>RUN :在镜像运行的时候运行的shell指令

<3>EXPOSE:镜像暴露的端口,只有容器启动映射到宿主机的端口,暴露的端口才会起作用

<4>WORKDIR:镜像运行成容器之后,首次进行容器的路径就是WORKDIR 设置的路径。可以理解为Dockerfile的workspace工作路径

<5>ENV:构建镜像过程中设置的环境变量

<6>ADD:作用是?将宿主机中的文件拷贝到镜像中,之后如果文件是压缩文件,还可以解压。也就是 文件可以进一步处理。这也是ADD区别于COPY的的特点。也就是ADD会对拷贝的文件进行处理。

<7>COPY:将宿主机中的文件拷贝到镜像中,其余的啥也不干

ADD\COPY:都是将宿主机中的文件拷贝到镜像中

<8>VOLUME:镜像中的哪个文件挂载到宿主机上

<9>CMD:容器要启动时要运行的指令,Dockerfile可以有多个CMD指令,但是只有最后 一个CMD指令生效,CMD会被docker run 后面的参数替换。CMD命令是可变的 <10>ENRTYPOINT:容器启动时需要执行的指令,用来设置固定命令,不变的

CMD和ENTRYPOINT:都是容器启动时需要运行的指令

具体将一个工程部署到docker容器【图解】:

https://blog.csdn.net/Sunshineoe/article/details/120478455

关于Dockerfile,你学会了吗?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 15:13:35  更:2021-10-02 15:13:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:58:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码