站点图标 ITGeeker技术奇客

Esxi 8使用Photon OS OVA一分钟快速搭建Docker容器运行环境 从此一个虚拟机只运行一个Docker实例

如果你拥有HomeLAB家用服务器之后,相信大家都会有一种想法:什么都要自建一个,音乐,网盘,下载服务,电子书,影视等等。不整个20-30个虚拟机心难安, 也对不住20%的CPU的使用率。

部分自建服务

  1. iKuai
  2. OpenWRT
  3. CalibreWeb
  4. Jellyfin
  5. Emby
  6. tinyMediaManager
  7. transmission
  8. nextcloud
  9. navidrome
  10. gitlab
  11. Pi-hole
  12. HomeAssistant
  13. PhotoPrism
  14. volumio
  15. NGinx
  16. Postgresql
  17. mariadb
  18. Odoo
  19. qBittorrent
  20. rsync
  21. homepage
  22. glance
  23. ……

而使用Docker容易部署是一个非常便捷的选择。选择一个虚拟机运行一个Docker实例还是多个,相信每个人都有不同的选择,也各有优劣。

如果你已经使用Esxi平台,而且Docker容器部署足够简单快速,并且是经过Esxi优化的环境,那么选择一个虚拟机只运行一个Docker,或者只把紧密相关联的容器运行在一个虚拟机上,可能会给你的管理带来更大的灵活和便利。

部分优点

  1. 资源分配(内存,CPU, 硬盘空间)可以更有针对性
  2. IP地址、网关和DNS可随意自定义
  3. 快照操作不再影响其他Docker容器
  4. 备份与恢复独立隔离,更加清晰
  5. 有效避免端口冲突和恐慌

要获得这个优势,能便利和快速创建虚拟机是一个先决条件

by 技术奇客ITGeeker.net

在使用Photon OS之前,一直使用Ubuntu mini来创建虚拟机,然后安装Docker,再部署容器,过程也不复杂,但还是需要不少配置的。如果你使用了Photon OVA模式来创建Esxi虚拟机之后,你会发现原来过程可以如此简单。

什么是Photon OS

Project Photon OS™是开源的,最小的Linux容器主机,Photon OS是一个免费的开源Linux操作系统,A Linux Container-Optimized Operating System,针对云原生应用程序,Sphere和云计算平台(例如Amazon Elastic Compute和Google Compute Engine)和VMware基础架构进行了优化。

针对VMwarevSphere®进行了优化:当Photon OS在vSphere上运行时,Linux内核已针对性能进行了调整。
对容器的支持: Photon OS包括Docker守护程序,并与容器编排框架(例如Mesos和Kubernetes)一起使用。

在Esxi的虚拟机上运行Docker可能会让有些人担心性能问题,毕竟是在虚拟机上。从Photon OS介绍来看,它是对VMwareSphere,包括Esxi做过优化的,应该是Esxi上运行Docker的最优系统选择之一吧。具体哪些优化未做深究,暂且相信VMware不会坑自己的系统吧(Photon OS是VMware自己推出的)

Photon OS esxi虚拟机创建过程

如果选择OVA with virtual hardware v15 (Supports both BIOS and UEFI boot, default is UEFI)版本,只有308M的体积。可在其官方下载:

https://github.com/vmware/photon/wiki/Downloading-Photon-OS

再点几下“下一页”,即会进入Photon OS的启动界面

默认用户名root,密码:changeme 登录后再次输入changeme, 再输入新设的密码,虚拟机就创建成功。

找个软件SSH登录虚拟机,运行

systemctl start docker
systemctl enable docker
# 到这里就可以使用Docker了,测试一下
docker run hello-world

如果要使用docker-compose

tdnf install docker-compose -y
# 或者
yum install docker-compose -y

就这么简便。

相关优化

更新系统

tdnf update -y

自定义IP地址等

cat > /etc/systemd/network/99-dhcp-en.network << "EOF"
[Match]
Name=e*

[Network]
DHCP=no
IPv6AcceptRA=no
Address=188.188.88.8/24
Gateway=188.188.88.1
DNS=8.8.8.8

[DHCPv4]
SendRelease=no
EOF

reboot一下

更改主机名称

hostnamectl set-hostname YourName
退出移动版