GIS+=地理信息+容器技术(3)——Docker安装和镜像管理

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

版权所有:超图研究所(www.supermap.com)

Blog:    http://blog.csdn.net/chinagissoft

QQ群:16403743

宗旨:专注于"GIS+"前沿技术的研究与交流,将云计算技术、大数据技术、容器技术、物联网与GIS进行深度融合,探讨"GIS+"技术和行业解决方案

转载说明:文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

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

Docker安装

由于本人测试操作系统为Ubuntu14.04,对于该操作系统来说,可以直接从Ubuntu源安装Docker程序,具体操作如下

$sudo apt-get update
$sudo apt-get install -y docker.io
$sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
$sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io

但是如果你希望安装最新版本的Docker程序,你可能需要更新不同的源,最新的Docker版本为1.9,具体操作如下

$sudo apt-get install apt-transport-https
$sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA8
$sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
$sudo apt-get update
$sudo apt-get install lxc-docker

相对来说,Docker安装比较其他OpenStack、Hadoop、Spark相对简单。


镜像管理

Linux  FS in Docker

GIS+=地理信息+容器技术(3)——Docker安装和镜像管理_第1张图片

对传统Linux来说,当我们启动这个操作系统时,一般会将Linux的rootFS设置为只读状态,然后检查其完整性,然后再将rootFS设置为可写状态,这样我们就可以对Linux操作系统进行相关操作了。


Docker在启动container时,也将rootfs设置为readonly,然后通过aufs把一个readwrite的fs挂载到rootfs上,并且把下层fs设置为readonly,这样就构成了一个完整的os。



•对每一层readonly的fs,称之为image( 例如上面的Debian或者BusyBox)

•对顶上read-write的fs,称之为container

•对于readonly中的内容的修改,采用的是COW(Copyon Write)的技术,把文件复制到read-wirte层并修改,实际用户看到的是当前container层中的文件,image中的文件不会被影响


•除了baseimage之外,每一层image都有一个parent image( 例如Debian,(Debian+emaces))

•没有parentimage的镜像叫base image( 例如Kernal)

•基于COW的技术,image部分是不会被修改的,因此container可以共享image层的fs,提高了存储效率

如何获得镜像

一般情况下,我们从Docker官方仓库可以获得,当然中国也有比较知名的Docker镜像源,例如DAOCloud或者灵雀云。这个类似与我们是从Ubuntu官方源下载软件还是从阿里源还是163源下载一样。

docker官方提供的用来共享image的平台:https://hub.docker.com


曾经在2015年6月份参加过北京的云计算大会,当时对容器技术(Docker)还不太熟悉,不过也有幸听了来自DAOCloud的创始人陈齐彦和灵雀云创始人左玥的演讲,一个来自EMC(曾就职于Oracle),一个来自微软(负责Windows Server 2016容器部分的研发),都是牛人。


DAOCloud:https://www.daocloud.io/

云雀云:http://www.alauda.cn/


查询镜像


我们可以直接从OS里面使用Docker命令来查询相关镜像信息。

例如我们查询一下Hadoop的容器镜像。



下载镜像


既然我们可以查询镜像,我们就可以将相关镜像下载到本地来使用,例如我们可以下载一个Ubuntu12.04操作系统的镜像。


如果下载不指定tag,会将所有镜像相关tags下载下来,关于tag,请继续查看后面介绍。

一般情况下,该操作可能由于网络、镜像大小导致不同的等待时间。所以建议下载有针对性。

root@controller:/etc/bash_completion.d# sudo docker pull ubuntu:12.04
12.04: Pulling from library/ubuntu
ce049369478e: Pull complete
2ec1b169061f: Pulling fs layer
9bbaf44a8a7c: Download complete
38f2c35e1b51: Download complete
Pulling repository docker.io/library/ubuntu
0ac5b09d8536: Download complete
be10ee96620d: Download complete
5e59ab480134: Download complete
efbb515ae632: Download complete
Status: Downloaded newer image for ubuntu:12.04
docker.io/library/ubuntu: this image was pulled from a legacy registry.  Important: This registry version will not be supported in future versions of docker.


镜像命名与版本管理


镜像下载完毕之后,我们可以通过如下命令来显示镜像列表信息。

root@controller:~/sinatra# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              14.04               1d073211c498        2 weeks ago         187.9 MB
ubuntu              14.04.3             1d073211c498        2 weeks ago         187.9 MB
ubuntu              12.04               0ac5b09d8536        2 weeks ago         136.1 MB
<none>              <none>              ce049369478e        2 weeks ago         135.9 MB
training/sinatra    latest              f0f4ab557f95        17 months ago       447 MB

普通镜像的命名规范{namespace}/{repositoryname}:{tag}

•namespace是dockerhub的用户名,时间是起到了namespace的作用

•repository,类似于github的项目,例如mysql

•tag,表示版本信息,可选,默认latest,例如cesc/mysql:5.6


上传镜像

一般情况下,我们可以使用如下四个步骤来上传我们做好的镜像

•dockerlogin,登录到docker hub中

•把container通过dockercommit的命令转换为image

•通过dockertag来命名新生成的image

•dockerpush到docker hub中


你可能感兴趣的:(GIS+=地理信息+容器技术(3)——Docker安装和镜像管理)