Linux 基础教程:从零到进阶,成为最强管理员
由 linux.mba「Most Badass Admin」最强管理员社区撰写
第三部分:Linux 高级应用
第十一章: 容器化与虚拟化
11.1 Docker 基础与容器管理
什么是 Docker?
你有没有想过,如果每次安装一个新的服务(比如数据库、Web 服务器等),都得配置一堆环境、依赖,做起来复杂且容易出错?Docker 就是为了解决这个问题的。
Docker 是一个容器化平台,它通过容器技术将应用和它的依赖环境打包在一起,容器就像一个隔离的小“沙盒”,确保在任何地方运行都能一致。
Docker 的核心概念
- 容器:类似于虚拟机,但比虚拟机更轻量。容器不需要虚拟整个操作系统,它只是应用和依赖环境的一种封装。
- 镜像:是容器的模板,它定义了容器里运行的应用环境。镜像可以从 Docker Hub(一个公共的镜像仓库)下载,或者自己创建。
- Docker 引擎:是管理容器和镜像的工具,可以理解为“容器的管理器”。
安装 Docker
Ubuntu:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce -y
CentOS:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce -y
安装完成后启动 Docker:
sudo systemctl start docker
sudo systemctl enable docker
Docker 常用命令
- 查看 Docker 版本
docker --version
- 查看 Docker 运行状态
sudo systemctl status docker
- 拉取镜像
docker pull ubuntu
这会从 Docker Hub 拉取最新的 Ubuntu 镜像。镜像相当于一个“程序包”,你可以将它比作是操作系统的 ISO 文件。
- 查看本地镜像
docker images
运行一个容器
假设你刚拉取了 Ubuntu 镜像,你想运行一个容器。只需要这样简单的命令:
docker run -it ubuntu /bin/bash
-it
:这是两个选项,-i
让容器保持打开,-t
让容器分配一个伪终端。ubuntu
:指定运行的镜像。/bin/bash
:指定启动容器后要执行的命令,这里是打开 bash 命令行。
运行命令后,你会进入容器的命令行环境,你可以在里面执行任何命令。
停止和删除容器
- 查看正在运行的容器
docker ps
- 停止一个容器
docker stop <容器ID>
- 删除一个容器
docker rm <容器ID>
注意:删除容器前要先停止它。
11.2 创建与管理 Docker 容器
创建容器的步骤是什么?
- 拉取镜像:从 Docker Hub 上下载你需要的镜像(比如 Web 服务器 Nginx、数据库 MySQL 等)。
- 运行容器:根据你的需求运行容器,运行时可以指定端口映射、数据卷挂载等。
- 停止容器:通过
docker stop
命令停止运行中的容器。 - 删除容器:通过
docker rm
命令删除容器。
使用 Docker 创建 Web 服务器容器(以 Nginx 为例)
我们来一步步创建一个简单的 Web 服务器容器,运行 Nginx。
- 拉取 Nginx 镜像
docker pull nginx
- 运行 Nginx 容器
docker run -d -p 8080:80 --name mynginx nginx
解释:
-d
:让容器在后台运行。-p 8080:80
:将本地的 8080 端口映射到容器的 80 端口。--name mynginx
:给容器起个名字,方便以后管理。
此时,如果你在浏览器中访问 http://localhost:8080
,你会看到默认的 Nginx 欢迎页面。
- 查看容器状态
docker ps
- 停止并删除容器
docker stop mynginx
docker rm mynginx
11.3 Kubernetes 简介
什么是 Kubernetes?
在上面我们讲到的 Docker 里,每次创建一个容器都需要手动操作。这对于大规模的系统就不太适用了。如果你有成百上千的容器要管理,手动操作就很麻烦,这时 Kubernetes 就发挥作用了。
Kubernetes 是一个开源的容器编排平台,帮助你管理大量的容器,自动化地部署、扩展和管理应用程序。
Kubernetes 主要功能
- 自动部署和回滚:你只需要定义好容器的配置,Kubernetes 会自动将其部署到集群中。如果有问题,它还可以回滚到上一个正常状态。
- 负载均衡:Kubernetes 会根据需要,自动将请求分配到不同的容器上,确保系统的高可用性。
- 服务发现和集成:容器与容器之间的通信可以由 Kubernetes 自动配置,不需要你手动设置。
Kubernetes 的核心概念
- Pod:Kubernetes 的最小部署单元,一个 Pod 是一个或多个容器的集合,它们共享同一个网络和存储。
- Node:Kubernetes 集群中的一个工作节点,可以是物理机,也可以是虚拟机。每个 Node 上可以运行多个 Pod。
- Service:定义一个负载均衡器,允许不同的 Pod 之间进行通信。
11.4 虚拟化技术:使用 KVM 和 VirtualBox
什么是虚拟化?
虚拟化技术允许你在一台物理主机上运行多个虚拟机(VM),每个虚拟机都像是一个独立的计算机,拥有自己的操作系统、硬件资源和网络配置。这种技术对于服务器资源的优化利用、软件测试、开发环境的搭建非常有用。
KVM(Kernel-based Virtual Machine)
KVM 是 Linux 内核的一部分,是一种开源的虚拟化技术。通过 KVM,你可以在支持虚拟化的硬件上创建虚拟机,它提供了对 Linux 的完美支持,同时也支持其他操作系统如 Windows 和 BSD。
安装 KVM
在 Ubuntu 上安装 KVM:
sudo apt update
sudo apt install qemu-kvm libvirt-bin bridge-utils virt-manager -y
在 CentOS 上安装 KVM:
sudo yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install -y
安装完后,启动并启用 libvirtd 服务,这个服务是管理虚拟机的关键:
sudo systemctl start libvirtd
sudo systemctl enable libvirtd
创建虚拟机
你可以使用 virt-manager(图形界面)或者命令行工具 virt-install 来创建虚拟机。
使用 virt-install 创建虚拟机:
virt-install \
--name test-vm \
--vcpus 2 \
--memory 2048 \
--cdrom /path/to/iso/file.iso \
--disk path=/var/lib/libvirt/images/test-vm.qcow2,size=10 \
--os-type linux \
--os-variant ubuntu20.04 \
--network bridge=virbr0 \
--graphics vnc \
--noautoconsole
解释:
--name
:虚拟机名称。--vcpus
:虚拟机 CPU 数量。--memory
:虚拟机内存大小(单位:MB)。--cdrom
:安装镜像路径。--disk
:磁盘文件路径及大小。--os-type
:操作系统类型。--network bridge
:网络类型,bridge=virbr0
是一个默认的网络桥接模式。--graphics vnc
:使用 VNC 显示图形界面。
如果一切顺利,虚拟机会启动并开始安装操作系统。
管理虚拟机
- 查看虚拟机状态
sudo virsh list --all
- 启动虚拟机
sudo virsh start test-vm
- 停止虚拟机
sudo virsh shutdown test-vm
VirtualBox
VirtualBox 是由 Oracle 提供的一个免费的开源虚拟化软件,适用于多种操作系统。它不依赖于硬件虚拟化支持,所以即使是普通的计算机,也能运行 VirtualBox。
安装 VirtualBox
在 Ubuntu 上安装 VirtualBox:
sudo apt update
sudo apt install virtualbox -y
在 CentOS 上安装 VirtualBox:
sudo yum install https://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox-6.1-6.1.20_143896_el7-1.x86_64.rpm
安装完成后,启动 VirtualBox 图形界面即可创建虚拟机。
创建虚拟机
- 打开 VirtualBox,点击 “新建” 按钮,选择操作系统类型和版本。
- 设置虚拟机的内存大小、硬盘大小等。
- 安装操作系统:你可以选择安装镜像或从已有的虚拟机镜像启动。
使用 VirtualBox 启动、停止虚拟机
- 启动虚拟机:
VBoxManage startvm "test-vm" --type headless
- 停止虚拟机:
VBoxManage controlvm "test-vm" poweroff
- 查看虚拟机状态:
VBoxManage list runningvms
虚拟机管理工具
VirtualBox 还提供了很多命令行工具(如 VBoxManage
)来管理虚拟机,设置网络、存储等配置。
KVM 和 VirtualBox 的区别
特性 | KVM (Kernel-based Virtual Machine) | VirtualBox |
---|---|---|
类型 | 基于 Linux 内核 | 独立的虚拟化软件 |
支持平台 | 仅支持 Linux 和一些开源操作系统 | Windows、Linux、Mac |
性能 | 性能较高,适合生产环境 | 适合开发和测试环境 |
管理方式 | 命令行或使用 virt-manager | 图形界面和命令行 |
硬件要求 | 需要支持虚拟化的硬件 | 无需硬件虚拟化支持 |
使用难度 | 高,适合生产环境 | 低,适合个人和开发者 |
总结
- Docker:适用于快速部署、轻量化的应用。适合在同一台机器上运行多个应用或服务,避免环境依赖问题。
- KVM:适合大规模的虚拟化,可以在物理服务器上虚拟出多个虚拟机。
- VirtualBox:适合个人开发和测试环境,简单易用,适合虚拟化小规模的环境。