Docker原理探究
问题思考:
-------------------------------------Docker浅显原理理解-------------------------------------
P1. ubuntu16.04中docker运行ubuntu16.04的镜像
S1. 可以,以osrf/ros:kinetic-desktop-fulll做过验证,并运行小乌龟程序
P2. ubuntu16.04中docker运行ubuntu14.04的镜像
S2. 可以,以osrf/ros:indigo-desktop-trusty验证,并运行小乌龟程序
P3. ubuntu16.04中docker运行debian的镜像
S3. 可以,以osrf/ros:kinetic-desktop-jessie验证,并运行小乌龟程序
P4. ubuntu16.04中docker运行centos镜像
S4. 可以,以$ docker pull centos:centos7 下拉centos镜像,并通过命令$ yum install vim 验证
P5. 笔记本ubuntu16.04中docker运行arm架构的ubuntu16.04镜像
S5. 不可以
P6. ubuntu16.04中docker运行windows镜像
S6. 不可以
P7. 利用docker pull ros:kinetic下拉镜像,(1)并配置install文件夹,看能否启动tergeo (2)配置编译环境
S7. (1)报错,Segmentation fault (core dumped)
-------------------------------------Docker深度原理理解-------------------------------------
P1. ubuntu16.04系统中docker是否可运行基于其他系统级镜像(linux内核相同,但linux发行版本不同,如ubuntu14.04、centos、debian等)构建的docker镜像? - 系统发行版层面
S1. 可以。
P2. ubuntu16.04系统中docker打包的镜像,是否可运行在其他系统(linux内核相同,但linux发行版本不同,如ubuntu16.04、centos、debian等)中?
S2. 可以。因为docker是基于linux内核开发的应用容器,其镜像中可以包含一个完整的操作系统环境(不含内核),里面仅安装了Apache或用户需要的其它应用程序。
[SUM]. 从S1和S2中可知,只要容器内的应用程序(含除内核外的操作系统)相同,在ubuntu16.04、ubuntu14.04、centos和debian等系统中打包的镜像都无区别。
P3. ubuntu16.04系统中docker是否可运行基于其他系统级镜像(内核不同,如windows、macOS等)构建的docker镜像? - 系统内核层面
S3. 不可以,因为内核不同。若可以,则肯定是对镜像做过特殊处理的;否则违背了docker的基本原理。
P4. ubuntu16.04系统中docker打包的镜像,是否可运行在其他系统(内核不同,如windows、macOS等)中?
S4. 不可以,因为内核不同。而安装docker-on-windows和docker-on-mac后,之所以能够运行ubuntu16.04的镜像,是因为docker其实是运行在含轻量级linux系统的虚拟机上的(windows也可以运行在Linux子系统中)
P5. x86架构下的ubuntu16.04系统是否可运行arm架构的ubuntu16.04系统镜像? - 硬件架构层面
S5. 不可以。内核不同,装在arm上的linux是需要重新编译内核的,所以和x86上的linux内核是不一样的;arm平台上c程序需要arm-linux-gcc来编译,而x86平台直接用gcc就能编译。
P6. x86架构下的ubuntu16.04系统中docker打包的镜像,是否可运行在arm架构的ubuntu16.04系统下?
S6. 不可以。运行报错,
P7. docker能否指定镜像内模拟的硬件架构?如果能,如何指定?
S7. 不可以。这句话其实本身就有问题;因为dokcer运行在宿主系统内核上的,它不和硬件直接接触,它所认为硬件架构肯定和宿主主机一致。
为解决以上问题,在阿里云中申请服务器。
关于阿里云服务器ecs
1. ssh远程连接服务器
链接: https://help.aliyun.com/document_detail/51798.html?spm=a2c4g.11186623.6.648.1cb23182anfDYV#linux
2. 获取密钥
链接: https://help.aliyun.com/document_detail/51793.html?spm=a2c4g.11186623.2.26.6a4e2320RQ55tK#concept-wy4-th1-ydb
3. 若ecs实例想要和外界通信(ssh控制,数据传输等),需付费购买外网ip
初始购买或扩展配置
-------------------------------------Docker原理解析-------------------------------------
Docker容器技术是基于Linux内核实现的, 它主要用到了三个内核模块:
Namespace: 命名空间;用于容器的隔离, 例如PID Namespace使得容器中的进程无法感知宿主机以及其他容器中的进程。
Cgroups: 控制组;用于容器的资源控制, 比如限制容器所使用的内存大小或者CPU个数。
AUFS: 联合文件系统;docker的存储驱动方式之一,它可以将多个目录合并成一个虚拟文件系统;Docker镜像(Image)是由一个或多个AUFS branch组成,
并且所有的branch均为只读权限;在运行容器的时候,创建一个AUFS branch位于image层之上,具有rw权限,并把这些branch联合挂载到一个挂载点下。
这就是Docker能够一个镜像运行多个容器的原理所在。
两篇关于Docker原理解析的优秀博客:
1. Docker核心技术与实现原理(https://draveness.me/docker)
2. 一篇不一样的docker原理解析(https://www.cnblogs.com/heyanan/p/7800284.html)
docker社区:
1. docker中文社区(http://www.docker.org.cn/)
关于docker安装windows镜像的讨论:
1. https://www.v2ex.com/t/404193
2. https://blog.docker.com/2016/09/build-your-first-docker-windows-server-container/
3. 可以在docker容器里跑windows么?(https://segmentfault.com/q/1010000002450886)
Docker原理探究的更多相关文章
- [原] KVM 虚拟化原理探究(1)— overview
KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...
- [原] KVM 虚拟化原理探究 —— 目录
KVM 虚拟化原理探究 -- 目录 标签(空格分隔): KVM KVM 虚拟化原理探究(1)- overview KVM 虚拟化原理探究(2)- QEMU启动过程 KVM 虚拟化原理探究(3)- CP ...
- [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化
KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...
- [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化
KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...
- [原] KVM 虚拟化原理探究(4)— 内存虚拟化
KVM 虚拟化原理探究(4)- 内存虚拟化 标签(空格分隔): KVM 内存虚拟化简介 前一章介绍了CPU虚拟化的内容,这一章介绍一下KVM的内存虚拟化原理.可以说内存是除了CPU外最重要的组件,Gu ...
- [原] KVM 虚拟化原理探究(3)— CPU 虚拟化
KVM 虚拟化原理探究(3)- CPU 虚拟化 标签(空格分隔): KVM [TOC] CPU 虚拟化简介 上一篇文章笼统的介绍了一个虚拟机的诞生过程,从demo中也可以看到,运行一个虚拟机再也不需要 ...
- [原] KVM 虚拟化原理探究(2)— QEMU启动过程
KVM 虚拟化原理探究- QEMU启动过程 标签(空格分隔): KVM [TOC] 虚拟机启动过程 第一步,获取到kvm句柄 kvmfd = open("/dev/kvm", O_ ...
- 弱类型变量原理探究(转载 http://www.csdn.net/article/2014-09-15/2821685-exploring-of-the-php)
N首页> 云计算 [问底]王帅:深入PHP内核(一)——弱类型变量原理探究 发表于2014-09-19 09:00| 13055次阅读| 来源CSDN| 36 条评论| 作者王帅 问底PHP王帅 ...
- js事件底层原理探究
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
随机推荐
- gh-ost和pt-osc性能对比
haughty_xiao 基于MySQL row格式的复制现在趋于主流,因此可以使用此格式的binlog来跟踪改变而不是触发器.与percona toolkit的pt-online-schem ...
- Linux磁盘及分区之wwid和uuid
背景描述,在Linux系统中,如果添加了新的SCSI磁盘或者映射SAN存储LUN操作,重启操作系统之后会出现磁盘标识符(sd*)错乱的情况. 例如之前添加的SAN存储LUN的磁盘标识符为/dev/sd ...
- 大话存储 3 - 七种磁盘RAID技术
RAID技术 Redundant Array of Independent Disks 由独立的磁盘组成的具有冗余特性的阵列. 有两个特性: 阵列:需要很多磁盘来组成 冗余:允许某块磁盘损坏之后,数据 ...
- VS 0x80041FEB
在打开from设计界面时,报错. 解决方法:将项目中Properties文件中licenses.licx删除,重新建立一个空的licenses.licx文件放到项目中. 重新打开界面,解决
- 小程序push数组,渲染不出来解决办法
1.在data中,定义一个空数组: zhou_time:[] 2.声明: var zhou_time = this.data.zhou_time; 3.PUSH赋值: zhou_time.push({ ...
- bootstrap模态框input不能获取焦点并编辑【转】
Bootstrap模态框时input标签[日期控件也有这样的问题]不能编辑的问题,下面是我的解决方法: 1.将下图中框出来的属性删掉即可: 2.兼容火狐浏览器,笔者在火狐中还是不能编辑,去掉下图属性即 ...
- Breaking Down Type Erasure in Swift
Type Erasure Pattern We can use the type erasure pattern to combine both generic type parameters and ...
- Mysql 调优2个语句
一.explain 语句 查看语句的执行计划 二.查看具体每一步耗时 .; .执行SQL .show profiles; 获取2执行SQL的query_id .show profile for que ...
- python+requests实现接口测试 - get与post请求使用(转载)
转自:http://www.cnblogs.com/nizhihong/p/6567928.html 简介:Requests 是用Python语言编写,基于 urllib,采用 Apache2 Lic ...
- Python2.7-xdrlib
xdrlib模块,用于打包和解包 xdr 数据.XDR 提供了一种与体系结构无关的表示数据,解决了数据字节排序的差异.数据字节大小.数据表示和数据对准的方式.使用XDR的应用程序,可以在异构硬件系统上 ...