【docker 总结】docker 简介和安装
一,前言
记得在 2018 年左右,互联网技术发生了比较大的变化:微服务、云原生、DevOps、CI/CD、企业中台、容器化、工程化、Severless、LowCode 等名词铺天盖地;随之而来的还有一系列新的语言和技术栈;
这些“新技术”的应用和普及,改变了互联网时代下的开发模式,极大程度提升了交付速度和开发体验;
。。。此处省略 100 字。。。
之后,会陆续介绍 DevOps 相关内容,包括:docker、k8s、CI/CD 等;
本篇,docker 简介和环境安装;
二,docker 简介
1,虚拟机
软件的运行需要环境,如 jdk;
无法保证环境的一致性,如:版本问题
为什么要保证环境的一致性?
最早使用虚拟机:在电脑中,虚拟了一个完全隔离的操作系统
模拟的是一整套操作系统:硬盘、内存、网卡等整套硬件都有
虚拟机的缺点:
资源占用多
冗余步骤多
启动速度慢
2,Linux 容器
Linux 容器:Linux Containers,缩写为 LXC
Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离
优点:
启动快
资源占用少
体积小 几兆
Docker
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。
它是目前最流行的 Linux 容器解决方案。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。
运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样
docker 和 KVM 虚拟机对比
启动速度
Docker 秒级启动
KVM 分钟级启动
轻量级 容器镜像通常以 M 为单位,虚拟机以 G 为单位,容器资源占用小,要比虚拟要部署更快速
容器共享宿主机内核,系统级虚拟化,占用资源少,容器性能基本接近物理机
虚拟机需要虚拟化一些设备,具有完整的 OS,虚拟机开销大,因而降低性能,没有容器性能好
安全性
由于共享宿主机内核,只是进程隔离,因此隔离性和稳定性不如虚拟机,容器具有一定权限访问宿主机内核,存在一下安全隐患
使用要求
KVM 基于硬件的完全虚拟化,需要硬件 CPU 虚拟化技术支持
容器共享宿主机内核,可运行在主机的 Linux 的发行版,不用考虑 CPU 是否支持虚拟化技术
docker 的应用场景
节省项目环境部署时间
单项目打包
整套项目打包
新开源技术
不同技术做的开源,需要安装配置环境,docker 开箱即用
环境一致性
持续集成
微服务
弹性伸缩
ECS,弹性计算云服务;根据使用量动态扩缩容,按需付费
Docker 体系结构
containerd:是一个守护进程,使用 runc 管理容器,向 Docker Engine 提供接口
shim:只负责管理一个容器
runC:是一个轻量级工具,只用来运行容器
通过 docker 客户端,为 docker Engine 引擎服务发送命令,
docker 引擎服务,管理镜像仓库
通过 docker Engine 拉取镜像,docker Engine 可以通过镜像生成/启动容器 containerd
containerd 容器内靠 shim 和 runC
三,docker 安装
1,Mac 安装
安装教程:
https://www.runoob.com/docker/macos-docker-install.html
安装前,查看版本信息
Mac 安装包:https://docs.docker.com/desktop/mac/install/
https://desktop.docker.com/mac/main/amd64/Docker.dmg
启动后查看版本:
镜像加速
使用网易镜像地址:http://hub-mirror.c.163.com
任务栏点击 Docker for mac 应用图标 -> Perferences... -> Daemon -> Registry mirrors
在列表中填写加速器地址,修改完成后,点击 Apply & Restart,重启 Docker 应用镜像地址配置 j
重启 docker 后,查看
client:给服务端下达命令
服务端将命令发送给 Docker daemon(daemon:后台,后端;Docker daemon 后台大管家;)
docker pull:从客户端发送指令到 Docker daemon,去 Registry 远程仓库,拉取对应的镜像到 Image 本地镜像仓库来
docker run:从客户端发送指令到 Docker daemon,去 Image 本地镜像找到对应的镜像,生成容器 Containers;
docker build:构建、编译,基于一个已有的镜像,创建一个新的镜像
docker run 通过镜像生成容器;
评论