Wednesday, January 30, 2019

学习舵轮(kubernetes)和埠(docker) - 安装使用Docker

如前面解释的,container很小,自成一体。如果想build一个Windows的container,则需要在Windows环境下安装Docker。
在Windows环境下安装Docker要注意在我在“学习舵轮(kubernetes)和埠(docker) - Kubernetes”说到的VT-x/Hyper-V的问题。就是说如果你的Windows 10是“Home”版的,你将无法直接安装docker。就算你有Windows 10 Pro或Windows 10 Enterprise,如前文所解释的,你将无法同时安装docker和Virtual Box在同一台计算机上。如想在同一台计算机上实习Kubernetes和docker,最好的选择不要enable Hyper-V,同时也不用安装docker,因为minikube下载安装的虚拟机已经有docker安装了。在虚拟机上用docker build image也非常快。但有一种情况下你可能必须安装Windows版docker,如果你想build Windows container的话。那种情况下,你可能不得不来回切换Hyper-V,不幸的是,每次切换后,都要reboot。

在Linux上安装docker则很容易:如在Ubuntu上可用apt或snap来install package:
sudo snap install docker => install docker 18.06.1-ce. 
To run docker without sudo: sudo groupadd docker
sudo usermod -aG docker your-user.
Then re-login.

在技术上,Docker用Linux OverlayFS的支持,refer to overlayfs-driver。在Linux世界里,有时需要同时用两套文件系统,同名目录可以同时被access,当有冲突时,‘upper’ 文件系统会被优先使用。在OpenWRT里,就用到两个文件系统,一套提供了绝大部分Linux系统文件,包括内核,库,系统工具,module驱动等,不过全部文件是在一个image里,只需很小空间,但因为是从imange映射的,所以是只读的,即用户不可改写;另一套是闪存映射的文件系统(upper fileFS),用户可以读写,两套系统用同样的Linux目录design,这样,当用户需要时,用户可以添加或删除文件,但这只影响闪存映射的文件系统。所以对终端用户这种共享access是透明的。Docker也用到双文件系统,一个是host本身的文件系统,一个是目标系统。举个例子,我的计算机运行Ubuntu 14.04 Kernel 3.19,我可以用docker安装另一套Ubuntu 16.04 Kernel 4.4的另一套文件系统,用来运行给Ubuntu16.04设计的程序。这是一个很奇妙的design,通过这种隔离和共享,我们可以标准化各种container image,然后在各种不同的平台上运行它,只要那个平台上提供dockker支持。就像Java程序可以在任何提供Java虚拟机的平台上运行一样。
With snap, images are stored at /var/snap/docker/common/var-lib-docker/aufs/diff.

0 Comments:

Post a Comment