利用docker打造基础的linux服务器完美代替虚拟机使用的解决方案
虚拟机一般比较耗资源,动辄几十G的大小,配置好的服务器也跑不了几台虚拟机。一般一台服务器跑30台虚拟机已经是极限了。
如果你只想拥有独立的IP,独立的运行环境(apt 软件包),并不需要独立的硬件配置(硬盘、内存)。此时可以考虑使用 docker 代替虚拟机。
比如需要搭建 dnsmasq 服务,提供内网 DNS 服务。正常情况下肯定需要分配几台虚拟机,安装 ubuntu ,然后安装 dns 服务。但如果使用 docker + macvlan,就可以在一台主机上“虚拟”出多个IP,并且每个 IP 都拥有完整的端口列表。比如每个 IP 的 UDP 53 端口都是独立的,相互不干扰。
所需命令:
$ docker network create \
-d macvlan \
--subnet=192.168.10.0/24 \
--gateway=192.1678.10.254 \
--opt parent=enp11s0f0 \
mymacvlan
$ docker run --privileged \
--ip 192.168.10.2 \
--network mymacvlan \
-d -it ubuntu:latest \
/bin/bash
在 docker 中一样可以安装软件,与虚拟机差别不大。每个容器拥有独立的IP和软件环境,对外提供服务相互不干扰。对于轻量级的应用完全可以放在 docker 中运行,后续备份迁移也方便。整个容器大小和虚拟机比小多了,装了各种软件也才600M左右。
最佳实践:
1. 准备一个基础镜像,运行容器并装好各种常用软件。
比如 vim、ifconfig、nfs 等等
docker pull ubuntu:latest
docker run -d -it ubuntu:latest /bin/bash
docker exec -it c065acb0c02f /bin/bash
root@c065acb0c02f:/#
apt-get install screen
apt-get install vim
apt-get install python3
apt-get install pip
apt-get install net-tools
apt-get install iptables
apt-get install isc-dhcp-client
apt-get install iputils-ping
apt-get install bind9-utils
apt-get install git
apt-get install nfs-common
2. 将容器导出
docker export -o ubuntu_base.tar c065acb0c02f
3. 在目标宿主机上装载镜像
docker import ubuntu_base.tar ubuntu:net
当需要创建虚拟环境时就可以使用 ubuntu:net 镜像运行容器。基础镜像提供了 vim、python、ping、ifconfig、iptables 等常规软件,可以当成一个精简版的 linux 系统来使用,大小只有600M左右。
全文完。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)