前言
现在开始打算入坑Docker,因为要用到Docker,所以现在开始记录下学习Docker的过程,方便自己翻阅,大多数都是根据 “Docker从入门到实践” 这本书整理的。
什么是Docker
Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器
。诞生于2013年初,最初是dotCloud公司内部的一个业余项目。基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
Docker的优点
1.更快速的交付和部署
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来 部署代码。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员 更容易理解应用程序是如何创建和工作的。Docker容器很轻很快!容器的启动时间是秒级
的,大量地节约 开发、测试、部署
的时间。
2.更高效的虚拟化
Docker容器的运行不需要额外的hypervisor支持,它是内核级的虚拟化,因此可以实现更高的性能和效 率。
3.更轻松的迁移和扩展
Docker容器几乎可以在任意的平台上运行
,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
4.更简单的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和 更新,从而实现自动化并且高效的管理
基本概念
Docker包括三个基本概念
镜像(Image)
容器(Container)
仓库(Repository)
Docker镜像
Docker镜像就是一个只读的模板
。
镜像可以用来创建Docker容器。
Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
Docker容器
Docker 利用容器来运行应用。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。
每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
*注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
Docker仓库
仓库分为公开仓库(Public)
和私有仓库(Private)
两种形式。
最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool 等,可以提供大陆用户更稳定快速的访问。当然我们也可以在本地创建一个私有仓库。
仓库是集中存放镜像文件的场所。有时候会把仓库
和仓库注册服务器(Registry)
混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的 标签(tag)。
当用户创建了自己的镜像之后就可以使用push
命令将它上传到公有或者私有仓库,这样下次在另外一台 机器上使用这个镜像时候,只需要从仓库上pull
下来就可以
*注:Docker仓库的概念跟Git类似,注册服务器可以理解为GitHub这样的托管服务。
Docker安装
因为我用的是CentOS,所以在这里只记录CentOS7下Docker的安装方法
CentOS7安装Docker
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10
以上。
以下#
代表在root权限下,如果不是root权限,在命令前面加上sudo
首先使用uname -r
查看Linux内核信息,如果满足条件的话就可以进行下一步安装了
# yum install docker
安装之后启动Docker服务,并让它随系统启动自动加载。
# service docker start
# chkconfig docker on
镜像加速
然后因为在docker官网下东西会比较慢,我们可以配置加速器来解决
Linux 下: 找到 /etc/docker/daemon.json
(没有就创建一个daemon.json文件)
使用网易的镜像地址:http://hub-mirror.c.163.com
请在该配置文件中加入:
{
“registry-mirrors”: [“http://hub-mirror.c.163.com“]
}
获取镜像
可以使用docker pull
命令来从仓库获取所需要的镜像。
# docker pull ubuntu:12.04
获取一个Ubuntu 12.04
操作系统的镜像
下载过程中,会输出获取镜像的每一层信息。
该命令实际上相当于# docker pull registry.hub.docker.com/ubuntu:12.04
命令,即从注册服务器registry.hub.docker.com
中的ubuntu
仓库来下载标记为12.04
的镜像。
官方注册服务器下载的比较慢,也可以从别人的仓库下载,但是需要指定完整路径的仓库注册服务器地址
完成后,即可随时使用该镜像了,例如创建一个容器,让其中运行bash应用。
# docker run -t -i ubuntu:12.04 /bin/bash
使用exit
退出容器
列出本地镜像
docker images
在列出信息中,可以看到几个字段信息
来自于哪个仓库,比如ubuntu
镜像的标记,比如12.04
它的ID号(唯一)
创建时间
镜像大小
其中镜像的ID唯一标识了镜像,TAG 信息用来标记来自同一个仓库的不同镜像
指定使用镜像ubuntu:12.04
来启动一个容器
如果不指定具体的标记,则默认使用latest标记信息。
自此CentOS7下的Docker就安装完成了