• Hurt 置顶
    2018-09-03
    为什么clone()时 还有线程呢 是写错了吗 还是有线程的启动啊

    作者回复: 看得非常认真!严格说,clone()是线程操作,但linux 的线程是用进程实现的

     4
     55
  • atompi 置顶
    2018-09-03
    下一讲:隔离与限制,会介绍Cgroups的
    
     25
  • blackpiglet
    2018-09-03
    1 用 namespace 框住app。
    2 PID, UTS, network, user, mount, IPC, cgroup

    虽然本质上理解,namespace 和 cgroup 是内核特性,容器本质上就是一个加了限定参数的进程,效果上看,图画的也没毛病。
    这么看,是不是说容器的安全性,也就是隔离性,就是没办法达到虚拟机的级别呢?

    作者回复: 没错,已经进门了哈

     1
     65
  • manatee
    2018-09-07
    想请问下老师,如果说容器只是跑在系统上的一个进程,那容器和宿主机不同os
    又是怎么实现的呢,请帮忙解惑,谢谢。
     3
     55
  • 包子
    2018-09-03
    老师有个问题一直困扰,容器是一个单进程,那比如我有一个镜像里面集成了jdk, netstat, ping等,虽然这个容器启动时里面是一个java进程,但是我可以进到容器里面执行各种命令,比如netstat等,那这些命令在容器的运行过程中是在运行的吗?

    作者回复: 是在运行的。但它们不受docker的控制,就像野孩子。所以单进程意思不是只能运行一个进程,而是只有一个进程是可控的。

    
     50
  • 登高
    2018-09-04
    👍docker是没有上过历史课的进程

    作者回复: 查水表!

    
     38
  • huan
    2018-09-03
    第一个问题,我感觉docker engine 最好虚线标识,表示他只是一种启动时用,运行时并不需要,真实进程是直接run在host os上

    作者回复: 听起来不错哦

    
     22
  • 寻找自我
    2018-09-03
    做了几年内核开发,看过docker源码,用lxc搞了一个容器轮子。浙大SEL实验室确实很早就在进行docker的研究,以前也跟进看过很多文章。lxc不是新东西,不过还是很多人不懂原理,博主文章通俗易懂,点赞!
    
     21
  • jssfy
    2018-09-08
    进一步,1. 如果容器镜像os支持某硬件的驱动,但是宿主机os如果不支持该硬件驱动的话,是否也白搭
    2. 是否可以理解为 镜像只是提供了一套镜像文件系统中的各种文件,而各种内核相关的模块或者特性支持,完全依赖于宿主机?

    作者回复: 说的没毛病。

     3
     14
  • Yuk亮
    2018-09-03
    镜像的运行对host os有要求吗? 比如打包的镜像原来的kernel和运行时的kernel不一致,又或者镜像的发行版是centos,能运行在host为ubuntu的机器上吗

    作者回复: 只要应用本身对内核没要求,那就完全没问题

    
     11
  • 贾鹏
    2018-09-03
    user ns这块我理解的不太清楚,默认情况下容器里的root和宿主机root感觉是一样的(通过/proc/pid/uid_map看映射关系是把容器uid 0映射到宿主机0了),而且在容器中能把主机cpu下线。感觉userns-remap特性好像也解决不了这个cpu下线的问题。希望得到老师的解惑,谢谢。或者如果方便的话能不能加下微信呢: jp6439

    作者回复: user ns只修改user/group相关的视图。不过不太明白把cpu下线是什么情况?

    
     11
  • extraterrestrial!!
    2018-09-03
    能再推荐点扩展阅读材料就更好了,比如有一些不同资源使用namespace的程序例子,从内核的视角用没用namespace有啥区别,以及namespace的实现之类的~

    作者回复: 收到,后面推荐

    
     10
  • 包子
    2018-09-04
    老师有个问题一直困扰,容器是一个单进程,那比如我有一个镜像里面集成了jdk, netstat, ping等,虽然这个容器启动时里面是一个java进程,但是我可以进到容器里面执行各种命令,比如netstat等,那这些命令在容器的运行过程中是在运行的吗?
    ---------
    作者回复
    是在运行的。但它们不受docker的控制,就像野孩子。所以单进程意思不是只能运行一个进程,而是只有一个进程是可控的。

    老师接着这个问题有几个问题
    1. 这些不被docker管理的进程在哪里能看得到?这些进程是否会很占用硬件资源?比如netstat
    2. 关于mac上运行的docker,比如容器进程依赖linux内核的版本4.2才能正确运行(镜像的内核版本是4.2的),那么既然docker只是用资源隔离的形式运行的。那我在mac起的这个容器时是否能正确运行?他会加载完整的linux操作系统吗?
    展开

    作者回复: ps同样可以看到。win mac docker上跑其实都是个虚拟机

    
     8
  • Kaer
    2018-09-03
    虚拟化和容器的最大区别可以理解这个吗:1:虚拟化是同一台物理机不同的操作系统隔离应用进程2:但是容器是同一个操作系统的不同进程隔离。 简单来说就是:一个是操作系统级别隔离,一个是进程间隔离。

    作者回复: 实际上是 硬件级别 的隔离 VM可是有虚拟硬件的

    
     8
  • 李晶
    2018-09-03
    有一个问题 所以通过pid 可以判断自己是在docker里面还是在宿主机上。怎么通过命令行知道自己现在是在container里面还是在外面?

    作者回复: 有很多种方法。比如查看/proc/1/cgroup下的文件结构

    
     8
  • Maiza
    2018-09-03
    真的是白话 😄,终于搞懂了 namespace 了,话说 cgroup 是啥 。。。
    
     8
  • 贾鹏
    2018-09-03
    ipc pid mnt net uts user cgroup

    作者回复: cgroup ns是个新东西,能知道这个的可以做老师了哈

    
     7
  • Jay
    2018-09-03
    老师,Cgroups是不是没有细讲?

    作者回复: 当然是下一篇

    
     6
  • asdf100
    2018-09-07
    老师提到win mac docker上跑其实都是个虚拟机,可以运行不同平台的容器,如mac上运行ubuntu的容器。那么容器所需要的内核在哪里?是虚拟机的内核吗?还有这个虚拟机是不是这个正在运行的docker软件,也就是使用docker的虚拟机的内核?

    作者回复: 容器用的就是这个虚拟机的内核。docker软件负责给你启动这个虚拟机。

    
     5
  • balancer
    2018-09-07
    如果运行的容器是一个os ubuntu,那么在这ubuntu里面运行的进程,和这个ubuntu是什么关系 和主机OS是什么关系?谢谢

    作者回复: 使用ubuntu里的文件,使用宿主机上的内核。

    
     5
我们在线,来聊聊吧