文章目录
1. Docker 介绍与安装(阿里云 CentOS7)
1.1 Docker 是什么?
- Docker 是基于 Go 的实现的开源的应用容器引擎
1.2 传统虚拟机技术与容器的介绍与对比
-
传统虚拟机技术
- 虚拟机就是带环境安装的一种解决方案,它可以在主操作系统里面运行从操作系统,如Windows 10 通过虚拟机管理系统(VMWare、VirtualBox等)构建虚拟机,在虚拟机上安装CentOS7 系统,即可运行 CentOS7 系统,并可以在从操作系统安装部署应用,而应用程序毫无感知。
- 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。
- 缺点:
- 资源占用多
- 冗余步骤多
- 启动慢
-
Hypervisor,又称虚拟机监视器(virtual machine monitor,VMM),是用来建立与执行虚拟机器的软件、固件或硬件。
-
被 Hypervisor 用来执行一个或多个虚拟机器的电脑称为主体机器(host machine),这些虚拟机器则称为客体机器(guest machine)。
-
容器虚拟化技术
- 由于虚拟机存在某些缺点,Linux 容器虚拟化技术出现并发展。
- Linux 容器(Linux Containers,LXC)不是模拟一个完整的操作系统而是对进程进行隔离,通过容器可以将软件运行所需的所有资源打包到一个隔离的容器中。
- 容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置,系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
- 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟,因此容器要比传统虚拟机更为轻便。
- 每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。
1.3 Docker 的组成
- 镜像(Image)
- Docker 镜像(Image)就是一个只读的模板,镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
- Docker 镜像文件类似于 Java 的类模板,而 Docker 容器实例类似于 Java 中 new 出来的实例对象。
- 容器(container)
- Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。
- 容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除,每个容器都是相互隔离的。
- 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
- 仓库(Repository)
- 仓库(Repository)是集中存放镜像文件的场所
- Docker 公司提供的官方 Repository 被称为 Docker Hub,是用于存放各种镜像模板的地方
- 仓库分为公开仓库和私有仓库
1.4 Docker 的优点
- 开发/运维(DevOps,Development & Operations):
- 更快速的应用交付和部署
- 传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。
- Docker 化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。
- 更便捷的升级和扩缩容(响应式部署和扩展)
- 随着微服务架构和 Docker 的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。
- 当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。
- 更简单的系统运维
- 应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。
- 更高效的计算资源利用(在同一硬件上运行更多工作负载)
- Docker 是内核级虚拟化,通过在一台物理机上可以运行多个容器实例,可大大提升物理服务器的 CPU 和内存的利用率
- 更快速的应用交付和部署
1.x Docker 应用场景
- Web 应用的自动化打包和发布
- 在服务型环境中部署和调整数据库或其他的后台应用
- 自动化测试和持续集成、发布
2. Docker 安装(CentOS 7)
2.1 Docker 官网安装文档
- 点击 Developers =》Docs
- 点击 Manuals 手册
- 选择 Docker Engine =》Installation per distro=》Install on CentOS
2.2 安装 Docker
-
Docker 卸载:https://blog.youkuaiyun.com/qq_29726869/article/details/113353315
-
安装方式选择
- 从 Docker 资源库(选择该方式,安装升级方便)
- 下载 RPM 包手动离线安装并手动管理升级(详见官网)
- 脚本方式安装(详见官网)
-
设置 Docker 资源库
-
安装所需的软件包(可以先查询是否安装):yum-utils( 提供了 yum-config-manager)
yum install -y yum-utils
-
设置仓库
# 国外源(不使用) sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
# 阿里云源 sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 清华大学源 sudo yum-config-manager \ --add-repo \ https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
-
-
安装最新版本的 Docker 引擎
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin # 旧版本安装命令 # sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io # 旧版本安装命令示例 # sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
- 是否下载:y
- 是否同意接受 GPG 密钥:y(选)
- 是否同意接受 GPG 密钥:N(不选)
-
启动失败:Failed to start docker.service: Unit not found.
-
解决:
cd /usr/lib/systemd/system
vim docker.socket
-
-
启动 Docker
systemctl start docker
-
通过允许 hello-world 镜像验证 Docker 引擎是否正确安装
docker run hello-world
-
安装成功
-
查看 Docker 版本:docker version
-
卸载
2.3 配置 Docker 镜像加速器(CentOS7)
- 按操作文档命名操作即可
- 也可以配置国内服务商的加速器服务:
- 科大镜像:https://docker.mirrors.ustc.edu.cn/
- 网易:https://hub-mirror.c.163.com/
- 七牛云加速器:https://reg-mirror.qiniu.com
- 腾讯:https://mirror.ccs.tencentyun.com
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn/",
"https://hub-mirror.c.163.com/",
"https://reg-mirror.qiniu.com"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
-
验证加速器是否生效
docker info