Files
arm-flash-guide/armbian-docker.html
T

477 lines
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Armbian Docker安装与优化指南 - 换源/镜像加速/常用容器 | ARM刷机指南</title>
<meta name="description" content="Amlogic S9xxx设备Armbian系统Docker安装完整教程,包含国内源替换、Docker镜像加速、常用Docker容器部署、系统优化、青龙面板安装,基于S922X/OES实测。">
<meta name="keywords" content="Armbian,Docker安装,换源,镜像加速,S922X,青龙面板,国内源">
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<nav class="navbar">
<div class="navbar-inner">
<a href="index.html" class="logo">
<div class="logo-icon"></div>
ARM刷机指南
</a>
<ul class="nav-links">
<li><a href="index.html">首页</a></li>
<li><a href="oes-flash.html">OES刷机</a></li>
<li><a href="unbrick.html">救砖指南</a></li>
<li><a href="systems.html">系统对比</a></li>
<li><a href="armbian-docker.html" class="active">Armbian优化</a></li>
<li><a href="about.html">关于</a></li>
</ul>
</div>
</nav>
<div class="container-narrow">
<div class="tutorial-header">
<h1>🐧 Armbian Docker安装与优化指南</h1>
<div class="tutorial-meta">
<span>⏱️ 预计时间:30-60分钟</span>
<span class="difficulty medium">中等难度</span>
<span>📝 更新于 2026-09</span>
<span>✅ 实测验证</span>
</div>
</div>
<div class="tutorial-content">
<div class="alert alert-info">
<strong>💡 教程说明</strong>
本教程基于Amlogic S922X设备(OES/斐讯N1/玩客云等)+ Armbian 26.x 实测编写。Armbian是ARM设备上最流行的Linux发行版,刷好系统后第一件事就是换源和装Docker。
</div>
<h2>一、首次登录与基础设置</h2>
<h3>1.1 首次登录</h3>
<div class="code-block">
<span class="comment"># SSH连接(U盘启动时IP在路由器后台查看)</span>
ssh root@设备IP
<span class="comment"># 首次登录会要求设置root密码</span>
<span class="comment"># 然后会要求创建普通用户,按Ctrl+C可跳过</span>
</div>
<h3>1.2 确认设备型号</h3>
<p>刷机后不确定设备型号?用这个命令确认:</p>
<div class="code-block">
<span class="comment"># 查看设备树兼容信息</span>
hexdump -C /proc/device-tree/compatible | head -n 5
<span class="comment"># 输出示例:</span>
<span class="comment"># ali,ct2000 → OES 1代,DTB选 meson-g12b-ali-ct2000.dtb</span>
<span class="comment"># amlogic,s922x → S922X芯片</span>
<span class="comment"># 查看CPU信息</span>
cat /proc/cpuinfo | grep "model name" | head -1
<span class="comment"># 查看内存</span>
free -h
<span class="comment"># 查看存储</span>
lsblk
</div>
<h2>二、更换国内软件源(必做)</h2>
<p>Armbian默认源在国外,国内访问很慢。换成国内源后速度提升10倍以上。</p>
<h3>2.1 一键换源脚本</h3>
<div class="code-block">
cat > /root/change_source.sh &lt;&lt; 'EOF'
#!/bin/bash
echo "=== 开始更换Armbian国内源 ==="
<span class="comment"># 备份原源</span>
cp /etc/apt/sources.list /etc/apt/sources.list.bak
cp /etc/apt/sources.list.d/armbian.list /etc/apt/sources.list.d/armbian.list.bak
<span class="comment"># Debian源替换为阿里云(Debian 12 bookworm</span>
cat &gt; /etc/apt/sources.list &lt;&lt; 'DEB'
deb https://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.aliyun.com/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.aliyun.com/debian-security/ bookworm-security main contrib non-free non-free-firmware
DEB
<span class="comment"># Armbian源替换为中科大</span>
cat &gt; /etc/apt/sources.list.d/armbian.list &lt;&lt; 'ARM'
deb https://mirrors.ustc.edu.cn/armbian/ bookworm main contrib non-free
ARM
echo "=== 源替换完成,开始更新 ==="
apt update
apt upgrade -y
echo "=== 系统更新完成 ==="
EOF
chmod +x /root/change_source.sh
/root/change_source.sh
</div>
<div class="alert alert-info">
<strong>💡 其他可选源</strong>
<ul style="margin:8px 0;">
<li>Debian源:阿里云、清华TUNA、中科大USTC、163</li>
<li>Armbian源:中科大USTC(镜像最全)、清华TUNA</li>
<li>也可以用 <code>armbian-config</code> → Personal → Mirrors 图形化选择</li>
</ul>
</div>
<h3>2.2 安装基础工具</h3>
<div class="code-block">
apt install -y \
curl wget htop vim nano \
git net-tools dnsutils \
unzip zip p7zip-full \
apt-transport-https ca-certificates \
gnupg lsb-release \
python3 python3-pip
</div>
<h2>三、Docker安装</h2>
<h3>3.1 官方脚本安装(推荐)</h3>
<div class="code-block">
<span class="comment"># 下载安装脚本(用阿里云镜像加速)</span>
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
<span class="comment"># 启动Docker并设置开机自启</span>
systemctl enable docker
systemctl start docker
<span class="comment"># 验证安装</span>
docker --version
docker run --rm hello-world
</div>
<h3>3.2 安装Docker Compose</h3>
<div class="code-block">
<span class="comment"># 安装docker-compose插件</span>
apt install -y docker-compose-plugin
<span class="comment"># 验证</span>
docker compose version
</div>
<h3>3.3 配置Docker国内镜像加速(必做)</h3>
<div class="code-block">
mkdir -p /etc/docker
cat &gt; /etc/docker/daemon.json &lt;&lt; 'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://dockerproxy.com",
"https://docker.1panel.live",
"https://mirror.iscas.ac.cn"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
EOF
systemctl daemon-reload
systemctl restart docker
<span class="comment"># 验证镜像加速是否生效</span>
docker info | grep -A 5 "Registry Mirrors"
</div>
<div class="alert alert-warning">
<strong>⚠️ 注意</strong>
国内Docker镜像源可能不定期失效。如果拉取镜像超时,尝试更换daemon.json中的镜像地址,或配置代理。
</div>
<h2>四、常用Docker容器一键部署</h2>
<h3>4.1 PortainerDocker可视化管理)</h3>
<div class="code-block">
docker run -d \
--name portainer \
--restart=always \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
</div>
<p>访问 <code>http://设备IP:9000</code>,首次访问设置管理员密码。</p>
<h3>4.2 青龙面板(自动化脚本)</h3>
<div class="code-block">
docker run -dit \
--name qinglong \
--restart=always \
-p 5700:5700 \
-v /opt/qinglong/data:/ql/data \
whyour/qinglong:latest
</div>
<p>访问 <code>http://设备IP:5700</code>,默认账号admin,密码admin。青龙面板支持京东签到、各种自动化脚本。</p>
<h3>4.3 qBittorrentBT下载)</h3>
<div class="code-block">
docker run -d \
--name qbittorrent \
--restart=always \
-e PUID=0 -e PGID=0 \
-e TZ=Asia/Shanghai \
-e WEBUI_PORT=8085 \
-p 8085:8085 \
-p 6881:6881 -p 6881:6881/udp \
-v /opt/qbittorrent/config:/config \
-v /mnt/downloads:/downloads \
lscr.io/linuxserver/qbittorrent:latest
</div>
<h3>4.4 Alist(网盘聚合)</h3>
<div class="code-block">
docker run -d \
--name alist \
--restart=always \
-v /etc/alist:/opt/alist/data \
-p 5244:5244 \
-e PUID=0 -e PGID=0 \
-e UMASK=022 \
xhofe/alist:latest
</div>
<p>支持挂载百度网盘、阿里云盘、115、OneDrive、Google Drive等数十种网盘。</p>
<h3>4.5 AdGuard Home(广告过滤)</h3>
<div class="code-block">
docker run -d \
--name adguardhome \
--restart=always \
-v /opt/adguardhome/work:/opt/adguardhome/work \
-v /opt/adguardhome/conf:/opt/adguardhome/conf \
-p 3000:3000 -p 80:80 \
-p 53:53/tcp -p 53:53/udp \
adguard/adguardhome
</div>
<p>把路由器DNS设为设备IP,全家设备去广告。</p>
<h3>4.6 Uptime Kuma(服务监控)</h3>
<div class="code-block">
docker run -d \
--name uptime-kuma \
--restart=always \
-p 3001:3001 \
-v /opt/uptime-kuma:/app/data \
louislam/uptime-kuma:1
</div>
<p>监控网站/服务在线状态,宕机自动通知(支持Telegram、企业微信、邮件等)。</p>
<h2>五、docker-compose 部署示例</h2>
<p>多个容器建议用docker-compose统一管理:</p>
<div class="code-block">
mkdir -p /opt/stacks/media-server
cat &gt; /opt/stacks/media-server/docker-compose.yml &lt;&lt; 'EOF'
version: "3.8"
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
restart: always
environment:
- PUID=0
- PGID=0
- TZ=Asia/Shanghai
- WEBUI_PORT=8085
ports:
- "8085:8085"
- "6881:6881"
- "6881:6881/udp"
volumes:
- /opt/qbittorrent/config:/config
- /mnt/downloads:/downloads
alist:
image: xhofe/alist:latest
container_name: alist
restart: always
ports:
- "5244:5244"
volumes:
- /etc/alist:/opt/alist/data
volumes:
portainer_data:
EOF
<span class="comment"># 启动所有容器</span>
cd /opt/stacks/media-server
docker compose up -d
<span class="comment"># 查看状态</span>
docker compose ps
<span class="comment"># 查看日志</span>
docker compose logs -f
</div>
<h2>六、系统优化</h2>
<h3>6.1 时区设置</h3>
<div class="code-block">
timedatectl set-timezone Asia/Shanghai
date
</div>
<h3>6.2 中文语言支持</h3>
<div class="code-block">
apt install -y locales
sed -i 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=zh_CN.UTF-8
</div>
<h3>6.3 SWAP虚拟内存</h3>
<p>2GB内存设备建议加2GB SWAP</p>
<div class="code-block">
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' &gt;&gt; /etc/fstab
free -h
</div>
<h3>6.4 风扇控制(OES设备)</h3>
<div class="code-block">
<span class="comment"># 查看温度</span>
cat /sys/class/thermal/thermal_zone0/temp
<span class="comment"># 查看风扇状态</span>
cat /sys/class/hwmon/hwmon0/pwm1
<span class="comment"># 风扇全速(临时测试)</span>
echo 255 &gt; /sys/class/hwmon/hwmon0/pwm1
<span class="comment"># 风扇停止(临时测试)</span>
echo 0 &gt; /sys/class/hwmon/hwmon0/pwm1
</div>
<h3>6.5 定时清理Docker</h3>
<div class="code-block">
<span class="comment"># 创建清理脚本</span>
cat &gt; /usr/local/bin/docker-clean &lt;&lt; 'EOF'
#!/bin/bash
docker system prune -af --volumes
docker image prune -af
EOF
chmod +x /usr/local/bin/docker-clean
<span class="comment"># 每周日凌晨3点自动清理</span>
(crontab -l 2&gt;/dev/null; echo "0 3 * * 0 /usr/local/bin/docker-clean") | crontab -
</div>
<h2>七、常见问题</h2>
<h3>Q1: apt update 报错或很慢?</h3>
<p>A: 源没换成功。检查 <code>/etc/apt/sources.list</code><code>/etc/apt/sources.list.d/armbian.list</code> 是否正确替换为国内源。注意Debian版本(bookworm/bullseye)要对应。</p>
<h3>Q2: Docker拉取镜像超时?</h3>
<p>A: 配置国内镜像加速(见3.3节)。如果所有镜像源都失效,可以配置HTTP代理:</p>
<div class="code-block">
mkdir -p /etc/systemd/system/docker.service.d
cat &gt; /etc/systemd/system/docker.service.d/proxy.conf &lt;&lt; 'EOF'
[Service]
Environment="HTTP_PROXY=http://代理IP:端口"
Environment="HTTPS_PROXY=http://代理IP:端口"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
systemctl daemon-reload
systemctl restart docker
</div>
<h3>Q3: 容器启动后访问不了?</h3>
<p>A: 检查:
<ul>
<li>端口映射是否正确(-p 参数)</li>
<li>防火墙是否放行:<code>ufw status</code><code>iptables -L</code></li>
<li>容器是否正常运行:<code>docker ps -a</code></li>
<li>查看容器日志:<code>docker logs 容器名</code></li>
</ul>
</p>
<h3>Q4: 磁盘空间不足?</h3>
<p>A: Docker镜像和容器占用大量空间。执行 <code>docker system df</code> 查看占用,<code>docker system prune -a</code> 清理未使用的镜像。建议把Docker数据目录移到大硬盘:</p>
<div class="code-block">
<span class="comment"># 停止Docker</span>
systemctl stop docker
<span class="comment"># 迁移数据到/mnt/docker</span>
mv /var/lib/docker /mnt/docker
ln -s /mnt/docker /var/lib/docker
<span class="comment"># 重启</span>
systemctl start docker
</div>
<h3>Q5: Armbian怎么升级内核?</h3>
<p>A: 用armbian自带工具:</p>
<div class="code-block">
<span class="comment"># 查看当前内核</span>
uname -r
<span class="comment"># 升级内核(需要联网)</span>
armbian-update
<span class="comment"># 或用ophub的内核更新脚本</span>
curl -fsSL https://github.com/ophub/amlogic-s9xxx-armbian/raw/main/build-armbian/scripts/update.sh | bash
</div>
<h2>八、相关教程</h2>
<ul>
<li><a href="oes-flash.html">📱 OES刷机完整教程</a></li>
<li><a href="fnos-nas.html">📦 飞牛OS NAS搭建指南</a></li>
<li><a href="systems.html">💿 系统选择对比</a></li>
<li><a href="tv-box-flash.html">📺 常见机顶盒刷机合集</a></li>
<li>🔧 Armbian网络配置与WireGuard组网(待补充)</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer-inner">
<div>
<h4>⚡ ARM刷机指南</h4>
<p style="font-size:14px;line-height:1.8;">专注ARM开发板、机顶盒刷机教程,每篇教程经过实测验证。</p>
</div>
<div>
<h4>热门教程</h4>
<ul>
<li><a href="oes-flash.html">OES刷机教程</a></li>
<li><a href="armbian-docker.html">Armbian优化</a></li>
<li><a href="unbrick.html">救砖指南</a></li>
</ul>
</div>
<div>
<h4>关于</h4>
<ul>
<li><a href="about.html">关于我们</a></li>
<li><a href="#">免责声明</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>© 2026 ARM刷机指南 | 教程仅供学习交流,刷机有风险,操作需谨慎</p>
</div>
</footer>
</body>
</html>