docker 安装
一、容器与 Docker 概述
-
容器:是一种轻量级、可移植、自包含的软件打包技术,确保应用在任何环境中运行一致。
-
Docker:是一个用于开发、交付和运行应用的开放平台,实现应用与基础设施的解耦。
二、Docker 的优势
-
快速交付与部署:镜像标准化,启动秒级。
-
高效虚拟化:内核级虚拟化,无需 Hypervisor。
-
轻松迁移与扩展:跨平台运行(物理机、云、虚拟机等)。
-
简化管理:增量更新,自动化管理。
容器的标准化
在2015年,由Google,Docker、CoreOS、IBM、微软、红帽等厂商联合发起的OCI( Open Container Initiative)组织成立了,并于2016年4月推出了第一个开放容器标准。标准主要包括runtime spec标准和image format spec标准。标准的推出,有助于替成长中市场带来稳定性,让企业能放心采用容器技术,用户在打包、部署应用程序后,可以自由选择不同的容器Runtime;同时,镜像打包、建立、认证、部署、命名也都能按照统一的规范来做。
Runtime是容器真正运行的地方,Runtime需要跟操作系统kernel紧密协作,为容器提供运行环境。目前主流的三种容器Runitme有:lxc、runc、rkt。
- Lxc是Linux上的老牌runtime。Docker最初也是使用lxc作为runtime。
- Runc是Docker自己开发的容器runtime,符合OCI规范,也是现在Docker的默认runtime。
- rkt是CoreOS开发的容器runtime,符合OCI规范,因而能够运行Docker的容器。
Docker的优势
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高。传统虚拟机方式运行10个不同的应用就要起10个虚拟机,而Docker只需要启动10个隔离的应用即可。
具体说来,Docker在如下几个方面具有较大的优势。
1、更快速的交付和部署
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker容器很轻很快,容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
2、更高效的虚拟化
Docker容器的运行不需要额外的hypervisor支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
3、更轻松的迁移和扩展
Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
4、更简单的管理
使用Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
三、Docker 架构与核心组件
-
Docker 客户端:如
docker
命令或 REST API。 -
Docker 守护进程(Docker daemon):负责构建、运行和分发容器。
-
Docker 镜像:只读模板,用于创建容器。
-
Docker 容器:镜像的运行实例。
-
Registry:镜像仓库(公有如 Docker Hub,私有如自建仓库)。
四、Docker 安装步骤(CentOS 7)
安装环境:
- 管理工具:docker-ce最新版本。
- Runtime:使用docker默认支持的runc。
- 操作系统:Centos7,目前在国内Centos用的较多。
-
关闭防火墙与 SELinux
systemctl stop firewalld systemctl disable firewalld # 编辑 /etc/selinux/config,设置 SELINUX=disabled reboot
-
更换 yum 源为阿里源
yum install -y wget wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum -y install epel-release
-
添加 Docker 源并安装 Docker CE
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo yum clean all yum install -y docker-ce
-
启动 Docker 并验证
systemctl restart docker systemctl enable docker docker --version
-
配置镜像加速器(如阿里云、中科大等)
- 编辑
/etc/docker/daemon.json
,添加镜像地址。 - 重启 Docker:
systemctl daemon-reload && systemctl restart docker
{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn" ] }
- 编辑
五、总结要点
- 容器提供一致性的运行环境,具备强可移植性。
- Docker 实现应用与环境的隔离,提升开发与运维效率。
{
"registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn"
]
}
五、总结要点
- 容器提供一致性的运行环境,具备强可移植性。
- Docker 实现应用与环境的隔离,提升开发与运维效率。
- 容器与虚拟机的本质区别:容器共享宿主机内核,虚拟机独立虚拟化环境。