研一寒假Docker学习笔记1

来源:互联网 发布:淘宝网店推广方法 编辑:程序博客网 时间:2024/06/04 21:17

命名空间:

我看到的命名空间是,每个容器都可以拥有自己单独的命名空间,运行在其中的应用都像是在独立的

操作系统中运行一样。命名空间保证了容器之间互不影响。

命名空间分为:

1,进程命名空间

2,网络命名空间

3,IPC命名空间

4,挂载命名空间

5,UTS命名空间

6,用户命名空间


说那么多都是书上的东西,只是自己看到的,上面的六个命名空间,我想弄明白进程命名空间,想了解

网络命名空间和用户命名空间,其他的几个就算了,所以下面主要记一下进程命名空间(还好linux学过了进

程那一章,嘿嘿)。


进程命名空间:

linux通过命名空间管理进程号,对于同一进程(task_struct),在不同的命名空间中,看到的进程号是

不同的,每个进程命名空间有一套自己的进程号管理方法。进程命名空间是一个父子关系的结构,子空间中

的进程对于父空间是可见的。新fork出的进程在父命名空间和子命名空间将分别有一个进程号来对应。

-------------------------------------------------------------------

让我来自己理解一下上面的那段话。

学过linux知道,linux里面其实并没有着重线程的概念,换句话说,把线程当作进程来对待。然后呢,还

知道linux中管理进程的方法是用一个进程控制块,叫做PCB。每个进程对应自己的一个PCB。

明确了上面的这个概念,就可以知道,docker再怎么虚拟化,总该还是一个进程就是一个PCB吧,这一

点应该是不变的。

然后一句句的理解一下上面的那几句话,以前学的linux进程中,每一个进程有自己独有的一个pid,也就

是进程号,这个号是独有的。然而上面关于进程命名空间的那段话说的是,一个进程可以有很多个pid,在不

同的命名空间中,看到的同一进程的pid是不同的。嗯,就是这么个意思。【对于同一进程(task_struct),

不同的命名空间中,看到的进程号是不同的。

那么第一句话呢,【linux通过命名空间来管理进程号】,这句话怎么理解呢。暂时先放着。

进程命名空间是一个父子关系的结构,子空间中的进程对于父空间是可见的。】这句话的意思就比较明

显了,说的就是进程命名空间是一个父子关系结构,父子关系结构就是说,一个父进程命名空间可以有很多个

子进程命名空间,而一个子进程命名空间只能有一个父进程命名空间。而且,父进程命名空间可以看到自己所

有子进程命名空间中的所有进程。相反,子空间看不到父空间中的进程,这个就像我爸知道我有多钱,而我并

不知道我爸有多前。(注:这里JAVA中的继承是不同的,不同的,不同的。)


新fock出来的进程在父命名空间和子命名空间将分别有一个进程号来对应。】这句话没啥好说的。

-------------------------------------------------------------------

关说不练假把式,程序猿就是要去实践,毛主席说的好,实践才是检验真理唯一的标准。(并不确定是不

是毛主席说的。  = =)

下面是我关于进程命名空间实践的截图和解说:

1、进入root下,第一行启动docker服务,命令是:service docker start

2、第二行显示docker已经启动,进程号是2937

3、第三行是查看docker服务中的镜像们,命令是docker  images,我只截图了三个镜像,分别是:含有

apache服务的Ubuntu,含有sshd的Ubuntu,含有mysql的Ubuntu,并没有截图出来它是多大。


1、eixt退出docker服务。

2、退出后用ps命令查看docker进程,,可以看到第一个docker进程的进程号是2937,跟上面的一样。

3、下面的一行是上面的那个ps命令,因为那个命令里面有个docker字符,所以也就grep出来了。


1、启动一个docker容器,所用的镜像名字是62,62就是那个含有apache的Ubuntu镜像,-d的意思是以守护态运行。

2、启动Ubuntu中bin目录下的sh命令,参数是-c ,程序是, while条件为真时,输出hello world ,睡眠一秒,结束。

3、新建的容器名字是018e9bc...

4、之后再查看进程 ,会发现第一行就是新建的那个容器,它的进程号是3873,他的父进程是2937,就是之前的docker主进程。

关于进程命名空间就先看这么多,说真的,看完真不知道这个有啥意思,感觉不到意义。知其然不知其所以然。

暂时这样吧,至于其他的几个命名空间就先不看了。累的很。

================================================


写这篇笔记的过程中悟到了这么几个东西:

根本没有进程这个东西,这个东西是抽象出来给人来想象的。真正跑在系统中的是PCB这个东西,这个东

西才是进程的实体,这个东西才是真正的进程。










0 0
原创粉丝点击