筹划建设协会网站的方案,义乌营销型网站建设,电影网站排名怎么做,商城网站建设步骤文章目录一 Docker环境准备1.1 应用部署的环境问题1.2 Docker简介1.3 Docker解决操作系统环境差异1.4 Docker和虚拟机的区别1.5 Docker架构1.5.1 镜像和容器1.5.2 DockerHub1.5.3 Docker架构1.5.4 Docker工作流1.6 Docker的安装和启动1.7 安装步骤1.8 启动Docker1.9 配置镜像加…
文章目录一 Docker环境准备1.1 应用部署的环境问题1.2 Docker简介1.3 Docker解决操作系统环境差异1.4 Docker和虚拟机的区别1.5 Docker架构1.5.1 镜像和容器1.5.2 DockerHub1.5.3 Docker架构1.5.4 Docker工作流1.6 Docker的安装和启动1.7 安装步骤1.8 启动Docker1.9 配置镜像加速一 Docker环境准备
微服务虽然具备各种各样的优势但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中依赖的组件非常多不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署环境不一定一致会遇到各种问题
1.1 应用部署的环境问题
大型项目组件较多运行环境也较为复杂部署时会碰到一些问题 依赖关系复杂容易出现兼容性问题开发、测试、生产环境有差异 例如一个项目中部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等这些服务部署时所需要的函数库、依赖项各不相同甚至会有冲突。Docker确巧妙的解决了这些问题。Docker为解决依赖的兼容问题采用了两个手段 将应用的Libs函数库、Deps依赖、配置与应用一起打包将每个应用放到一个隔离容器去运行避免互相干扰 包好的应用包中既包含应用本身也保护应用所需要的Libs、Deps无需再操作系统上安装这些自然就不存在不同应用之间的兼容问题。
1.2 Docker简介 Docker 是一个开源的应用容器引擎基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中然后发布到任何流行的 Linux 机器上也可以实现虚拟化。容器是完全使用沙箱机制相互之间不会有任何接口类似 iPhone 的 app,更重要的是容器性能开销极低。Docker的优点 Docker 是一个用于开发交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开从而可以快速交付软件。借助 Docker您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付测试和部署代码您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
1.3 Docker解决操作系统环境差异
开发、测试等环境会存在差异操作系统版本也会有差异Docker怎么解决这些问题呢 要解决不同操作系统环境差异问题必须先了解操作系统结构。以一个Ubuntu操作系统为例结构如下 计算机硬件例如CPU、内存、磁盘等系统内核所有Linux发行版的内核都是Linux例如CentOS、Ubuntu、Fedora等。内核可以与计算机硬件交互对外提供内核指令用于操作计算机硬件。系统应用操作系统本身提供的应用、函数库。这些函数库是对内核指令的封装使用更加方便。 应用于计算机交互的流程如下 应用调用操作系统应用函数库实现各种功能系统函数库是对内核指令集的封装会调用内核指令内核指令操作计算机硬件 Ubuntu和CentOS都是基于Linux内核只是系统应用不同提供的函数库有差异。 如果将一个Ubuntu版本的MySQL应用安装到CentOS系统MySQL在调用Ubuntu函数库时会发现找不到或者不匹配就会报错 Docker如何解决不同系统环境的问题 Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包Docker运行到不同操作系统时直接基于打包的函数库借助于操作系统的Linux内核来运行 Docker是一个快速交付应用、运行应用的技术,具备下列优势 可以将程序及其依赖、运行环境一起打包为一个镜像可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器各个应用互不干扰启动、移除都可以通过一行命令完成方便快捷
1.4 Docker和虚拟机的区别
Docker可以让一个应用在任何操作系统中非常方便的运行。而以前我们接触的虚拟机也能在一个操作系统中运行另外一个操作系统保护系统中的任何应用。两者有什么差异呢虚拟机virtual machine是在操作系统中模拟硬件设备然后运行另一个操作系统比如在 Windows 系统里面运行 Ubuntu 系统这样就可以运行任意的Ubuntu应用Docker仅仅是封装函数库并没有模拟完整的操作系统 Docker和虚拟机的对比
特性Docker虚拟机性能接近原生性能较差硬盘占用一般为MB一般为GB启动秒级分钟级
1.5 Docker架构
1.5.1 镜像和容器
Docker中有几个重要的概念 镜像ImageDocker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起称为镜像。容器Container镜像中的应用程序运行后形成的进程就是容器只是Docker会给容器进程做隔离对外不可见。 一切应用最终都是代码组成都是硬盘中的一个个的字节形成的文件。只有运行时才会加载到内存形成进程。镜像就是把一个应用在硬盘上的文件、及其运行环境、部分系统函数库文件一起打包形成的只读的文件包。容器就是将这些文件中编写的程序、函数加载到内存中允许形成进程不过要隔离起来。因此一个镜像可以启动多次形成多个容器进程。 1.5.2 DockerHub
开源应用程序非常多打包这些应用往往是重复的劳动。为了避免这些重复劳动人们就会将自己打包的应用镜像例如Redis、MySQL镜像放到网络上共享使用就像GitHub的代码共享一样。DockerHubDockerHub是一个官方的Docker镜像的托管平台。这样的平台称为Docker Registry。国内也有类似于DockerHub 的公开服务比如 网易云镜像服务、阿里云镜像库等。一方面可以将自己的镜像共享到DockerHub另一方面也可以从DockerHub拉取镜像
1.5.3 Docker架构
Docker是一个CS架构的程序由两部分组成 服务端(server)Docker守护进程负责处理Docker指令管理镜像、容器等客户端(client)通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令
1.5.4 Docker工作流
构建自定义镜像或者从DockerRegistry拉取镜像根据镜像创建容器并运行
1.6 Docker的安装和启动
Docker 分为 CE 和 EE 两大版本。CE 即社区版免费支持周期 7 个月EE 即企业版强调安全付费使用支持周期 24 个月。Docker CE 分为 stable test 和 nightly 三个更新频道。官方网站上有各种环境下的 安装指南这里主要介绍 Docker CE 在 CentOS上的安装。Docker CE 支持 64 位版本 CentOS 7并且要求内核版本不低于 3.10 CentOS 7 满足最低内核的要求所以我们在CentOS 7安装Docker。
查看系统版本【可选】cat /etc/redhat-release查看内核版本【可选】uname -a
或者
uname -sr操作示例【可略】[rootkongyue ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[rootkongyue ~]# uname -a
Linux kongyue 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[rootkongyue ~]# uname -sr
Linux 3.10.0-1160.el7.x86_64卸载Docker【如果centos从来没有安装过docker可以跳过这一步】yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine \docker-ce以下是没安装过docker的操作效果
1.7 安装步骤 首先需要大家虚拟机联网安装yum工具 yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken然后更新本地镜像源 yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i s/download.docker.com/mirrors.aliyun.com\/docker-ce/g /etc/yum.repos.d/docker-ce.repoyum makecache fast然后输入docker安装命令 yum install -y docker-cedocker-ce为社区免费版本。稍等片刻docker即可安装成功。
1.8 启动Docker
Docker应用需要用到各种端口逐一去修改防火墙设置。非常麻烦因此建议大家直接关闭防火墙建议依次执行以下命令# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld出现以下结果说明关闭防火墙成功 通过命令操作dockersystemctl start docker # 启动docker服务systemctl stop docker # 停止docker服务systemctl restart docker # 重启docker服务然后输入命令可以查看docker版本docker -v如果可以查看到docker的版本信息说明安装成功[rootkongyue ~]# docker -v
Docker version 23.0.1, build a5ee5b11.9 配置镜像加速
docker官方镜像仓库网速较差我们需要设置国内镜像服务参考阿里云的镜像加速文档配置镜像加速器 针对Docker客户端版本大于 1.10.0 的用户您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json -EOF
{registry-mirrors: [https://1fb07lig.mirror.aliyuncs.com]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker