问题思考:
-------------------------------------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原理探究的更多相关文章

  1. [原] KVM 虚拟化原理探究(1)— overview

    KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...

  2. [原] KVM 虚拟化原理探究 —— 目录

    KVM 虚拟化原理探究 -- 目录 标签(空格分隔): KVM KVM 虚拟化原理探究(1)- overview KVM 虚拟化原理探究(2)- QEMU启动过程 KVM 虚拟化原理探究(3)- CP ...

  3. [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化

    KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...

  4. [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化

    KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...

  5. [原] KVM 虚拟化原理探究(4)— 内存虚拟化

    KVM 虚拟化原理探究(4)- 内存虚拟化 标签(空格分隔): KVM 内存虚拟化简介 前一章介绍了CPU虚拟化的内容,这一章介绍一下KVM的内存虚拟化原理.可以说内存是除了CPU外最重要的组件,Gu ...

  6. [原] KVM 虚拟化原理探究(3)— CPU 虚拟化

    KVM 虚拟化原理探究(3)- CPU 虚拟化 标签(空格分隔): KVM [TOC] CPU 虚拟化简介 上一篇文章笼统的介绍了一个虚拟机的诞生过程,从demo中也可以看到,运行一个虚拟机再也不需要 ...

  7. [原] KVM 虚拟化原理探究(2)— QEMU启动过程

    KVM 虚拟化原理探究- QEMU启动过程 标签(空格分隔): KVM [TOC] 虚拟机启动过程 第一步,获取到kvm句柄 kvmfd = open("/dev/kvm", O_ ...

  8. 弱类型变量原理探究(转载 http://www.csdn.net/article/2014-09-15/2821685-exploring-of-the-php)

    N首页> 云计算 [问底]王帅:深入PHP内核(一)——弱类型变量原理探究 发表于2014-09-19 09:00| 13055次阅读| 来源CSDN| 36 条评论| 作者王帅 问底PHP王帅 ...

  9. js事件底层原理探究

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

随机推荐

  1. MySQL锁(行锁、表锁、页锁、乐观锁、悲观锁等)

    锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是协调多个进程或县城并发访问某一资源的一种机制.在数据库当中,除了传统的计算资源(CPU.RAM.I/O等等)的争用之外,数据也是一 ...

  2. 【转】HTTP学习---图解HTTP[三次握手&&ISO模型]

    [转]https://www.toutiao.com/i6592556686068679182/ 首先了解一次完整的HTTP请求到响应的过程需要的步骤: 1. 域名解析 2. 发起TCP的3次握手 3 ...

  3. php 魔术方法 说明

    1.__get.__set这两个方法是为在类和他们的父类中没有声明的属性而设计的.◆__get( $property ) 当调用一个未定义的属性时,此方法会被触发,传递的参数是被访问的属性名.◆__s ...

  4. 使用Socket开发http服务器时碰到的问题及处理方法

    1. 前言 ​ 最近正在为QA测试开发压力测试框架,要为测试人员提供一个结果的图形化表示界面.为了展示数据的及时性,不得不使用lua语言实现一个http服务器.由于http服务需要提供的服务比较简单 ...

  5. Alpha冲刺报告(11/12)(麻瓜制造者)

    今日已完成 邓弘立: 整合了主页的功能 符天愉: 大致上完成了留言部分的添加,删除,查询功能 江郑: 测试了剩余四个查询,一个添加接口,也搞定了接口说明. 刘双玉: 测试了剩余四个查询,一个添加接口, ...

  6. 团队作业——Alpha冲刺 3/12

    团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:完成Android开发环境的搭建,学习基础开发知识 明日任务:继续学习Android开发知识,与其他成员协商,了解自己需要完成的开发任务, ...

  7. [Python] 同时安装了python2和python3时,pip命令该如何使用?

    当python2和python3同时安装windows上时,它们对应的pip都叫pip.exe,所以不能够直接使用 pip install 命令来安装软件包. 而是要使用启动器py.exe来指定pip ...

  8. 7.Solr查询参数

    一.基本查询 q  查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*, fl  (field list)指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,fl= id, ...

  9. Netty入门(三)构成部分

    该节主要讲解 Netty 的构成部分. 一.Channel 它代表一个用于连接到实体如硬件设备.文件.网络套接字或程序组件,能够执行一个或多个不同的 I/O 操作的开放连接.可以比作传入和传出数据的传 ...

  10. VS2012中使用SOS调试CLR

    之前看了<用WinDbg探索CLR世界>的一些列文章,发现SOS真的是一个非常好的调试.net的工具, 然后又惊喜的在http://blogs.msdn.com/b/marioheward ...