基于Docker基础与操作实战
6.1 Docker容器简介
Docker是一个开源的应用容器引擎,它基于Go语言并遵从Apache2.0 协议开源。
Docker是一个用于开发,交付和运行应用程序的开放平台。Docker能将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付,测试和部署代码的方法,可以极大程度减少编写代码和在生产环境中运行代码之间的延迟。
在Windows、Mac、Linux系统都有Docker对应的产品,如图6-1所示。
图6-1 Docker 产品信息
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),如图6-2所示。作为学习和日常基本功能的使用,用社区版就可以了。
图6-2 Docker 社区版和企业版相关的介绍性信息
Docker提供了在松散隔离的环境(称为容器)中打包和运行应用程序的功能。隔离和安全性使您可以在给定主机上同时运行多个容器。容器是轻量级的,因为它们不需要管理程序的额外负担,而是直接在主机的内核中运行。这意味着与使用虚拟机相比,您可以在给定的硬件组合上运行更多的容器。
Docker引擎主要组件(参见图6-3):
- 服务器是一种长期运行的程序,称为守护程序进程。
- REST API提供的接口可以用来与守护程序进行通信并指示它做什么。
- 命令行界面(CLI)客户端(docker命令)。
图6-3 Docker引擎主要组件
那么使用Docker可以为我们带来哪些好处呢?
这里我们引用其官网的概况总结:
- 快速一致地交付您的应用程序
Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
- 响应式部署和扩展
Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
- 在同一硬件上运行更多工作负载
Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。
Docker使用客户端/服务器架构,如图6-4所示。Docker 客户端与Docker 守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。Docker客户端和守护程序可以在同一系统上运行,或者您可以将Docker客户端连接到远程Docker守护程序。Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。
图6-4 Docker架构图
如图6-4所示,针对该架构图中出现的相关概念,作者整理了一个列表供大家参考,如表6-1所示。
表6-1 Docker相关概念说明表
概念 | 说明 |
Docker 守护进程(daemon) | Docker守护程序侦听Docker API请求并管理Docker对象,例如:镜像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。 |
Docker 客户端(Client) | Docker客户端(docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run,客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用Docker API。Docker客户端可以与多个守护程序通信。 |
Docker 主机(Host) | 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
Docker 仓库(Registry) | Docker 仓库用来保存镜像,一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。您可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出具体的标签,将以 latest 作为默认标签。 |
Docker 镜像(Images) | Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。您可以创建自己的镜像,也可以使用其他人创建并在仓库中发布的镜像。要构建自己的镜像,您可以使用简单的语法创建一个Dockerfile,来定义创建镜像并运行它所需的步骤。Dockerfile中的每条指令都会在镜像中创建一个层。更改Dockerfile并重建镜像时,仅重建那些已更改的层。与其他虚拟化技术相比,这是使镜像如此轻巧,小型和快速的部分原因。 |
Docker 容器(Container) | 容器是镜像的可运行实例。您可以使用Docker API或CLI创建、启动、停止、移动或删除容器。您还可以将容器连接到一个或多个网络,将存储附加到该网络,甚至根据其当前状态创建新镜像。默认情况下,容器与其他容器及其主机之间的隔离程度相对较高。但您可以依据于需要,控制容器的网络、存储或其他基础子系统与其他容器或与主机的隔离程度。 |
6.2 Docker的安装过程
这里,作者主要介绍Docker在Centos 7.0和Windows 10操作系统的安装部署过程。
- Centos 7.0 系统Docker安装过程
由于Docker 要求CentOS系统的内核版本必须高于3.10 ,所以您必须验证当前CentOS 的版本是否支持 Docker。输入“uname -r”命令来查看当前CentOS的内核版本,如图6-5所示。
图6-5 查看CentOS内核版本
可以看到CentOS内核版本满足要求,所以继续进行下一步。
安装Docker时,请切换到root权限,并运行“yum update”确保yum包更新到最新。
如果您已经安装过Docker,现在想安装新的Docker版本,请使用“yum remove
docker docker-common docker-selinux docker-engine”命令先删除先前的版本。
安装需要的软件包,运行“yum install -y yum-utils device-mapper-persistent-data lvm2”命令,其中“yum-utils”提供了yum-config-manager,它是用来管理镜像仓库及扩展包的工具,而device mapper 存储驱动程序需要 device-mapper-persistent-data 和lvm2。
设置镜像源,您可以设置Docker提供的镜像源或者国内一些企业提供的镜像源,如:阿里的镜像。
若使用Docker官方镜像源,请使用如下命令:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
若使用Docker阿里镜像源,请使用如下命令:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
您需要根据自身网络下载的情况,针对性的添加Docker镜像源,这里以添加阿里镜像源为例,如图6-6所示。
图6-6 添加Docker阿里镜像源到yum仓库
接下来,开始正式安装Docker-CE,请使用如下命令:
yum install docker-ce
安装过程中,也会安装其依赖包,如图6-7所示。
图6-7 yum安装Docker-CE过程
Docker-CE安装完成后,可以使用“systemctl start docker”来启动Docker服务。当Docker服务启动后可以使用“docker version”命令来查看一下Docker的版本信息,如图6-8所示。
图6-8 启动Docker服务并查看其版本信息
如图6-8这里作者安装的是最新的19.03.8版本,如果您需要安装其他版本,则需要指定版本信息,如:docker-ce-19.03.8。那么问题又来了,如何知道仓库中提供了对应的Docker版本呢?您可以使用“yum list docker-ce --showduplicates | sort -r”命令来查看仓库中可用的版本并按版本号(从高到低)对输出结果进行排序,如图6-9所示。
图6-9 查看仓库中提供的Docker版本信息
通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-19.03.6。若要安装该版本,则对应的命令为“yum install docker-ce-19.03.6”。
- Windows 10系统Docker安装过程
在Windows 10系统安装Docker,需要先开启Hyper-V。Hyper-V是微软的一款虚拟化产品,是微软第一个采用类似Vmware ESXi和Citrix Xen的基于hypervisor的技术。
Hyper-V开启的步骤:
在“应用和功能”页面,单击“程序和功能”,如图6-10所示。
图6-10 应用和功能界面信息
在显示的“卸载或更改程序”界面单击“启用或关闭Windows功能”,即:标识号为1的位置。而后在弹出的“Windows功能”对话框,选中“Hyper-V”选项,即:标识号为2的位置,单击“确定”按钮,如图6-11所示。待其安装完成后,重新启动电脑。
图6-11 启用“Hyper-V”操作步骤信息
图6-12 下载“Docker Desktop”
如图6-12所示,单击“Download for Windows”下载“Docker Desktop”。下载完成后,双击“Docker Desktop Installer.exe”文件,开始配置安装Docker Desktop,如图6-13所示。
图6-13 “Installing Docker Desktop”对话框
单击“OK”按钮,开始执行配置、安装执行过程,安装完成后将显示图6-14。
图6-14 安装完成对话框信息
如图6-14所示,单击“Close”按钮,完成Docker Desktop2.2.0.5版本的安装。
双击桌面上自动生成的“Docker Desktop”快捷方式,来启动Docker,Docker启动后,将在Windows状态栏显示如图6-15所示界面。
图6-15 处于已启动状态的Docker图标显示信息
接下来,您可以打开命令行控制台,输入“docker version”来查看一下Docker 的相关版本信息,如图6-16所示。
图6-16 Docker版本信息
为提升Docker拉取镜像等操作的速度,这里我们可以在设置一下镜像加速,将其镜像仓库地址指向国内的相关站点。对准Windows状态栏的“小鲸鱼”图标(即:Docker图标),单击鼠标右键,在弹出的快捷菜单选择“Settings”菜单项,如图6-17所示。
图6-17 Docker快捷菜单信息
如图6-18所示,单击“Docker Engine”页,在“registry-mirrors”中添加3个国内镜像地址,单击“Apply & Restart”按钮。
图6-18 Docker快捷菜单信息