Docker学习笔记11

Docker容器镜像:

1)docker client 向docker daemon发起创建容器的请求;

2)docker daemon查找本地有客户端需要的镜像;

3)如无,docker daemon则到容器的镜像仓库中下载客户端需要的镜像;

4)拿到容器镜像后启动容器。

容器镜像介绍:

Docker镜像就是一组只读的目录,或者叫只读的Docker容器模板。镜像中含有一个Docker容器运行所需要的文件系统,所以我们说Docker镜像是启动一个Docker容器的基础。

可以将Docker镜像看成是Docker容器的静态时,也可将Docker容器看成是Docker镜像的运行时。

从Docker的官方文档来看,Docker容器的定义和Docker镜像的定义几乎是相同的,Docker容器和Docker镜像的区别主要在于Docker容器多出了一个可写层。

容器中的进程就运行在这个可写层,这个可写层有两个状态,即运行态和退出态。当我们dockerrun运行容器后,docker容器就进入了运行态,当我们停止正在运行的容器时,docker容器就进入了退出态。

当我们将容器从运行态转为退出态的时候,期间发生的变更都回写入到容器的文件系统中(需要注意的是,此处不是写入到docker镜像中。)

 联合文件系统(UnionFS)是一种轻量级的高性能分层文件系统。它支持将文件系统中的修改信息作为一次提交,并层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,应用看到的是挂载的最终效果。

联合文件系统是实现Docker镜像的技术基础。Docker镜像可以通过分层来进行继承。例如:用户基于基础镜像(用来生成其他镜像的基础,往往没有父镜像)来制作各种不同的应用镜像。这些镜像共享同一个基础镜像层,提高了存储效率。此外,当用户改变了一个Docker镜像(比如升级程序到新的版本),则会创建一个新的层layer,因此,用户不用替换整个原镜像或者重新建立,只需要添加新层即可。用户分发镜像的时候,也只需要分发被改动的新层内容(增量部分)。这让Docker的镜像管理变得十分轻量级和快速。

基础镜像支持tomcat应用的运行。

容器镜像是用来启动容器的,容器镜像就是文件系统,将文件系统进行分层管理,通过联合文件系统进行分层叠加。在可写层来安装新的软件。

基础镜像:

1)部署一台主机,最小化软件安装操作系统

2)把最小化软件安装操作系统进行打包,打包操作系统的根目录

排除/proc及/sys

tar --numeric-owner --exclude=/proc --exclude=/sys  -cvf centos7u6.tar /

说明:

1、 --numeric-owner: 以UID和GID代替用户名和组名 (numeric:数字、分数)因为有些用户的UID和GID不一样。文件的属主和属组全部替换成数字。

2、--exclude=/proc(给每个进程创建文件夹,文件描述符相关信息) --exclude=/sys(内核程序使用的目录)在新的docker镜像不包括上述目录

3、-cvf:压缩选项

4、centos7u6.tar为目标文件

5、/ 代表从根开始

3)把获取的根打包文件导入到Docker Host中。这样就得到了基础镜像。

docker import centos7u6.tar centos7u6:latest
[root@vm1 ~]# docker import --helpUsage:  docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]Import the contents from a tarball to create a filesystem imageAliases:docker image import, docker importOptions:-c, --change list       Apply Dockerfile instruction to the created image-m, --message string    Set commit message for imported image--platform string   Set platform if server is multi-platform capable
[root@vm1 ~]#

再次说明:

Usage:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

导入的过程中,给镜像起名字加版本。

import和Export,save和load都是成对出现的。

4)检查:

docker imagesdocker image ls

通过这个试验,我们看到镜像是什么,是文件系统。

5)拿基础镜像来启动容器:

docker run -it --name c1000 centos7u6:latest /bin/bash

在容器中,我们进入到/proc中,看到的内容就是容器中的进程。

应用镜像制作:

应用镜像的概念:指应用程序运行的环境。

基础镜像,安装apache应用,打包成一个应用镜像,启动容器的时候,再也不用安装apache,只要把网页的内容放到目录中。程序员不用安装任何软件,只要拿到应用镜像,他们就获得了应用程序的运行的环境。应用镜像,运行起来就可以了。

只要应用镜像制作出来,就不需要再做什么事情了。

# 在docker容器中安装apache,使用的是容器的文件系统
yum install -y httpd# 安装的过程中,可能会出现失败的情况,使用如下命令可以解决
yum clean all

然后是让这个容器变成一个镜像:

之前,我们学过export和import命令,先将容器打包成一个tar文件,然后再将tar包导入,配置容器名称和版本。

使用commit命令对正在运行的容器提交一个应用镜像:

[root@vm1 ~]# docker commit --helpUsage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]Create a new image from a container's changesAliases:docker container commit, docker commitOptions:-a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")-c, --change list      Apply Dockerfile instruction to the created image-m, --message string   Commit message-p, --pause            Pause container during commit (default true)
[root@vm1 ~]#

说明:

1)从一个容器的改变创建提交成一个容器的镜像。

2)-p:把容器暂停的状态打包成镜像,默认就是开启的。

3)-m:提交备注信息

[root@vm1 ~]# docker commit c105 centos7u6-httpd:v1
sha256:4090500d5d7aeebf23d9fcb93789b7c13cfa39c94bf44513f168d460c560a6c4
[root@vm1 ~]#
[root@vm1 ~]#
[root@vm1 ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED          SIZE
centos7u6-httpd   v1        4090500d5d7a   11 seconds ago   280MB
centos-httpd      v1        a769afc16a9e   46 hours ago     351MB
centos            latest    5d0da3dc9764   21 months ago    231MB
[root@vm1 ~]#

centos是基础镜像。

centos7u6-httpd是应用空间。

从SIZE我们可以看到SIZE在扩大。

然后是使用应用镜像:

docker run it centos7u6-httpd:v1 /bin/bash
echo "ttt" >> /var/www/html/index.html
httpd -k start
curl http://localhost

那学到这个地方就是一个关键点。

我们甚至可以进一步,把网页的内容页放到容器中,然后commit成镜像。

那么以后就使用这个镜像启动容器,非常快速地运行。非常方便。

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

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

相关文章

CSS基础

文章目录 前言CSS基本语法CSS选择器CSS基本选择器标签选择器 p类选择器 .pID选择器 #p CSS后代选择器 div pCSS子选择器 div>pCSS群组选择器 p,p1CSS伪类选择器:first-of-type 父类第一个:last-of-type 父类最后一个:nth-of-type(n) 父类第n个 CSS使用方式行内样式内嵌样式外…

poi生成excel饼图设置颜色

效果 实现 import com.gideon.entity.ChartPosition; import com.gideon.entity.LineChart; import com.gideon.entity.PieChart; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xddf.usermodel.PresetColo…

深度学习(23)——YOLO系列(2)

深度学习&#xff08;23&#xff09;——YOLO系列&#xff08;2&#xff09; 文章目录 深度学习&#xff08;23&#xff09;——YOLO系列&#xff08;2&#xff09;1. model2. dataset3. utils4. test/detect5. detect全过程 今天先写YOLO v3的代码&#xff0c;后面再出v5&…

电脑出现0xC1900101错误怎么办?

在更新或安装Windows操作系统时&#xff0c;有时系统会提示出现了0xC1900101错误。这个错误的出现通常是源于与驱动程序相关的错误所致。那么当电脑出现0xC1900101错误时该怎么办呢&#xff1f; 为什么会出现错误代码0xC1900101&#xff1f; 通常情况下&#xff0c;有以下几个…

使用Python批量进行数据分析

案例01 批量升序排序一个工作簿中的所有工作表——产品销售统计表.xlsx import xlwings as xw import pandas as pd app xw.App(visible False, add_book False) workbook app.books.open(产品销售统计表.xlsx) worksheet workbook.sheets # 列出工作簿中的所有工作表 fo…

通用分页【下】(将分页封装成标签)

目录 一、debug调试 1、什么是debug调试&#xff1f; 2、debug调试步骤 3、实践 二、分页的核心 三、优化 分页工具类 编写servlet jsp代码页面&#xff1a; 分页工具类PageBean完整代码 四、分页标签 jsp代码 编写标签 tld文件 助手类 改写servlet 解析&…

使用el-menu做侧边栏导航遇到需要点击两次菜单才展开

在根据路由遍历生成侧边导航栏时&#xff0c;遇到一个问题&#xff0c;就是当我点击选中某个垂直菜单时&#xff0c;只有点击第二次它才会展开&#xff0c;第一次在选中垂直菜单之后垂直菜单它就收缩起来了&#xff0c;如下图&#xff1a; 如上图&#xff0c;在我第一次点击选…

带纵深可跳跃横版闯关游戏模版

此项目是以《卡比猎人队》为蓝本开发的横版带纵深闯关游戏模版。内涵数据表配置文件。 购买链接&#xff1a; 微店购买链接 开发环境 开发引擎&#xff1a;CocosCreator3.6.3开发语言&#xff1a;TypeScript 包含的内容&#xff1a; 逻辑实现目录介绍&#xff08;game&am…

java面试Day18

1.什么是 MySQL 执行计划&#xff1f;如何获取执行计划并对其进行分析&#xff1f; MySQL 执行计划是指 MySQL 查询优化器生成的一份详细的查询执行计划&#xff0c;它展示了 MySQL 在执行查询时所采取的具体执行计划&#xff0c;包括表的访问顺序、数据读取方式、使用的索引、…

Elasticsearch:实用 BM25 - 第 3 部分:在 Elasticsearch 中选择 b 和 k1 的注意事项

这是系列文章的第三篇文章。之前的文章是&#xff1a; Elasticsearch&#xff1a;实用 BM25 - 第 1 部分&#xff1a;分片如何影响 Elasticsearch 中的相关性评分 Elasticsearch&#xff1a;实用 BM25 - 第 2 部分&#xff1a;BM25 算法及其变量 选择 b 和 k1 值得注意的是&…

Windows 引导启动流程详述(BIOS-UEFI)

Windows 启动流程详述 BIOS 和 UEFI 的由来BIOS 存在哪里BIOS 程序的功能BIOS 和 UEFI 的发展由来如何查看当前计算机是什么方式引导启动呢&#xff1f;Linux 下如何查看 BIOS 大小&#xff1f; 启动流程详述使用 BIOS 进行系统启动流程使用 UEFI 进行系统启动流程SEC阶段PEI阶…

2022 年第十二届 MathorCup 高校数学建模挑战赛D题思路(移动通信网络站址规划和区域聚类问题)

目录 一、前言 二、问题背景 三、问题 四、解题思路 &#xff08;1&#xff09;针对问题1&#xff1a; &#xff08;2&#xff09;针对问题2&#xff1a; &#xff08;3&#xff09;针对问题3&#xff1a; 五、附上几个典型代码 &#xff08;1&#xff09;K-means算法…