Docker基础
云平台
云平台优点:
- 环境统一
- 按需付费
- 即开即用
- 稳定性强
- ...
国内常见云平台:阿里云、百度云、腾讯云、华为云、青云...
国外常见云平台:亚马逊 AWS、微软 Azure...
公有云
公有云是最常见的云计算部界类型,公有云资源(例如股务器和存储空间)由第三方云服务提供商拥有和运营,这些资源通过 Internet 提供。在公有云中,所有硬件、软件和其他支持性基础结构均为云提供商所拥有和管理。Microsoft Azure 是公有云的一个示例
在公有云中,你与其他组织或云“租户”共享相同的硬件、存储和网络设备,并且你可以使用 Web 浏览器访问服务和管理帐户。公有云部雾通常用于提供基于 Web 的电子邮件、网上办公应用、存储以及测试和开发环境
公有云优势:
- 成本更低:无需购买硬件或软件,仅对使用的服务付费
- 无需维护:维护由服务提供商提供
- 近乎无限制的缩放性:提供按需资源,可满足业务需求
- 高可靠性:具备众多服务器,确保免受故障影响
- 可用性:N个9,全年故障时间:365243600*(1-99.9999%)
私有云
私有云由专供一个企业或组织使用的云计算资源构成。私有云可在物理上位于组织的现场数据中心,也可由第三方服务提供商托管。但是,在私有云中,服务和基础结构始终在私有网络上进行维护,硬件和软件专供组织使用
这样,私有云可使组织更加方便地自定义资源,从而满足特定的IT需求。私有云的使用对象通常为政府机构、金融机构以及其他具备业务关键性运营且希望对环境拥有更大控制权的中型到大型组织
私有云优势:
- 灵活性更强:组织可自定义云环境以满足特定业务需求
- 控制力更强:资源不与其他组织共享,因此能获得更高的控制力以及更高的隐私级别
- 可伸缩性更强:与本地基础结构相比,私有云通常具有更强的可伸缩性
私有网络
VPC(Virtual Private Cloud):私有网络、专有网络(划分网段)
# 点格式十进制
192.168.0.0/16
# 二进制
11000000 10101000 00000000 00000000
192.168.0.0-192.168.255.255 = 256*256 = 65536
Docker
虚拟化与容器化
虚拟化技术
- 基础镜像 GB 级别
- 创建使用稍微复杂
- 隔离性强
- 启动速度慢
- 移植与分享不方便
容器化技术
- 基础镜像 MB 级别
- 创建简单
- 隔离性强
- 启动速度秒级
- 移植与分享方便
Docker解决的问题
- 统一标准
- 应用构建:语言不通导致构建不同(Java、C++、JavaScript),使用 docker build 打成镜像来解决这个问题(类似 Windows exe)
- 应用分享:所有软件进行过放到一个指定地方 docker hub(类似应用市场)
- 应用运行:统一标准的镜像,docker run
- 资源隔离
- cpu、memory 资源隔离与限制
- 访问设备隔离与限制
- 网络隔离与限制
- 用户、用户组隔离限制
Docker架构
Docker Host
安装 Docker 的主机
Docker Daemon
运行在 Docker 主机上的 Docker 后台进程
Client
操作 Docker 主机的客户端(命令行、UI 等)
Registry
镜像仓库、Docker Hub
Images
镜像,带环境打包好的程序,可以直接启动运行
Containers
容器,由镜像启动起来正在运行中的程序
安装Docker
移除以前 docker 相关包
bash$ yum remove docker
配置 yum 源
bash$ yum install -y yum-utils $ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 docker
- docker-ce 服务器
- docker-ce-cli 命令行
- containerd.io 容器化运行环境
bash$ yum install -y docker-ce docker-ce-cli containerd.io
启动
bash$ systemctl start docker # 开启自启并立即启动 $ systemctl enable docker --now
配置加速
bash$ mkdir -p /etc/docker $ vim daemon.json { "registry-mirrors": ["https://ss0idbd1.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size":"200m" }, "storage-driver": "overlay2" } $ systemctl daemon-reload $ systemctl restart docker