部署与加速¶
Docker 代理、镜像加速、daemon 配置与常用服务的一键部署命令。
-
代理与加速
系统级 / 构建时代理、registry-mirrors
-
buildx
跨平台构建多架构镜像
-
daemon.json
data-root / live-restore / runtime
-
常用服务
FileBrowser / MySQL / Jenkins / Aria2 …
🚀 代理与镜像加速¶
HTTP_PROXY · build-arg · registry-mirrors · entrypoint。系统级、构建时代理与镜像加速。
系统级代理(dockerd 走代理)¶
[Service]
Environment="HTTP_PROXY=http://xl.hoao.fun:7890"
Environment="HTTPS_PROXY=http://xl.hoao.fun:7890"
代理地址
上面是个人代理 xl.hoao.fun:7890,换成自己的即可(通用占位 proxy.example.com:7890)。
构建时代理(build-arg)¶
docker build -t app \
--build-arg http_proxy=http://xl.hoao.fun:7890 \
--build-arg https_proxy=http://xl.hoao.fun:7890 .
镜像加速(阿里云个人镜像)¶
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://p3nm1lt0.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload && systemctl restart docker
镜像入口脚本(entrypoint)¶
开启 IP 转发后执行传入命令:
#!/bin/sh
set -e
# enable IP forwarding
sysctl -w net.ipv4.ip_forward=1
# $0 表示脚本名称,$1 和 $2 表示第一个、第二个参数,$@ 表示所有位置参数
exec "$@"
对应 Dockerfile:ENTRYPOINT ["/entrypoint.sh"]。
🧱 buildx 跨平台构建¶
# 创建 buildx 环境
docker buildx create --name=buildx --driver=docker-container
# 启动 buildx 环境
docker buildx inspect --bootstrap buildx
# 切换到 buildx 环境
docker buildx use buildx
# 构建并推送多平台镜像(arm64 + amd64)
docker buildx build --platform linux/arm64,linux/amd64 \
-t hub.docker.com/username/app:v0.0.1 . --push
# 停止 / 删除 buildx 环境
docker buildx stop buildx
docker buildx rm buildx
⚙️ daemon.json 常用项¶
data-root · live-restore · registry-mirrors · default-address-pools。Docker 守护进程常用配置。
| 键 | 说明 |
|---|---|
data-root |
Docker 数据持久化根目录(默认 /var/lib/docker) |
live-restore |
dockerd 挂掉时容器保持存活 |
registry-mirrors |
镜像加速地址 |
insecure-registries |
非 HTTPS 私有仓库 |
default-address-pools |
容器子网地址池,避免与内网网段冲突(详见疑难杂症 11) |
default-runtime / runtimes |
指定默认运行时(如 nvidia) |
📦 常用服务一键部署¶
占位值
下面的密码 / 路径是个人环境实际值;通用占位可自行替换,如 yourpassword、yoursecret、/data:/srv、/data/Download、/root/aria2-config。
FileBrowser 文件管理¶
thin_filebrowser(临时分享目录)¶
- 进入想分享的目录再执行;其中下方
802是 web 访问的端口,可以随意暴露。 - 浏览器打开
http://<你的IP>,账号admin,密码admin@123。
Excalidraw 写画板¶
PHP + Apache¶
Apache httpd¶
docker run -p 80:80 --name apache --restart always \
-v /var/www/html:/usr/local/apache2/htdocs/ \
-d httpd
Jenkins¶
docker run -id --name myjenkins \
-p 8080:8080 -p 50000:50000 \
-v /var/jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts
MySQL / MariaDB¶
docker run -p 127.0.0.1:3306:3306 --name some-mariadb \
-e MARIADB_ROOT_PASSWORD=miboxp \
-d mariadb:latest
免密登录(写入客户端配置):
创建业务库与用户:
create database blog;
create user 'blog'@'localhost' identified by 'blog';
grant all privileges on blog.* to 'blog'@'localhost';
flush privileges;
创建超级用户:
create user 'mibo'@'localhost' identified by 'AzSf2SFCOakVH0sRTA1n.';
grant all privileges on *.* to 'mibo'@'localhost';
flush privileges;
Portainer 容器管理¶
docker run -d \
-p 9000:9000 \
--name=portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer-ce
Gogs 代码托管¶
Aria2 下载工具¶
docker run -d \
--name aria2-service \
--restart unless-stopped \
--log-opt max-size=1m \
-e PUID=33 \
-e PGID=33 \
-e UMASK_SET=111 \
-e RPC_SECRET=mibo \
-e RPC_PORT=6800 \
-p 6800:6800 \
-e LISTEN_PORT=6888 \
-p 6888:6888 \
-p 6888:6888/udp \
-v /root/info-home/aria2-config:/config \
-v /abusb320/Download:/downloads \
p3terx/aria2-pro
AriaNg 连接
在 AriaNg 设置中输入上面 RPC_SECRET 的值 mibo,即可连接成功。
禅道¶
docker run --name zentao -p 8081:80 \
-v /opt/candao:/www/zentaopms \
-v /opt/candaoDB:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=www1122345 \
-d easysoft/zentao
MkDocs 服务¶
进入 mkdocs 仓库根目录,主题 material。
AdGuard Home(DNS 服务器)¶
docker run --name adguardhome \
-p 53:53/tcp -p 53:53/udp \
-p 3000:3000/tcp \
-d adguard/adguardhome
🐳 docker-compose 示例¶
docker-compose.yml · networks · links。编排示例。
这是一个一句话的 API,用于获取一言。
version: '3'
networks:
hitokoto_api:
driver: bridge
services:
hitokoto_api:
networks:
- hitokoto_api
image: hitokoto/api:release
container_name: hitokoto_api
hostname: hitokoto_api
environment:
NODE_ENV: production
# 服务配置
# url: https://v1.hitokoto.cn # 请修改为您想要部署的域名
api_name: sh-01-X23Hwoc # 改一个好听的标识吧
requests.hosts: "['v1.hitokoto.cn']" # 改成你想统计的主机名列表
redis.host: redis # Redis 连接地址,如果您使用本文件提供的 Redis 的话您无需修改此项
redis.port: 6379 # Redis 连接端口
# redis.password:
# redis.database: 0
ports:
- 127.0.0.1:18000:8000
links:
- redis
restart: unless-stopped
volumes:
- ./etc/api:/usr/src/app/data
redis:
networks:
- hitokoto_api
image: redis
restart: unless-stopped
container_name: redis
hostname: redis
volumes:
- ./etc/redis.conf:/etc/redis/redis.conf # 一定要记得把 redis.conf 先放在这个位置哦
- ./data/redis:/data
command: redis-server /etc/redis/redis.conf
# ports:
# - 6379:6379 # 如果有必要请取消注释本行
🧰 个人技巧¶
# 别名:更清晰地列出容器
alias pdocker='docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Command}}"'
# 清理(破坏性:删除未使用的镜像/网络/缓存与匿名卷,不可恢复)
docker system prune -a
docker volume prune
attach 会话
docker attach 会话中按 Ctrl+C 可能终止容器;改用 Ctrl+P Ctrl+Q 可脱离容器并保持运行。