马卫青的博客

爱思思爱猫爱技术

什么是 Docker Images Pusher ?

Docker Images Pusher 是一个 Docker 镜像转存工具。使用 Github Action 将国外的 Docker 镜像转存到阿里云私有仓库,供国内服务器使用,免费易用。

功能特点:

  • 支持 DockerHubgcr.iok8s.ioghcr.io 等任意仓库;
  • 支持最大 40GB 的大型镜像
  • 使用阿里云的官方线路,速度快

官方提供了视频教程:https://www.bilibili.com/video/BV1Zn4y19743/
相比老苏之前介绍的基于 Cloudfalre 搭建的私有仓库,本方案不需要域名,速度也更快。至于部署难度,两者应该大致相当吧

文章传送门:基于Cloudflare搭建私有Docker镜像源

配置阿里云
登录阿里云容器镜像服务,地址:https://cr.console.aliyun.com
enter description here
创建 个人实例
enter description here

  • 地域:选择离自己近的地方,不过国内应该差别不大
  • 协议:需要勾选
    enter description here
    需要 设置Registry登录密码,这个值就是 ALIYUN_REGISTRY_PASSWORD 的值
    enter description here

新建命名空间

  • ALIYUN_NAME_SPACE:命名空间,例如老苏设置的是 sh_laosu
    enter description here

获取凭证

  • ALIYUN_REGISTRY_USER:用户名
  • ALIYUN_REGISTRY_PASSWORD:密码
  • ALIYUN_REGISTRY:仓库地址
    enter description here

Fork 代码

第一步、你要用 Github 的账号,并登录你的 GitHub 账号

第二步、打开 Docker Images Pusher 项目的地址:https://github.com/tech-shrimp/docker_image_pusher

第三步、Fork 该项目
enter description here
Create a new fork
enter description here
fork 成功后
enter description here

配置 Github Action

Settings –> Secrets and variables –> New repository secret
enter description here

填入第一步配置阿里云时获取的环境变量

  • Name:填入环境变量名;
  • Secret:填入环境变量值;
    enter description here
    依次添加 4 个环境变量
1
2
3
4
- ALIYUN_NAME_SPACE
- ALIYUN_REGISTRY
- ALIYUN_REGISTRY_USER
- ALIYUN_REGISTRY_PASSWORD

enter description here
还需要启用 Actions
enter description here

添加镜像

修改 images.txt 文件,替换成你想要转存的 docker 镜像

  • 可以加 tag,也可以不加 (默认为 latest);
  • 可添加 --platform=xxxxx 的参数指定镜像架构;
  • 可使用 k8s.gcr.io/kube-state-metrics/kube-state-metrics 格式指定私库;
  • 可使用 # 开头作为注释
    enter description here
    按需要进行修改
    enter description here
    文件提交后,自动进入 Github Action 构建
    enter description here
    执行过程
    enter description here
    执行完成
    enter description here

定时执行

如果希望定时拉取镜像,需修改 /.github/workflows/docker.yaml 文件,添加 schedule 即可定时执行

此处 cron 使用 UTC 时区

使用镜像

回到阿里云的镜像仓库,会看到转存后的镜像列表
enter description here
进入详情页面,会有详细的操作指南
enter description here
下面是一个示例

1
2
3
4
5
# 登录阿里云镜像仓库
docker login --username=你的阿里云账号 registry.cn-hangzhou.personal.cr.aliyuncs.com

# 从阿里云镜像仓库拉取镜像
docker pull registry.cn-hangzhou.personal.cr.aliyuncs.com/命名空间/镜像仓库名称:镜像版本号

第一次需要登录验证,密码就是 ALIYUN_REGISTRY_PASSWORD 的值
enter description here
接下来应该就可以愉快的玩耍了
enter description here

参考文档

tech-shrimp/docker_image_pusher: 使用Github Action将国外的Docker镜像转存到阿里云私有仓库,供国内服务器使用,免费易用
地址:https://github.com/tech-shrimp/docker_image_pusher

flyeric0212/aliyun-docker-image-mirror
地址:https://github.com/flyeric0212/aliyun-docker-image-mirror

docker镜像源
镜像地址([建议]申请自己的专属地址[免费的]):
申请专属
华为:
https://5e96702d4787418295070cded678a7b6.mirror.swr.myhuaweicloud.com
这个地址我是的专属地址,华为云提供,共用的多了可能会慢(不过暂时没人反馈),可以自己申请自己的专属地址,只需要注册一个华为云账号即可,免费的。
地址:https://console.huaweicloud.com/swr
enter description here
会配的就不用看后面了,教程看后面。配置后不行看后面的后面。看乐子看后面的后面的后面。

申请专属地址教程:申请专属

配置教程

linux配置方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

root@LAPTOP-VOASGP0I:/etc/docker# cat daemon.json
{
"registry-mirrors": ["https://5e96702d4787418295070cded678a7b6.mirror.swr.myhuaweicloud.com"]
}
root@LAPTOP-VOASGP0I:/etc/docker# systemctl daemon-reload
root@LAPTOP-VOASGP0I:/etc/docker# systemctl restart docker
root@LAPTOP-VOASGP0I:/etc/docker#
root@LAPTOP-VOASGP0I:/etc/docker# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
e6590344b1a5: Pull complete
Digest: sha256:d715f14f9eca81473d9112df50457893aa4d099adeb4729f679006bf5ea12407
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
root@LAPTOP-VOASGP0I:/etc/docker# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 74cc54e27dc4 2 weeks ago 10.1kB
root@LAPTOP-VOASGP0I:/etc/docker#

windows/mac配置方式:

一、简介
Windows Docker 配置镜像源的两种方法。一是,通过 Docker Desktop 界面操作。二是,修改 daemon.json 配置文件。

二、配置镜像源

2.1 通过 Docker-Desktop

点击 设置,选择 Docker Engine ,添加下面源地址,然后并 重启 Docker 即可完成镜像源的配置。

1
2
3
4
,
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com"
]

enter description here

enter description here

2.2 修改 daemon.json 文件

以我本机使用 Admin 账户为例,配置文件位于 C:\Users\Admin.docker\目录下的 daemon.json 文件。
enter description here
打开 daemon.json 文件,添加下面源地址,然后并 重启 Docker 即可完成镜像源的配置。

1
2
3
4
,
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com"
]

enter description here

enter description here

群晖NAS配置方式:

最近很多小伙伴问我 Container Manager 无法下载镜像改怎么办(注册表打不开)。虽然有很多解决方案,但都比较复杂,对于刚入门群晖的小白用户来说不太友好。
虽然老宁之前也给大家提供过免费的镜像加速服务,但因为使用的人太多,流量太大,不得不停止服务。
虽然网上现在也能找到一些解决方案,但大多没有详细的操作步骤和具体方法,对没有相关经验的群晖用户来说,还是摸不着头脑。今天老宁就来分享几个非常简单的方法和详细的操作步骤,帮你解决这个问题。
enter description here

方法一:修改注册表镜像源

首先打开 Container Manager ,点击注册表选项,再点击右上角的设置按钮。
enter description here
在注册表站点信息中填入以下信息 :

  • 注册表名称:任意名称(方便识别即可)

  • 注册表URL:https://docker.1ms.run
    enter description here
    点击使用新添加的镜像源。
    enter description here
    不过注册表的搜索功能会失效,所以仍然不太友好**。
    enter description here

所以我们可以采取下面的方法来拉去镜像。

方法二:命令行拉取镜像

如果要使用命令行,先需要在群晖开启SSH功能。

打开控制面板 > 终端机和 SNMP,勾选启用 SSH 功能。
enter description here

使用 SSH 工具(Putty、XShell、命令行等)输入如下命令连接到群晖。

ssh laoning@192.168.2.99

  • laoning:群晖用户名

  • 192.168.2.99:群晖的内网IP

回车后,需要输入密码(输入的密码看不见)。

输入 sudo -i 后,再输入密码切换为 root 用户。
enter description here

接着就可以通过如下命令拉取镜像
docker pull docker.1ms.run/镜像名:latest

比如拉取 vikunja 镜像:

docker pull docker.1ms.run/vikunja/vikunja:latest

等待下载完成后,回到 Container Manager 就能看到刚刚下载的镜像了。

enter description here

方法三:使用项目拉取并创建

这种方法是老宁最推荐的方法。不需要我们打开 SSH (有风险),也不用单独配置注册表。

默认的 docker-compose 文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3'

services:
vikunja:
image: vikunja/vikunja
container_name: vikunja
environment:
VIKUNJA_SERVICE_JWTSECRET: qwer123456 # 记得修改为随机字符串
ports:
- "3456:3456"
volumes:
- ./files:/app/vikunja/files
- ./db:/db
restart: unless-stopped

把image: vikunja/vikunja前面加上加速路径即可。如:image: docker.1ms.run/vikunja/vikunja
enter description here

这样我们就能非常简单的拉取镜像并创建容器了。

有很多简单的项目提供的是 Docker CLI 命令,而不是 dockerc-ompose 文件。所以我们可以借助 DeepSeek 等AI工具,把它转为 docker-compose 配置。
enter description here

后记

上面介绍的三种方法都很简单实用,老宁非常推荐最后一种方案,不管对于单容器还是多容器都适用,还避免了打开 SSH 的安全风险。

由于很多的加速地址都无法使用,老宁再贴几个可用的镜像加速地址:

https://docker.1ms.run
https://dytt.online
https://func.ink
https://docker.linkedbus.com
https://lispy.org`

最后,老宁不建议小白用户直接修改群晖的默认镜像地址,修改 docker-compose 是最推荐的方法之一!

配置完还有问题的看这里
自查:
使用 docker info 命令看一下最后的 Registry Mirrors 是不是配置成功了。

1
2
3
4
5
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://5e96702d4787418295070cded678a7b6.mirror.swr.myhuaweicloud.com/
Live Restore Enabled: false

确认OK的先拉个测试镜像,比如nginx、hello-world 这种,能拉下来就说明配置通了,没问题

1
docker pull hello-world

如果有一些特殊镜像拉不下来的,有下面一些原因,自己对号入座

  1. 从私有仓库拉的镜像,此地址只代理官方仓库,私有仓库无数个,肯定不会支持的。
    下面这个命令表示特定的 Docker 镜像仓库(docker.1ms.run)拉取一个名为 xhongc/music_tag_web 的镜像,版本号是最新 (latest)
1
docker pull docker.1ms.run/xhongc/music_tag_web:latest

这种是拉不下来的,可以尝试去除仓库地址,然后从官方仓库拉,一般是有的

1
docker pull xhongc/music_tag_web:latest     --这个我测了可以拉下来的

剩下的就是去除前面域名也拉不下来的,这种就是官方仓库也没有。
类似 ghcr.io/open-webui/open-webui
去掉域名后是 open-webui/open-webui 这个也没有
这种需要处理的话,单独收费,白嫖勿扰。

  1. 指定的版本号,有人搭建dify, 项目文件里写的dify-api:1.0.0,这个镜像仓没有,但是有最新的。
1
2
docker pull langgenius/dify-web:1.0.0
docker pull langgenius/dify-api:1.0.0

去除掉版本号拉就能拉下来,但是得修改对应项目文件,这个自己研究

1
docker pull langgenius/dify-api       --这个我测了可以拉下来的

让你们问的我都搭了一个dify,需要指导单独call我,白嫖勿扰。

  1. 几毛钱的东西,就别一直追着我问这个问那个了。
    我不说吧,显得我高冷,你难受,
    说了,就问个没完,我又很难受。

要不就付费单独提供服务,要不你就直接退款,节约彼此时间,我也不会不给你退,就如你来时那样,形同陌路~

后面是挂一些乐子人,给各位看笑话了
正确应该是 docker pull registry 他写个register
enter description here
enter description here
enter description here
还有这个神仙,说配置完启动不了了退款,“不退我就找客服”,真就个巨婴。
自己连个JSON格式也配不对,咋好意思来找人退款的,看不懂英文不能去翻译一下吗。咋不说用了我镜像源你电脑爆炸了呢
enter description here
enter description here

一、开启IOMMU功能实现硬件直通

1.1、对于Intel CPU,添加 intel_iommu=on,操作如下:

1
vim /etc/default/grub

1.2、在里面找到:GRUB_CMDLINE_LINUX_DEFAULT=”quiet”,然后修改为:

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=3 pcie_acs_override=downstream"

编辑完成后保存文件。

1.3、使用命令 update-grub 保存更改并更新grub

1
update-grub

1.4、加载直通内核模块

1
2
3
4
5
echo vfio >> /etc/modules
echo vfio_iommu_type1 >> /etc/modules
echo vfio_pci >> /etc/modules
echo vfio_virqfd >> /etc/modules
update-initramfs -u

1.5、更新完成后,使用重启系统

1
reboot now

1.6、验证是否开启IOMMU分组,命令:

1
dmesg | grep -e DMAR -e IOMMU

如果没有输出,则说明有问题。如果有,可基本确认这个过程顺利完成! 接下来就可以为虚拟机正常的添加硬件直通了。
如果没有直通硬件需求,安装群晖系统直接从第二步开始操作。

二、创建网桥并开启IP包的转发功能

2.1、创建网桥

1、打开Cockpit管理面板——网络——添加网桥
image
2、选择你的物理网卡接口,勾选生成树协议(不勾也可以),点击添加。
image
3、完成网桥创建会分配新的IP地址(一般为当前IP地址加一,比如192.168.2.97变成192.168.2.98),请前往路由器后台或者主机控制台终端(需要显示器)查询,主机控制台终端查询命令:

1
ip addr

4、找到名称为bridge0的接口查看IP地址,如下图所示。
image

2.2、开启IP包的转发功能

1、编辑 sysctl.conf 文件:
打开终端,并以 root 用户身份编辑 /etc/sysctl.conf 文件。

1
vim /etc/sysctl.conf

2、取消注释或添加转发设置:
在 sysctl.conf 文件中,找到以下行(如果不存在则添加):

1
2
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

删除行首的注释符号 # 或者手动添加这一行。这将启用 IPv4 包转发。
3、应用更改:
保存并关闭文件后,使用以下命令使更改生效:

1
sysctl -p

重启系统。
4、验证:
您可以使用以下命令验证 IP 包转发是否已成功启用:

1
sysctl net.ipv4.ip_forward

如果输出为net.ipv4.ip_forward = 1,则表示转发功能已启用。
通过完成以上步骤,您应该已经成功启用了 Debian 系统上的 IP 包转发功能。

三、创建群晖虚拟机

1、创建虚拟机,这里安装源必须先设置为Debian系统的镜像,如果没有,去Debian官网下载一个。地址:https://www.debian.org/

image
下载好的镜像文件上传到/mnt目录下。
image
硬件配置根据自己主机性能配置,丰俭由人。完成基础硬件配置后,点击创建并编辑。
这是创建好之后的界面,提醒一句,安装群晖系统,这里固件模式,必须是BIOS。
image

2、添加直通硬盘

确定磁盘信息:
使用以下命令找到要直通的磁盘的信息:

1
ls -l /dev/disk/by-id/

找到你要直通的硬盘信息
image
编辑DSM.xml配置文件

1
vim /etc/libvirt/qemu/DSM.xml

添加裸磁盘设备:在 标签内部,添加一个 元素,将裸磁盘的路径设置为 的属性,并将设备类型设置为 disk,如下所示:

1
2
3
4
5
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/dev/disk/by-id/ata-HGST_HUS728T8TALE6L4_V'/>
<target dev='vdb' bus='sata'/>
</disk>

确保将 dev 属性设置为虚拟机内部将使用的设备名称,例如 vdb。bus 属性设置为sata表示使用sata接口,群晖只支持sata接口。
保存并退出:保存对配置文件的修改并退出编辑器。
重启虚拟机服务,执行命令:

1
sudo systemctl restart libvirtd

以确保新的配置生效。
检查:使用 virsh dumpxml dsm 确认修改是否成功应用。
通过以上步骤,你应该能够将裸磁盘直通给虚拟机。请确保在进行此操作时备份重要数据,以免意外数据丢失。
image
Cockpit管理面板需要刷新一下页面才能呈现出来直通的硬盘。
image

3、添加群晖引导

找到磁盘——添加磁盘
image
image
源:自定义路径
自定义路径:/mnt/rr.img(群晖引导的文件路径,可以放在其他位置)
设备:磁盘镜像文件
缓存:default
总线:sata(必须是这个)
如果你不需要这个虚拟磁盘,可以现在删除掉。
image
更改引导顺序,将群晖引导勾选上并调整至第一位。
image
点击安装,系统将开机
image
如果你点击安装之后,跑出来的是Debian系统的安装界面,请点击关机,然后将Debian系统的安装镜像移除,然后再开机安装群晖,如下图所示。
image
删除Debian系统安装镜像
image
确认删除
image
如果你是直接进去RR引导界面,则后续步骤按常规安装群晖的教程走下去即可。
image

教程结束!

系统安装视频演示流程:https://bilibili.com/video/BV1az42117pt/

1、Debian系统安装包下载

1.1 进入官网:https://www.debian.org ,点击其他下载链接

image

1.2 选择较庞大的完整安装映像,64 位 PC DVD-1 iso

image
因Debian系统在安装过程中需要联网更新安全源,国内访问速度有时候异常缓慢,动则几个小时。故国内用户建议按上面教程下载完整系统镜像包,这样将避免此问题发生,完成系统安装只需要四分钟左右,大大提高系统安装效率。
镜像写入工具推荐使用:
Etcher https://github.com/balena-io/etcher/releases
Rufus https://rufus.ie/zh

2、选择安装方式(图形界面安装Graphical install)

image

3、设置系统默认语言(选英文,避免奇怪bug)

image

4.1、设置系统时区(选other-Asia-China)

image

4.2、选Asia

image

4.3、选China

image

5、设置区域语言(选United States en_US.UTF-8)

image

6、设置键盘映射(选American English)

image

7、设置主机名(一般保持默认,有冲突或不喜欢可更换)

image

8、设置域名(留空)

image

9、设置管理员密码(root用户)

image

10、创建新普通用户(用户全名)

image

11、新用户账户名称(登陆名称,建议和前面保持一致,避免出现混乱)

image

12、设置新用户密码(建议使用复杂密码)

image

13、进行系统盘磁盘分区(选Guided-use entire disk使用整个磁盘)

image

14、选择系统磁盘

image

15、选择分区方案(选All files in one partition将所有文件放在同一个分区)

image

16、完成分区操作并将修改写入磁盘(Finish partitioning and write changes to disk)

image

17、再次确认写入磁盘(Yes)

image

18、是否需要扫描额外安装介质(选No)

image

19、是否需要使用网络镜像站点(选No)

image

20、是否要参加软件包流行度调查(选No)

image

21、选择要安装的软件(建议只选最后两项)

image

22、系统正在安装中

image

23、系统已完成安装,点击Continue重启

image

24、安装完成后用root账户登陆系统,输入命令查询IP地址(路由器管理后台看也可)

1
ip addr

image

教程结束!

成果展示

最终成果展示

服务器状态监测

服务器状态监测

外网访问来源

服务访问监测

Cockpit管理面板

cockpit

Docker服务管理

dockge

Jellyfin影音服务

image

0%