<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cloud-Init on 吾爱主机</title><link>https://blog.waihost.com/tags/cloud-init/</link><description>Recent content in Cloud-Init on 吾爱主机</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 27 Apr 2025 14:55:08 +0800</lastBuildDate><atom:link href="https://blog.waihost.com/tags/cloud-init/index.xml" rel="self" type="application/rss+xml"/><item><title>基于Cloud-Init的Proxmox VE虚拟机模板创建与Docker部署指南</title><link>https://blog.waihost.com/posts/proxmox-cloudinit-template-docker/</link><pubDate>Sun, 27 Apr 2025 14:55:08 +0800</pubDate><guid>https://blog.waihost.com/posts/proxmox-cloudinit-template-docker/</guid><description>&lt;img src="https://blog.waihost.com/images/covers/proxmox-cloudinit-template-docker.svg" alt="Featured image of post 基于Cloud-Init的Proxmox VE虚拟机模板创建与Docker部署指南" /&gt;&lt;hr&gt;
&lt;h3 id="基于cloud-init的proxmox-ve虚拟机模板创建与docker部署指南"&gt;&lt;a href="#%e5%9f%ba%e4%ba%8ecloud-init%e7%9a%84proxmox-ve%e8%99%9a%e6%8b%9f%e6%9c%ba%e6%a8%a1%e6%9d%bf%e5%88%9b%e5%bb%ba%e4%b8%8edocker%e9%83%a8%e7%bd%b2%e6%8c%87%e5%8d%97" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;基于Cloud-Init的Proxmox VE虚拟机模板创建与Docker部署指南&lt;/strong&gt;
&lt;/h3&gt;&lt;hr&gt;
&lt;h4 id="一准备工作"&gt;&lt;a href="#%e4%b8%80%e5%87%86%e5%a4%87%e5%b7%a5%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;一、准备工作&lt;/strong&gt;
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;下载Cloud Image镜像&lt;/strong&gt;&lt;br&gt;
Cloud Images是预装Cloud-Init的轻量级系统镜像，支持快速初始化配置（如网络、用户、SSH密钥等）。以Debian 12为例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;创建虚拟机&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在PVE中新建虚拟机（VM ID自选，例如900），&lt;strong&gt;不创建硬盘&lt;/strong&gt;，操作系统类型选择Linux，机型选择&lt;code&gt;i440fx&lt;/code&gt;或&lt;code&gt;q35&lt;/code&gt;均可。&lt;/li&gt;
&lt;li&gt;添加Cloud-Init设备：在虚拟机硬件设置中点击“添加”→“Cloud-Init设备”，选择存储位置（如&lt;code&gt;local-lvm&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;导入磁盘镜像&lt;/strong&gt;&lt;br&gt;
将下载的Cloud Image导入虚拟机：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qm importdisk 900 debian-12-generic-amd64.qcow2 local-lvm --format=qcow2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;完成后在虚拟机硬件中挂载该磁盘，总线类型选择&lt;code&gt;SCSI&lt;/code&gt;，并设置为首选启动项。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h4 id="二配置cloud-init"&gt;&lt;a href="#%e4%ba%8c%e9%85%8d%e7%bd%aecloud-init" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;二、配置Cloud-Init&lt;/strong&gt;
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;基础设置&lt;/strong&gt;&lt;br&gt;
在PVE的Cloud-Init配置界面填写以下信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用户&lt;/strong&gt;：默认用户（Debian为&lt;code&gt;debian&lt;/code&gt;，Ubuntu为&lt;code&gt;ubuntu&lt;/code&gt;），可自定义用户名（如&lt;code&gt;admin&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密码&lt;/strong&gt;：设置用户密码（建议设置，否则无法通过控制台登录）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSH公钥&lt;/strong&gt;：粘贴本地&lt;code&gt;~/.ssh/id_rsa.pub&lt;/code&gt;公钥内容，启用密钥登录。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP配置&lt;/strong&gt;：选择DHCP自动获取或静态IP（示例：&lt;code&gt;ip=192.168.1.100/24,gw=192.168.1.1&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNS&lt;/strong&gt;：设置域名服务器（如&lt;code&gt;8.8.8.8&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;防止配置重置&lt;/strong&gt;&lt;br&gt;
修改Cloud-Init默认行为，避免重启后&lt;code&gt;/etc/hosts&lt;/code&gt;和&lt;code&gt;/etc/resolv.conf&lt;/code&gt;被重置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sed -i &amp;#39;s/^update_etc_hosts/#update_etc_hosts/&amp;#39; /etc/cloud/cloud.cfg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rm /etc/resolv.conf &amp;amp;&amp;amp; sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h4 id="三系统初始化"&gt;&lt;a href="#%e4%b8%89%e7%b3%bb%e7%bb%9f%e5%88%9d%e5%a7%8b%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;三、系统初始化&lt;/strong&gt;
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;更新系统与工具安装&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;upgrade&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="n"&gt;curl&lt;/span&gt; &lt;span class="n"&gt;vim&lt;/span&gt; &lt;span class="n"&gt;net&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;guest&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;systemctl&lt;/span&gt; &lt;span class="n"&gt;enable&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt; &lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;guest&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;配置时区与语言&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo timedatectl set-timezone Asia/Shanghai
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo localectl set-locale LANG=en_US.UTF-8 # 避免中文乱码
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h4 id="四安装最新版docker"&gt;&lt;a href="#%e5%9b%9b%e5%ae%89%e8%a3%85%e6%9c%80%e6%96%b0%e7%89%88docker" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;四、安装最新版Docker&lt;/strong&gt;
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;使用官方脚本安装&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://get.docker.com -o get-docker.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sh get-docker.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;配置Docker服务与用户组&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl enable docker
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo usermod -aG docker &amp;amp;#36;USER # 当前用户加入docker组
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;newgrp docker # 立即生效（或重启）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;安装Docker Compose&lt;/strong&gt;&lt;br&gt;
下载最新稳定版（以v2.27.0为例）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;DOCKER_COMPOSE_VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;v2.27.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;L&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://github.com/docker/compose/releases/download/&amp;amp;#36;{DOCKER_COMPOSE_VERSION}/docker-compose-&amp;amp;#36;(uname -s)-&amp;amp;#36;(uname -m)&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;compose&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;chmod&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;compose&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;验证安装&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker --version # 输出Docker版本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker-compose --version # 输出Compose版本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run hello-world # 运行测试容器
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h4 id="五模板化与克隆"&gt;&lt;a href="#%e4%ba%94%e6%a8%a1%e6%9d%bf%e5%8c%96%e4%b8%8e%e5%85%8b%e9%9a%86" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;五、模板化与克隆&lt;/strong&gt;
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;清理临时文件&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt clean
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cloud-init clean
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关闭虚拟机并转换为模板&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在PVE界面中关闭虚拟机。&lt;/li&gt;
&lt;li&gt;右键虚拟机选择“转换为模板”。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;基于模板克隆新虚拟机&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;右键模板选择“克隆”，设置新VM ID及名称。&lt;/li&gt;
&lt;li&gt;启动克隆的虚拟机时，Cloud-Init会自动应用新配置（如新IP、主机名）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h4 id="六常见问题"&gt;&lt;a href="#%e5%85%ad%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;六、常见问题&lt;/strong&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;网络配置失效&lt;/strong&gt;：检查Cloud-Init的IP设置或手动修改&lt;code&gt;/etc/network/interfaces&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker权限问题&lt;/strong&gt;：确保用户已加入&lt;code&gt;docker&lt;/code&gt;组，执行&lt;code&gt;newgrp docker&lt;/code&gt;或重启系统。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;镜像扩容&lt;/strong&gt;：若需扩展磁盘，在PVE中调整磁盘大小后，在虚拟机内执行&lt;code&gt;sudo growpart /dev/sda 1 &amp;amp;&amp;amp; sudo resize2fs /dev/sda1&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</description></item></channel></rss>