问题思考:
-------------------------------------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. Dictionary CovertTo List

    示例代码 假设有如下一个Dictionary 要转换成List Dictionary<string, string> dicNumber = new Dictionary<strin ...

  2. Java中字符数组、String类、StringBuffer三者的相互转换

    一.StringBuffer与String的相互转换 1.将StringBuffer转换成String StringBuffer类成员toString函数可将其转换成String类型. StringB ...

  3. Linux 出现 E325:ATTENTION swap

    当用vim打开一个文件的时候,系统提示:E325:ATTENTION Found a swap by the name ".a.swp" owned by:…… …… 这是由于在编 ...

  4. Docker容器学习与分享11

    容器的数据存储 容器在删除之后,里面所有的数据都会丢失,如果其他程序需要用到某一部分的数据那就没办法了. 所以可以将容器内的数据存储到容器之外,比如存储到宿主机内.(Docker提供了好几种方法) 将 ...

  5. 搭建spark集群

    搭建spark集群 spark1.6和hadoop2.61.准备hadoop环境:2.准备下载包:3.解压安装包:tar -xf spark-1.6.0-bin-hadoop2.6.tgz4.修改配置 ...

  6. 布局:上下两个div高度固定,中间自适应

    需求:经典布局 —— 头尾固定高度中间高度自适应布局 头部固定高度,宽度100%自适应父容器: 底部固定高度,宽度100%自适应父容器: 中间是主体部分,自动填满,浏览器可视区域剩余部分,内容超出则中 ...

  7. [Usaco2007 Jan]Balanced Lineup

    嘟嘟嘟 一道RMQ板子题,分别维护最大值和最小值,不解释. #include<cstdio> #include<iostream> #include<algorithm& ...

  8. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

  9. Oracle 11g常用管理命令(用户、表空间、权限)

    PS:下面是Oracle 11g最常用的基本管理命令,包括创建用户.表空间,权限分配等.以下命令本人都验证操作过,并加上了本人的小结与说明. 1.启动oracle数据库: 从root切换到oracle ...

  10. 无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件

    1.问题症状 已经处于Debug模式,运行时完全正常,但是一调试就出现对话框,显示出错信息:“无法找到“XXX.exe”的调试信息,或者调试信息不匹配.未使用调试信息生成二进制文件.” 2.解决方法 ...