1.docker简介

  • 容器虚拟化,比传统虚拟化轻量

  • 2013年出现,发展非常迅猛

  • Redhat在6.5版本开始支持docker

  • 使用GO语言开发,基于apache2.0协议

  • 开源软件,项目代码在github维护

2.容器虚拟化和传统虚拟化比较

Docker安装及镜像管理_docker

3.Docker的优势

  • 启动非常快,秒级实现

  • 资源利用率很高,一台机器可以跑上千个docker容器

  • 更快的交付和部署,一次创建和配置后,可以在任意 地方运行

  • 内核级别的虚拟化,不需要额外的hypevisor支持,会有更高的性能和效率

  • 易迁移,平台依赖性不强


4.Docker核心概念

  • 镜像,是一个只读的模板,类似于安装系统用到的那个ISO文件,我们通过镜像来完成各种应用的部署

  • 容器,镜像类似于操作系统,而容器类似于虚拟机本身。它可以被启动、开始、停止、删除等操作,每个容器都是相互隔离的。

  • 仓库,存放镜像的一个场所,仓库分为公开仓库和私有仓库。最大的公开仓库是Docker hub(hub.docker.com),国内公开仓库(dockerpool.com)

5.Docker安装

centos6 上安装(6.5之前版本需要升级一下 yum update )

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo    

yum clean all

yum makecache

#安装阿里yum源及扩展源


yum install -y docker-io   #centos6

yum install -y docker   #如果是centos7

/etc/init.d/docker start   #centos6启动,需要docker -d 一下

systemctl start docker     #centos7启动


相关报错:

docker: relocation error: docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference

解决:

yum upgrade device-mapper-libs


6.Docker镜像管理

docker pull  centos     #从docker.com获取centos镜像

docker p_w_picpaths #查看本地都有哪些镜像

docker tag centos szk #为centos镜像设置标签为szk,再使用docker p_w_picpaths查看会多出来一行,改行的p_w_picpath id和centos的一样

docker search (p_w_picpath-name)   #从docker仓库搜索docker镜像,后面是关键词

docker run -t -i centos  /bin/bash  #用下载到的镜像开启容器,-i表示让容器的标准输入打开,-t表示分配一个伪终端,要把-i -t 放到镜像名字前面

当该镜像发生修改后,我们可以把该镜像提交重新生成一个新版本进行在本地。

docker ps  #查看运行的容器

docker rmi centos  #用来删除指定镜像, 其中后面的参数可以是tag,如果是tag时,实际上是删除该tag,只要该镜像还有其他tag,就不会删除该镜像。当后面的参数为镜像ID时,则会彻底删除整个镜像,连通所有标签一同删除

docker ps -a #查看所有容器,包括已经退出的。


7.基于已有镜像的容器创建镜像

运行docker run后,进入到该容器中,我们做一些变更,比如安装一些东西,然后针对这个容器进行创建新的镜像

docker commit -m "change somth"  -a "somebody info"  p_w_picpath_id (通过docker p_w_picpaths获取id) 新镜像名字

例如:  

docker commit -m "install httpd" -a "Aming" 2c74d574293f aming/centos

#这个命令有点像svn的提交,-m 加一些改动信息,-a 指定作者相关信息  2c74d这一串为容器id,再后面为新镜像的名字


8.基于本地模板导入创建镜像

模块获取地址:http://openvz.org/Download/templates/precreated 

cat centos-6-x86_64-minimal.tar.gz |docker import - cnetos-6-x86_64

#使用一个centos6模板导入

docker p_w_picpaths     #查看导入文件

REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE

cnetos-6-x86_64     latest              f4bd4fe45d33        About a minute ago   326.4 MB

docker save -o centos.tar docker.io/centos  

#把现有镜像,导出为一个文件,前面的生成的文件名,后面的源镜像

 ll -h       #生成的文件在当前目录下

-rw-r--r--  1 root root 195M 3月  17 14:56 centos.tar

我们还可以用该文件恢复本地镜像:

docker load --input centos.tar 或者

docker load < centos.tar

docker push centos.tar   

#可以把自己的镜像传到dockerhub官方网站上去,但前提是需要先注册一个用户,后续如果有需求再研究吧