<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>容器管理 on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/%E5%AE%B9%E5%99%A8%E7%AE%A1%E7%90%86/</link><description>Recent content in 容器管理 on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 15 Mar 2023 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/%E5%AE%B9%E5%99%A8%E7%AE%A1%E7%90%86/index.xml" rel="self" type="application/rss+xml"/><item><title>Portainer 容器可视化管理：单 Docker 与集群一站搞定</title><link>https://liangweidonggood.github.io/p/portainer-rong-qi-ke-shi-hua-guan-li/</link><pubDate>Wed, 15 Mar 2023 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/portainer-rong-qi-ke-shi-hua-guan-li/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/portainer-rong-qi-ke-shi-hua-guan-li/image/cover.jpg" alt="Featured image of post Portainer 容器可视化管理：单 Docker 与集群一站搞定" /&gt;&lt;p&gt;命令行的 &lt;code&gt;docker ps&lt;/code&gt;、&lt;code&gt;docker logs&lt;/code&gt; 用得再熟，新人 onboard 时一句&amp;quot;这容器跑哪了&amp;quot;还是能把人问住。Portainer 就是一个&amp;quot;看得见的 Docker 管理面板&amp;quot;——容器、镜像、网络、存储卷、用户、权限，一站式在 Web 界面操作，&lt;strong&gt;特别适合给非运维同学用&lt;/strong&gt;。这篇文章讲清楚容器化部署、Socket 挂载、初始账号、单 Docker / 集群模式选择。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;阅读对象&lt;/strong&gt;：想给团队/客户提供一个&amp;quot;点开就能用&amp;quot;的 Docker 管理界面的同学&lt;br&gt;
&lt;strong&gt;覆盖范围&lt;/strong&gt;：Portainer CE 容器化部署、Docker Socket 挂载、初始账号、单 Docker 模式 / Swarm 模式 / K8s 模式差异&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="一为什么是-portainer"&gt;一、为什么是 Portainer
&lt;/h2&gt;&lt;p&gt;容器管理工具不少，但定位不同：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;工具&lt;/th&gt;
					&lt;th&gt;定位&lt;/th&gt;
					&lt;th&gt;适用场景&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Portainer CE&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;通用、轻量、社区版&lt;/td&gt;
					&lt;td&gt;单 Docker / 小团队 / 给非运维用&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Rancher&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;重量级、企业 K8s 管理&lt;/td&gt;
					&lt;td&gt;多 K8s 集群管理（已转型到 Rancher Prime）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Docker Desktop&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;本地开发&lt;/td&gt;
					&lt;td&gt;macOS / Windows 上单机使用&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Lazydocker&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;TUI&lt;/td&gt;
					&lt;td&gt;命令行党、SSH 远程&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Cockpit + podman&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;系统管理&lt;/td&gt;
					&lt;td&gt;RHEL 系&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Portainer 的&amp;quot;杀手锏&amp;quot;是&lt;strong&gt;零学习成本&lt;/strong&gt;——只要能开浏览器就能用 docker，比着文档点点鼠标就能拉镜像、起容器、看日志。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;When to use&lt;/strong&gt;：当你的团队里有人不熟 docker 命令行，或者要给客户演示/验收容器部署，Portainer 几乎是不二之选。如果只是个人开发用，且只需要起一两个容器，Portainer 会&amp;quot;杀鸡用牛刀&amp;quot;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二容器化部署"&gt;二、容器化部署
&lt;/h2&gt;&lt;h3 id="21-单-docker-模式最常见"&gt;2.1 单 Docker 模式（最常见）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --restart&lt;span class="o"&gt;=&lt;/span&gt;unless-stopped &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name portainer &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 9900:9000 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /var/run/docker.sock:/var/run/docker.sock &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /home/docker/portainer/data:/data &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; portainer/portainer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;挂载说明：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;挂载点&lt;/th&gt;
					&lt;th&gt;作用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;/var/run/docker.sock:/var/run/docker.sock&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;接管宿主机 Docker Daemon，让 Portainer 能 list/start/stop 容器&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;/home/docker/portainer/data:/data&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Portainer 自己的数据（账号、配置、堆栈）持久化&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;访问 &lt;code&gt;http://{{HOST}}:9900&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;首次进入会要求设置 &lt;code&gt;admin&lt;/code&gt; 账号（不是默认账号！）&lt;/li&gt;
&lt;li&gt;然后选择 &amp;ldquo;Get started&amp;rdquo; / &amp;ldquo;Local&amp;rdquo; 进入单 Docker 模式&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-初始账号"&gt;2.2 初始账号
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;重要&lt;/strong&gt;：新版本 Portainer &lt;strong&gt;不再有默认账号&lt;/strong&gt;，首次启动强制让你创建 admin 账号（最少 12 位密码）。网上很多老教程说&amp;quot;admin/admin123456789&amp;quot;那是过期文档。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="23-community-edition-vs-business-edition"&gt;2.3 Community Edition vs Business Edition
&lt;/h3&gt;&lt;p&gt;Portainer 有两个版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CE（Community Edition）&lt;/strong&gt;：免费，单一环境（单 Docker / 单 Swarm / 单 K8s），基础 RBAC&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BE（Business Edition）&lt;/strong&gt;：商业授权，多环境管理、LDAP/AD 集成、细粒度 RBAC、合规审计&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;绝大多数中小团队用 CE 足够&lt;/strong&gt;。如果企业有合规、审计、SSO 需求，再考虑 BE。&lt;/p&gt;
&lt;h2 id="三核心功能"&gt;三、核心功能
&lt;/h2&gt;&lt;p&gt;进入 Portainer 后，左侧导航是核心功能区：&lt;/p&gt;
&lt;h3 id="31-stackscompose-一键部署"&gt;3.1 Stacks（Compose 一键部署）
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Stacks → Add stack&lt;/code&gt;，把 &lt;code&gt;docker-compose.yml&lt;/code&gt; 内容贴进去（支持 Git 仓库、Web editor、Upload），点 &lt;code&gt;Deploy&lt;/code&gt; 就能拉起一整套服务。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;redis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;redis:7-alpine&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;always&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="m"&gt;6379&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6379&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;postgres&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;postgres:15-alpine&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;always&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;{{REDACTED}}&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;pgdata:/var/lib/postgresql/data&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pgdata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;变量插值&lt;/strong&gt;：Portainer 支持 &lt;code&gt;{{VAR}}&lt;/code&gt; 占位符，在 Stack 部署时填入。&lt;strong&gt;不要&lt;/strong&gt;把明文密码写进 yaml 文件，用环境变量注入。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="32-containers--images--volumes--networks"&gt;3.2 Containers / Images / Volumes / Networks
&lt;/h3&gt;&lt;p&gt;点进去就能 list、inspect、start、stop、kill、remove、exec。&lt;code&gt;Container logs&lt;/code&gt; 还支持 &lt;code&gt;tail -f&lt;/code&gt; 实时跟随——比 SSH 进去 &lt;code&gt;docker logs -f&lt;/code&gt; 还方便。&lt;/p&gt;
&lt;h3 id="33-swarm-模式多节点"&gt;3.3 Swarm 模式（多节点）
&lt;/h3&gt;&lt;p&gt;如果宿主机是 Docker Swarm 集群，Portainer 能识别并显示所有 worker 节点，统一管理。前提是 Swarm 集群已经初始化：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker swarm init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;集群里其它节点执行 &lt;code&gt;docker swarm join --token ...&lt;/code&gt; 加入后，Portainer 自动发现。&lt;/p&gt;
&lt;h3 id="34-k8s-模式"&gt;3.4 K8s 模式
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Add Environment → Kubernetes&lt;/code&gt;，填 kubeconfig 或者 service account，就能把 Portainer 接到 K8s 集群。但 K8s 模式功能比 CE 版还基础（命名空间、Deployment、Service、Pod 管理），&lt;strong&gt;复杂场景推荐用 Rancher / Lens / Octant&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="四生产环境建议"&gt;四、生产环境建议
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;不要把 Portainer 暴露到公网&lt;/strong&gt;——9000 端口直接对外是&amp;quot;裸奔&amp;quot;，&lt;code&gt;docker.sock&lt;/code&gt; 挂载意味着谁拿到 Portainer 就能控制宿主机所有容器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用 Nginx / Caddy 反向代理&lt;/strong&gt;——加 HTTPS、加 basic auth、加 IP 白名单&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;管理员账号&lt;/strong&gt;——设置复杂的 12+ 位密码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据备份&lt;/strong&gt;——&lt;code&gt;/home/docker/portainer/data&lt;/code&gt; 整个目录定期 &lt;code&gt;tar&lt;/code&gt; 备份&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;升级&lt;/strong&gt;——&lt;code&gt;docker pull portainer/portainer &amp;amp;&amp;amp; docker restart portainer&lt;/code&gt;，但要看 release notes 注意破坏性变更&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="五踩坑清单"&gt;五、踩坑清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;看不到容器&lt;/strong&gt;——&lt;code&gt;/var/run/docker.sock&lt;/code&gt; 没挂载，Portainer 只是空壳。检查挂载路径&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stacks 部署失败不报错&lt;/strong&gt;——看 &lt;code&gt;Events&lt;/code&gt; 标签页，docker daemon 的报错会写在那里&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Container 控制台中文乱码&lt;/strong&gt;——容器本身的 locale 问题，进 &lt;code&gt;Exec&lt;/code&gt; 之前先 &lt;code&gt;export LANG=C.UTF-8&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image 拉取超时&lt;/strong&gt;——Portainer 不会自动用 daemon.json 里的 mirror，但 docker daemon 会（继承宿主配置），所以本质上不影响&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多用户场景&lt;/strong&gt;——CE 版的 RBAC 很基础（只支持 owner / administrator / operator / viewer 四种角色），复杂权限需要 BE&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六2024-视角补充"&gt;六、2024+ 视角补充
&lt;/h2&gt;&lt;p&gt;本文写于 2023-03，2024-2026 期间 Portainer 有几个显著演进：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Portainer CE 2.20+（2024 主流版本）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Edge Agent 模式强化&lt;/strong&gt;：分布式 IoT / 多机房场景下，Edge Agent 可以主动连中心 Portainer（出站 NAT 友好）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitOps 集成&lt;/strong&gt;：Stack 支持从 Git 仓库自动同步（Git pull = 自动 deploy），&lt;strong&gt;2024 起成为 CE 版的内置能力&lt;/strong&gt;（之前是 BE 专属）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RBAC 增强&lt;/strong&gt;：CE 版 RBAC 从 4 个角色（owner / administrator / operator / viewer）扩展到可自定义团队 + 资源访问控制（Namespace 级 / Stack 级 / Container 级）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;K8s 体验大幅提升&lt;/strong&gt;：之前 CE 版 K8s 模式功能很基础，2.20+ 加入 Helm chart 部署、ConfigMap / Secret 管理、Ingress 编辑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Container Management 之外的扩展&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Homepage / Dashboard 定制&lt;/strong&gt;：每个用户可设自己的首页（&amp;ldquo;我关心的容器&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;通知集成扩展&lt;/strong&gt;：Slack / Microsoft Teams / Email / webhook / &lt;strong&gt;PagerDuty&lt;/strong&gt; / &lt;strong&gt;Opsgenie&lt;/strong&gt;——alert rule 可直接推 oncall&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;审计日志&lt;/strong&gt;：CE 2.21+ 内置审计日志（之前是 BE 专属），合规场景可用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;备份 / 恢复&lt;/strong&gt;：Stack 级别的&amp;quot;Export / Import&amp;quot;——开发→测试→生产用同一份 stack 配置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Portainer 替代品（2024 视野）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rancher Prime&lt;/strong&gt;（2024 改名，原 Rancher）：SUSE 把 Rancher 商业化转型，企业 K8s 多集群管理首选&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lens&lt;/strong&gt;：IDE 风格的 K8s 管理工具，免费，桌面应用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenLens&lt;/strong&gt;：Lens 6 后部分闭源，OpenLens 是 fork 继续开源&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Headlamp&lt;/strong&gt;：Kubernetes 官方推荐的 Web UI（取代老旧的 Dashboard）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LazyDocker&lt;/strong&gt;：终端党 2024 仍活跃&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CasaOS / Cosmos&lt;/strong&gt;：家用 NAS / 小团队 2024+ 更推荐（Portainer 偏运维，CasaOS 偏普通人）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;安全更新&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Portainer 2024 年修复过几个&lt;strong&gt;严重 RCE&lt;/strong&gt;（CVE-2024-21xxx），&lt;strong&gt;必须升 2.20.3+&lt;/strong&gt; 才是安全版本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker socket 挂载是核心风险&lt;/strong&gt;：2024 起官方推荐用 &lt;strong&gt;Docker Socket Proxy&lt;/strong&gt;（tecnativa/docker-socket-proxy）做&amp;quot;最小权限代理&amp;quot;，避免 Portainer 一旦被攻破就拿整个宿主机&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2FA 强制开启&lt;/strong&gt;：CE 2.18+ 强制所有 admin 必须配 2FA（之前是可选）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;实战用法变化（2024 视角）&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;+ Diun&lt;/strong&gt; 自动检测镜像更新 → Portainer 推送通知&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;+ Watchtower&lt;/strong&gt; 自动升级非关键容器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;+ Traefik / Caddy&lt;/strong&gt; 自动 HTTPS 终结（Portainer 仍主攻容器编排，HTTPS 让专门的反向代理做）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;+ Headlamp&lt;/strong&gt; 管理 K8s 集群（Portainer 主攻 Docker，K8s 用专门工具）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;经验法则更新&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Docker 单机 / 小团队&lt;/strong&gt; → &lt;strong&gt;Portainer CE 2.20+&lt;/strong&gt; 仍是 2024+ 首选&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;K8s 集群&lt;/strong&gt; → 优先 &lt;strong&gt;Rancher Prime&lt;/strong&gt; / &lt;strong&gt;Lens&lt;/strong&gt; / &lt;strong&gt;Headlamp&lt;/strong&gt;，Portainer K8s 模式为辅&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;家用 / 个人&lt;/strong&gt; → CasaOS 更轻量更易用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大企业 / 合规&lt;/strong&gt; → Portainer BE 仍是合规审计好选择&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="七参考资料"&gt;七、参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Portainer 官方文档：https://docs.portainer.io/&lt;/li&gt;
&lt;li&gt;社区版 vs 商业版：https://www.portainer.io/products&lt;/li&gt;
&lt;li&gt;Docker Compose 规范：https://docs.docker.com/compose/compose-file/&lt;/li&gt;
&lt;li&gt;Portainer 安全公告：https://github.com/portainer/portainer/security/advisories&lt;/li&gt;
&lt;li&gt;Docker Socket Proxy：&lt;a class="link" href="https://github.com/tecnativa/docker-socket-proxy" target="_blank" rel="noopener"
 &gt;github.com/tecnativa/docker-socket-proxy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Headlamp K8s UI：&lt;a class="link" href="https://headlamp.io/" target="_blank" rel="noopener"
 &gt;headlamp.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="下一步"&gt;下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;想管 K8s 集群？→ 看 &lt;a class="link" href="https://liangweidonggood.github.io/p/prometheus-jian-kong-gao-jing-ti-xi/" &gt;Prometheus 监控告警体系&lt;/a&gt; 一文&lt;/li&gt;
&lt;li&gt;一站式监控+告警？→ &lt;a class="link" href="https://liangweidonggood.github.io/p/hertzbeat-qing-liang-jian-kong-gao-jing/" &gt;HertzBeat 轻量监控告警&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;想用 PaaS？→ &lt;a class="link" href="https://liangweidonggood.github.io/p/erda-yun-yuan-sheng-paas/" &gt;Erda 云原生 PaaS&lt;/a&gt; 一文&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>