Linux进阶之容器与虚拟化
Linux 提供强大的容器和虚拟化技术,用于高效地部署和管理应用。容器技术如 Docker 提供了轻量级虚拟化,而 KVM 和 Vagrant 则支持完整的虚拟机环境。
本章将详细讲解 Docker 容器基础、KVM 虚拟机管理,以及使用 Vagrant 进行自动化虚拟机创建。
一、Docker 与容器基础
1、Docker 简介
Docker 是一种基于容器的虚拟化技术,它允许在一个主机上运行多个隔离的应用。
特点:
- 轻量级:与传统虚拟机相比,容器使用更少的资源。
- 快速启动:容器的启动速度通常在秒级。
- 可移植:通过容器镜像实现一致的运行环境。
2、安装 Docker
在 Ubuntu 上安装
sudo apt update
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
验证安装
docker --version
3、创建与管理 Docker 容器
拉取镜像
从 Docker 官方镜像仓库拉取镜像:
docker pull ubuntu:latest
运行容器
使用镜像启动一个交互式容器:
docker run -it ubuntu:latest /bin/bash
列出容器
查看运行中的容器:
docker ps
查看所有容器(包括停止的):
docker ps -a
停止容器
docker stop <container_id>
删除容器
docker rm <container_id>
示例
创建并运行一个简单的容器:
docker run -d -p 8080:80 nginx
说明:
-d
:后台运行容器。-p
:映射主机端口到容器端口。
运行后,可通过访问 http://localhost:8080
测试 Nginx 服务。
二、KVM 与虚拟机管理
1、KVM 简介
KVM(Kernel-based Virtual Machine)是 Linux 内核的一个模块,用于提供完整的虚拟化功能。
2、安装 KVM 和管理工具
安装 KVM
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
验证安装
检查是否支持 KVM:
egrep -c '(vmx|svm)' /proc/cpuinfo
安装管理工具
- 命令行管理工具:
virsh
- 图形化管理工具:
virt-manager
sudo apt install virt-manager
3、管理虚拟机
创建虚拟机
使用 virt-manager
创建虚拟机,步骤包括:
- 打开
virt-manager
图形界面。 - 选择创建新虚拟机。
- 指定 ISO 文件作为安装源。
- 配置 CPU、内存、磁盘等资源。
命令行管理
创建虚拟机:
virt-install --name test-vm --ram 2048 --vcpus 2 \
--disk path=/var/lib/libvirt/images/test-vm.qcow2,size=20 \
--cdrom /path/to/iso
启动虚拟机:
virsh start test-vm
查看虚拟机状态:
virsh list --all
三、使用 Vagrant 进行自动化虚拟机创建
1、Vagrant 简介
Vagrant 是一个虚拟机管理工具,专注于提供开发环境的一致性和易用性。
特点:
- 自动化:通过
Vagrantfile
定义虚拟机环境。 - 跨平台:支持 VirtualBox、KVM 等虚拟化技术。
2、安装 Vagrant
在 Ubuntu 上安装
sudo apt install vagrant
验证安装
vagrant --version
3、创建 Vagrant 环境
初始化项目
vagrant init ubuntu/bionic64
启动虚拟机
vagrant up
连接虚拟机
vagrant ssh
停止虚拟机
vagrant halt
销毁虚拟机
vagrant destroy
4、示例 Vagrantfile
以下是一个简单的 Vagrantfile
配置示例:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
end
end
说明:
config.vm.box
:指定基础镜像。config.vm.network
:配置端口转发。vb.memory
:设置虚拟机内存大小。
四、小结
通过本章学习,你掌握了以下内容:
-
Docker 容器基础:
- 使用 Docker 拉取镜像、运行和管理容器。
-
KVM 虚拟机管理:
- 使用
virsh
和virt-manager
创建和管理虚拟机。
- 使用
-
Vagrant 自动化虚拟机创建:
- 定义虚拟机环境并自动化部署。
容器和虚拟化技术的结合,能满足不同场景下的资源隔离需求,为开发与运维工作提供灵活可靠的支持。