文章内容参考了《Docker容器实战:原理、架构与应用》。
虚拟化技术分类
- 硬件级虚拟化:运行在硬件之上的虚拟化,其需要模拟一个完整的操作系统,管理软件是hypervisor。也即Hyper-V的虚拟化技术,VMware和阿里云ECS均采用这种技术。
- 操作系统级虚拟化:运行在操作系统之上,其模拟运行在操作系统上的多个不同进程,将这些进程封装在密闭的容器里面,也即容器化技术。例如Docker。
tips: 第一个操作系统级的虚拟化技术chroot
系统调用,其会改变运行进程的工作目录。
云计算服务模式
- 基础设施即服务(IaaS):在云端为用户提供基础设施,如虚拟机,服务器,存储等。
- 平台即服务(PaaS):在云端为用户提供可执行环境、数据库、网站服务器和开发工具等。
- 软件即服务(SaaS):在云端为用户提供软件,如邮件系统、在线协作等。
- 容器即服务(CaaS):用容器代替虚拟机,是虚拟云主机的升级版,容器更加轻量级,在资源利用率和性能方面都比IaaS高。
VM vs Docker
- VM:服务器—>宿主操作系统
--->Hyper-V--->虚拟机操作系统--->
运行时库—>应用 - Docker:服务器—>宿主操作系统
--->Docker Engine--->
运行时库—>应用
tips:容器本身是相互隔离的,但没有包含操作系统,而是共用了宿主机的操作系统和运行时库。
Linux小知识
- 更新内核,升级至最新版本
cat /etc/issue # 查看当前系统版本 uname -a # 可查看当前内核 sudo do-release-upgrade -d # 升级至最新版本
- 查看当前磁盘容量
df -h
- 网络配置
# 旧版本在/etc/network/interfaces # 新版本在/etc/netplan network: ethernets: ens3: addresses: [] dhcp4: true optional: true nameservers: addresses: [114.114.114.114,8.8.8.8] version: 2
- SSH免密登陆
生成公钥和私钥, 将公钥上传至目标机器并加入信任列表。# 在/etc/ssh/sshd_config PasswordAuthentication yes PermitRootLogin yes
ssh-keygen -t rsa # 生成密钥对 scp .\.ssh\id_rsa.pub tank@172.18.18.45:/home/tank # 上传至目标机器 cat id_rsa.pub >> .ssh/authorized_keys # 加入信任列表
- 删除多余内核
dpkg --get-selections|grep linux # 之后使用apt remove XXX
- 更换镜像源
vim /etc/apt/sources.list
安装Docker
以下内容参考了:https://docs.docker.com/engine/install/ubuntu/.
- 删除旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
- Update the apt package index and install packages to allow apt to use a repository over HTTPS:
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release
- 添加官方GPG key,即访问docker源的公钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 构建stable仓库
echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装最新版本docker engine
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
- 运行实例
sudo docker run hello-world
- 删除
sudo apt-get purge docker-ce docker-ce-cli containerd.io sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
tips:安装指定版本或者更新参见官方指导。