Docker理论知识
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)
Docker EE专为企业的发展和IT团队建立,为企业提供最安全的容器平台,以应用为中心的平台,有专门的团队支持,可在经过认证的操作系统和云提供商中使用,并可运行来自DockerStore的经过认证的容器和插件。
Docker CE是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。
Docker的三个基本概念
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。
Docker架构
Docker 镜像(Images):Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。
Docker 容器(Container):容器是独立运行的一个或一组应用,是镜像运行时的实体。
Docker 客户端(Client):Docker 客户端通过命令行或者其他工具使用 Docker SDK与 Docker 的守护进程通信。
Docker 主机(Host):一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker Registry:Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
Docker Hub提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
Docker Machine:Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。
Docker的优点
灵活:即使是最复杂的应用也可以集装箱化。
轻量级:容器利用并共享主机内核。
可互换:可以即时部署更新和升级。
便携式:可以在本地构建,部署到云,并在任何地方运行。
可扩展:可以增加并自动分发容器副本。
可堆叠:可以垂直和即时堆叠服务。
在同一硬件上运行更多工作负载。
允许高度可移植的工作负载
Docker私有仓库
Docker仓库分为公有仓库和私有仓库,然而公有仓库在某些情况下并不适用于公司内部传输。通过对比两种仓库的特点,大致可以得出私有仓库有以下优点:
① 节省带宽;
② 传输速度快;
③ 方便存储。
Docker镜像及容器的使用
Image(镜像)是一个只读模板,由Dockerfile文件描述镜像内容,镜像定义类似面对对象的类。
构建一个镜像实际就是安装、配置、运行的过程。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。
容器是一个镜像运行的实例,容器由镜像创建,运行用户指定的指令或者Dockerfile定义的运行指令。
容器之间都是互不可见的。
容器编排
容器编排是指对单独组件和应用层的工作进行组织的流程。
应用一般由单独容器化的组件(通常称为微服务)组成,且必须按照顺序在网络级别进行组织,使其能够按照计划运行。
所有的容器编排引擎均可让用户控制器启动和停止的时间,将其分组合到集群中,以及协调应用组合的流程。
Docker引擎的安装
使用存储库安装
在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。
设置存储库 安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定存储库。
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
可选:启用夜间或测试存储库。 这些存储库包含在docker.repo上面的文件中,但默认情况下是禁用的。您可以在稳定存储库旁边启用它们。以下命令启用夜间存储库。
$ sudo yum-config-manager --enable docker-ce-nightly
要启用测试通道,请运行以下命令:
$ sudo yum-config-manager --enable docker-ce-test
您可以通过运行带有标志的命令来禁用夜间或测试存储库 。要重新启用它,请使用该标志。以下命令禁用夜间存储库。yum-config-manager
--disable
--enable
$ sudo yum-config-manager --disable docker-ce-nightly
安装Docker引擎
安装最新版本的 Docker Engine 和 containerd,或者进入下一步安装特定版本:
$ sudo yum install docker-ce docker-ce-cli containerd.io
如果提示接受 GPG 密钥,请验证指纹是否匹配060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
,如果匹配 ,请接受。
Docker 已安装但未启动。该docker
组被创建,但没有用户添加到组。
要安装特定版本的 Docker Engine,请在 repo 中列出可用版本,然后选择并安装一种。列出并排序您的仓库中可用的版本。此示例按版本号对结果进行排序,从高到低,并被截断。
$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 3:20.10.7-3.el7 docker-ce-test
docker-ce.x86_64 3:20.10.7-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.7-3.el7 @docker-ce-stable
docker-ce.x86_64 3:20.10.6-3.el7 docker-ce-test
docker-ce.x86_64 3:20.10.6-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.5-3.el7 docker-ce-test
docker-ce.x86_64 3:20.10.5-3.el7 docker-ce-stable
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
Docker 已安装但未启动。该docker
组被创建,但没有用户添加到组。
启动 Docker。
$ sudo systemctl start docker
通过运行hello-world
映像验证 Docker Engine 是否已正确安装。
$ sudo docker run hello-world
此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。
至此Docker引擎安装完毕