docker镜像的原理(代码片段)

我的紫霞辣辣 我的紫霞辣辣     2022-12-03     554

关键词:

Docker运行的整个生命周期

在这里插入图片描述

Docker使用多种操作系统的发行版

   1. 一个完整的操作系统,是由linux内核+发行版,组成的一个可以使用的完整操作系统。
   2. 利用docker容器,可以获不同的发行版镜像,然后基于该镜像,运行出各种容器去使用。

查看操作系统的两大组成

# 查看操作系统的发行版
[root@docker01 ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

# 查看操作系统内核
[root@docker01 ~]# uname -r
3.10.0-1160.el7.x86_64

在这里插入图片描述

使用docker,来切换不同的发行版,内核都是使用宿主机的内核

# 利用docker获取不同的发行版镜像
docker pull ubuntu
docker pull centos:7.8.2003

# 确认当前宿主机的发行版本
[root@docker01 ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

# 查看本地的docker镜像有哪些
docker images
# REPOSITORY   TAG        IMAGE ID       CREATED         SIZE
# nginx        latest     4cdc5dd7eaad   32 hours ago    133MB
# redis        latest     08502081bff6   2 weeks ago     105MB
# ubuntu       latest     9873176a8ff5   2 weeks ago     72.7MB
# centos       7.8.2003   afb6fca791e0   14 months ago   203MB

# 运行centos7.8.2003发行版
# 运行容器,且进入容器内
# 参数 解释 -i(交互式命令操作) -t(开启一个终端) bash(进入容器后执行的命令)
docker run -it afb6fca791e0 bash
# 查看容器内centos的发行版本
[root@f516f10548c1 /]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

# 退出当前的容器空间
exit

# 查看虚拟机的操作系统内核
[root@docker01 ~]# uname -r
3.10.0-1160.el7.x86_64

# 进入ubuntu系统
docker run -it ubuntu bash

# 查看容器内ubuntu的发行版本
root@01541754159a:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.2 LTS"

# 查看ubuntu的操作系统内核(公用宿主机内核)
root@238d08669482:/# uname -r
3.10.0-1160.el7.x86_64

Docker部署服务的优势

在这里插入图片描述

Docker镜像原理

Docker镜像 分层原理

在这里插入图片描述

# 进入正在运行的容器内
[root@docker01 ~]# docker exec -it 455ebd1b9508 bash
root@455ebd1b9508:/# 

# 查看nginx运行使用的基础镜像
root@455ebd1b9508:/# cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/

Docker镜像 写时复制原理

镜像分层的一大好处就是共享资源,例如有多个镜像都来自于同一个base(基础)镜像,那么docker host只需要存储一份base镜像。

  • 内存里也只需要加载一份host,即可为多个容器服务。
  • 即使多个容器共享一个base镜像,某个容器修改了base镜像的内容,例如修改/etc/下的配置文件,其他容器的/etc/下内容是不会被修改的,修改动作只限制在单个容器内,这就是容器写时复制特性(Copy On Write),如下所示。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

docker镜像的原理(代码片段)

Docker运行的整个生命周期Docker使用多种操作系统的发行版1.一个完整的操作系统,是由linux内核+发行版,组成的一个可以使用的完整操作系统。2.利用docker容器,可以获不同的发行版镜像,然后基于该镜像,... 查看详情

docker镜像的原理(代码片段)

Docker运行的整个生命周期Docker使用多种操作系统的发行版1.一个完整的操作系统,是由linux内核+发行版,组成的一个可以使用的完整操作系统。2.利用docker容器,可以获不同的发行版镜像,然后基于该镜像,... 查看详情

好奇宝宝看docker底层原理(中)(代码片段)

文章目录致谢Docker镜像加载原理rootfsUnionmountimagelayerDocker镜像下载镜像存储镜像在远端仓库存储本地镜像存储致谢首先,感谢孙宏亮前辈的《Docker源码分析》系列。前面两篇分别探究了docker的底层架构和docker的容器隔离机制&#... 查看详情

docker教程-7-dockerfile构建镜像原理及指令介绍(代码片段)

转自:Docker教程-7-Dockerfile构建镜像原理及指令介绍,更优阅读体验:http://www.kongzid.com/目录1、Docker的镜像分层结构及DockerFile文件1.1Docker镜像的分层1.2base镜像1.3镜像分层存储的优点1.4什么是Dockerfile2、Dockerfile指令详解... 查看详情

docker镜像详细(代码片段)

文章目录Docker镜像Docker镜像加载原理分层如何提交一个自己的镜像Docker镜像镜像镜像是一种轻量级、可执行的独立软件包,用于打包软件运行环境和基于环境开发的软件,它包含运行某个软件所需的所有内容,包括代... 查看详情

docker教程-7-dockerfile构建镜像原理及指令介绍(代码片段)

目录1、Docker的镜像分层结构及DockerFile文件1.1Docker镜像的分层1.2base镜像1.3镜像分层存储的优点1.4什么是Dockerfile2、Dockerfile指令详解2.1FROM指定基础镜像2.2RUN执行命令2.3COPY复制文件2.4 ADD更高级的复制文件2.5 CMD容器启动命令2.6ENTRYP... 查看详情

docker架构与原理(代码片段)

注个人理解:docker的镜像是位于最底层,但使用宿主主机的操作系统内核,我们可以看到docker的镜像十分的小,原因是docker镜像只是一些环境的配置,所以十分的小,他是只能读不能写的。docker的容器是依赖与... 查看详情

docker容器的原理与实践(下)(代码片段)

欢迎访问网易云社区,了解更多网易技术产品运营经验。Docker原理分析Docker架构镜像原理镜像是一个只读的容器模板,含有启动docker容器所需的文件系统结构及内容Docker以镜像和在镜像基础上构建的容器为基础,以容器开发、测... 查看详情

docker学习:docker镜像分层原理及本地镜像推送到阿里云或私服(代码片段)

前言大家好,这是我学习docker系列的笔记文章,目标是掌握docker,为后续学习K8s做准备。本文记录了docker镜像分层加载的原理,及如何把本地镜像推送到阿里云服务器或者本地私服,感兴趣的朋友可以看一下以前的文章。前文回... 查看详情

docker学习:docker镜像分层原理及本地镜像推送到阿里云或私服(代码片段)

前言大家好,这是我学习docker系列的笔记文章,目标是掌握docker,为后续学习K8s做准备。本文记录了docker镜像分层加载的原理,及如何把本地镜像推送到阿里云服务器或者本地私服,感兴趣的朋友可以看一下以前的文章。前文回... 查看详情

docker学习:docker镜像分层原理及本地镜像推送到阿里云或私服(代码片段)

文章目录前言docker镜像分层加载原理docker镜像commit操作产生新镜像本地镜像发布到阿里云将本地镜像推送到私有库前言大家好,这是我学习docker系列的笔记文章,目标是掌握docker,为后续学习K8s做准备。本文记录了docker镜... 查看详情

docker-04-镜像(代码片段)

文章目录一、镜像是什么1、unionFs联合文件系统2、Docker镜像加载原理3、分层的镜像4、为啥使用分层的镜像5、docker镜像的特点二、docker镜像的commit操作1、操作解释2、案例演示1、pulltomcat镜像并运行2、做一些修改,该为我们... 查看详情

docker镜像提交命令commit的工作原理和使用方法(代码片段)

...可以依据这个容器创建本地镜像,并可把这个镜像推送到Dockerhub中,以便在网络上下载使用。下面我们来动手实践。dockerpullnginx:1.15.3用命令行启动一个容器:dockerrun-d-p1080:80--namejerry-nginxnginx:1.15.3localhost:1080进入容器的shell:docker... 查看详情

docker镜像详解(代码片段)

...码,运行时库,环境变量和配置文件。所有的应用,直接打包docker镜像,就可以直接跑起来!如何得到镜像:从远程仓库下载朋友拷贝给你自己制作一个镜像DockerFileDocker镜像加载原理UnionFs(联合文件系统查询)我们下载的时候看到的一层... 查看详情

docker全解(代码片段)

目录说明docker简介为什么是docker容器与虚拟机比较容器发展简史传统虚拟机技术容器虚拟化技术docker能干什么带来技术职级的变化开发/运维(Devops)新一代开发工程师Docker应用场景whydocker?docker的优势docker和dockerHub官网Doc... 查看详情

docker的数据管理镜像dockerfile创建(代码片段)

目录一、docker的数据管理1.数据卷2.数据卷容器二、容器互联(使用centos镜像)三、docker镜像的创建1、基于已有镜像创建2、基于本地模板创建3、基于Dockerfile创建1.联合文件系统(UnionFS)2.镜像加载原理3.Dockerfile4.Docker镜像结构的分层5.... 查看详情

dockercompose原理(代码片段)

Docker的优势非常明显,尤其是对于开发者来说,它提供了一种全新的软件发布机制。也就是说使用docker镜像作为软件产品的载体,使用docker容器提供独立的软件运行上下文环境,使用dockerhub等提供镜像的集中管理,这其中最重要... 查看详情

docker教程-7-dockerfile构建镜像原理及指令介绍(代码片段)

目录1、Docker的镜像分层结构及DockerFile文件1.1Docker镜像的分层1.2base镜像1.3镜像分层存储的优点1.4什么是Dockerfile2、Dockerfile指令详解2.1FROM指定基础镜像2.2RUN执行命令2.3COPY复制文件2.4 ADD更高级的复制文件2.5 CMD容器启动命令2.6ENTRYP... 查看详情