一、Docker是什么?
- Docker它是基于GO语言的应用容器引擎,是开发、运行、部署应用程序的开放管理平台。
- 它借助于linux的命名空间、控制组、联合文件系统以及虚拟化技术,使其不仅能在linux系统运行,也可以在windows、macos上运行(虚拟化技术);
- 它提供了在一个完全隔离的环境中打包和运行应用程序的能力,这个隔离环境称为容器(隔离性、安全性)。
- 由于容器的隔离性和安全性,因此在一个主机(宿主机)上同时运行多个相互隔离的容器,互不干扰。
1.底层技术
- 容器格式(Container Format):docker目前使用的容器格式为libcontainer;
它指的是Docker引擎将namespace、cgroups、UnionFS组合成一个package,docker通过对这个package中的namespace、cgroups、UnionFS进行管理控制实现容器的创建和生命周期的管理。 - 命名空间(namespaces):为docker容器提供操作系统层面的隔离
- 进程号隔离即每个容器内运行的第一个程序的进程号都是从1开始起算的;
- 网络隔离即容器的网络与宿主机或者其他容器间的网络是隔离的,相当于两个网络、互不干扰;
- 进程间通信的隔离即容器中的进程与宿主机或其他容器中的进程是隔离状态的,若要通信需要借助与网络;
- 文件系统挂载隔离即容器容易自己独立的工作目录;
- 内核及系统版本号隔离即容器查看内核版本信息或系统版本号的时,查看的是容器的而非宿主机的;
- 控制组(control groups):为docker容器提供硬件层面的隔离
控制组能控制应用程序所使用的硬件资源,因此可以帮助docker引擎将硬件资源共享给容器,并可加以约束和限制(控制容器所使用的内存大小)。 - 联合文件系统(union file systems):利用分层(layer)思想管理镜像和容器
2.优点
- Docker主要解决的问题包括:程序运行环境的一致性,降低配置开发环境、生产环境的复杂度和成本,程序的快速开发与部署。
- ocker能将应用程序与基础架构分开,便于开发人员将代码移植到不同的操作系统上;
- 使用Docker开发完成程序,可以直接对应用程序执行自动和手动测试;
- docker借助于linux内核的特性,使得容器与宿主机间的隔离更加彻底,容器具有独立的网络和存储栈,并拥有自己的资源管理能力,因此可以像管理应用程序一样管理基础架构。
- 当开发人员发现BUG时,可直接在开发环境中修复,并迅速将它们重新部署到测试环境进行测试和验证;
- 利用Docker的方法快速进行运输、测试和部署代码,缩短编写代码和在生产环境中运行代码之间的延迟。
如:开发人员在本地编写代码,可以使用Docker同事进行共享,实现协同工作。
使用Docker开发完成程序,可以直接对应用程序执行自动和手动测试。
当开发人员发现错误或BUG时,可以直接在开发环境中修复后,并迅速将它们重新部署到测试环境进行测试和验证。
利用Docker开发完成后,交付时,直接交付Docker,也就意味着交付完成。后续如果有提供修补程序或更新,需推送到生成环境运行起来,也是一样的简单。
二、Docker的结构
Docker引擎其实是一个C/S应用程序,包括服务端、REST API、客户端这三部分;客户端利用docker命令通过rest接口直接操控服务器(长时间运行的守护进程)执行操作;服务器负责创建并管理docker的对象。
1.Docker客户端(Docker Client)
Docker客户端(Docker Client)是用户与Docker进行交互的最主要方式。当在终端输入docker命令时,对应的就会在服务端产生对应的作用,并把结果返回给客户端。Docker Client除了连接本地服务端,通过更改或指定DOCKER_HOST连接远程服务端。
2.Docker服务端(Docker Server)
Docker Daemon其实就是Docker 的服务端。它负责监听Docker API请求(如Docker Client)并管理Docker对象(Docker Objects),如镜像、容器、网络、数据卷等
3.Docker Registries
俗称Docker仓库,专门用于存储镜像的云服务环境。
Docker Hub就是一个公有的存放镜像的地方,类似Github存储代码文件。同样的也可以类似Github那样搭建私有的仓库。
4.Docker 对象(Docker Objects)
镜像:一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。
容器:镜像被运行起来后的实例。
网络:外部或者容器间如何互相访问的网络方式,如host模式、bridge模式。
数据卷:容器与宿主机之间、容器与容器之间共享存储方式,类似虚拟机与主机之间的共享文件目录。
三、安装
1.Ubuntu 上安装 Docker-CE
- 系统要求:Ubuntu 14.04及其以上版本
- 官方源安装教程: https://docs.docker.com/install/linux/docker-ce/ubuntu/
- 阿里源安装教程:https://help.aliyun.com/document_detail/60742.html
2.Centos 上安装 Docker-CE
- 系统要求:CentOS7
- 官方源安装教程:https://docs.docker.com/install/linux/docker-ce/centos/#install-using-the-repository
- 阿里源安装教程:https://help.aliyun.com/document_detail/60742.html
3.Windows/Mac 上安装 Docker-CE
- Windows系统要求:Windows10x64,支持Hyper-V。
- Mac系统要求:OS X 10.10.3或者更高版本,至少4G。
- 安装软件下载地址:http://get.daocloud.io/#install-docker-for-mac-windows