问题思考:
-------------------------------------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. [BZOJ 3652]大新闻

    [BZOJ 3652] 大新闻 题意 随机从 \([0,n)\) 中选取一个整数 \(x\), 并从 \([0,n)\) 中再选取一个整数 \(y\). 有 \(p\) 的概率选取一个能令 \(x\o ...

  2. Beta版本项目计划

    小队名称:PHILOSOPHER 小组成员 [组长]金盛昌(201421122043).刘文钊(20142112255).陈笑林(201421122042) 张俊逸(201421122044).陈志建 ...

  3. flexible.js结合rem实现移动端自适应布局

    1. 配置开发工具(sublime)插件      https://github.com/flashlizi/cssrem     注意: 只有在‘.css’后缀文件才能使用此插件功能   2. 在h ...

  4. 方法(method)和函数(function)的区别

    函数是一段代码,通过名字来进行调用.它能将一些数据(参数)传递进去进行处理,然后返回一些数据(返回值),也可以没有返回值. 所有传递给函数的数据都是显式传递的. 方法也是一段代码,通过一个与对象相关联 ...

  5. 3.HBase In Action 第一章-HBase简介(1.1.1 大数据你好呀)

    Let's take a closer look at the term Big Data. To be honest, it's become something of a loaded term, ...

  6. import org.apache.http.xxxxxx 爆红,包不存在之解决办法

    问题如下:import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http ...

  7. Scala学习之路 (三)Scala的基本使用

    一.Scala概述 scala是一门多范式编程语言,集成了面向对象编程和函数式编程等多种特性.scala运行在虚拟机上,并兼容现有的Java程序.Scala源代码被编译成java字节码,所以运行在JV ...

  8. leetcode 217—Contains Duplicate

    Given an array of integers, find if the array contains any duplicates. Your function should return t ...

  9. ICC2 常用命令

    1. 关于 data preparation : report_ref_libs : report reference library report_lib  lib_aa : report the ...

  10. java基础设计模式1——单例模式

    概念:在应用这个模式时,单例对象的类必须保证只有一个实例存在.许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为. 单例模式从实现上可以分为饿汉式单例和懒汉式单例两种,前者天生 ...