这两种方法都涉及到通过 Docker 拉取、保存并加载镜像,或者通过 GitHub 操作来获取 Docker 镜像。


方法 1:通过有梯子环境下载 Docker 镜像并导入

如果你在本地无法直接拉取 Docker 镜像,可以通过在有梯子环境下进行操作:

  1. 拉取镜像
    进入 Docker Hub (https://hub.docker.com),找到需要的镜像并执行 docker pull <镜像名称> 来拉取镜像。

  2. 保存镜像
    使用 docker save 命令将拉取下来的镜像保存成一个文件:

    docker save -o <镜像文件>.tar <镜像名称>
  3. 传输镜像文件
    将 .tar 文件通过其他方式(如 U 盘、内网传输等)传输到需要使用该镜像的机器上。

  4. 加载镜像
    在目标机器上使用 docker load 命令加载镜像:

    docker load -i <镜像文件>.tar

这样,你就可以在没有互联网连接的情况下在本地安装 Docker 镜像。

方法 2:使用 GitHub Fork 和 Actions 自动发布 Docker 镜像 (来自bilibili)

项目地址:https://github.com/wukongdaily/DockerTarBuilder

如果你对 GitHub Actions 有了解,可以使用它来自动构建和发布 Docker 镜像。以下是基本步骤:

  1. Fork 镜像仓库

    • 进入 https://hub.docker.com 找到你需要的镜像仓库。
    • 点击页面中的 Fork 按钮创建该仓库的副本。
  2. 配置 Actions 发布镜像

    • 在 自己的fork的GitHub 仓库页面,进入 Actions 选项卡。
    • 在 Actions 中找到适合的发布工作流(根据镜像大小选择)。
      • 如果 Docker 镜像小于 2GB,可以使用
        Get-AMD64-Docker-Images-Release
        Get-ARM32-Docker-Images-Release
        Get-ARM64-Docker-Images-Release。
      • 如果 Docker 镜像大于 2GB 且小于 5GB,选择
        ARM32 Pull and Save Docker Image
        ARM64 Pull and Save Docker Image
        x86-64 Pull and Save Docker Image。
  3. 运行工作流

    • 点击 Run Workflow,填写镜像名称(多个用英文逗号分开)。
    • GitHub Actions 会自动构建和发布镜像。
  4. 下载并加载镜像

    • 下载构建好的镜像文件。
    • 使用 docker load 命令将镜像加载到本地:
      docker load -i <镜像文件>.tar

 

参考链接

 

方法 3:Clash Verge 代理配置( Podman)

在使用容器化应用时,我们经常需要配置代理以访问外部资源。本教程将指导你如何正确配置 Clash Verge 的代理端口,并将其应用到 Podman 容器中。

1. 查看 Clash Verge 配置文件中的端口设置

首先,我们需要确认 Clash Verge 的代理端口配置。通过以下命令查看配置文件:

cat /home/yys/.local/share/io.github.clash-verge-rev.clash-verge-rev/clash-verge.yaml | grep port

输出示例:

mixed-port: 7897
  port: 19275
  port: 476
  port: 14563
  # 其他端口配置...

从输出中可以看到,mixed-port 是 7897,这是我们需要使用的 HTTP/HTTPS 代理端口。

2. 配置系统环境变量使用代理

确认端口后,我们需要配置环境变量让 Podman 使用这个代理。在终端中执行以下命令:

# 设置 HTTP 和 HTTPS 代理
export HTTP_PROXY=http://127.0.0.1:7897
export HTTPS_PROXY=http://127.0.0.1:7897

# 可选:设置 NO_PROXY 排除本地地址
export NO_PROXY=localhost127.0.0.1.local

3. 验证代理配置是否生效

配置完成后,可以通过以下命令验证代理是否正常工作:

# 检查是否能通过代理访问外部网络
curl -vv https://www.google.com

如果看到正常的 HTML 输出,则表示代理配置成功。如果失败,请检查 Clash Verge 是否正在运行。

4. 持久化代理配置(可选)

为了避免每次启动终端都需要重新设置代理,可以将配置添加到 shell 的配置文件中:

# 对于 bash 用户
echo 'export HTTP_PROXY=http://127.0.0.1:7897' >> ~/.bashrc
echo 'export HTTPS_PROXY=http://127.0.0.1:7897' >> ~/.bashrc
echo 'export NO_PROXY=localhost127.0.0.1.local' >> ~/.bashrc

# 对于 zsh 用户
echo 'export HTTP_PROXY=http://127.0.0.1:7897' >> ~/.zshrc
echo 'export HTTPS_PROXY=http://127.0.0.1:7897' >> ~/.zshrc
echo 'export NO_PROXY=localhost127.0.0.1.local' >> ~/.zshrc

# 使配置立即生效
source ~/.bashrc  # 或 source ~/.zshrc

5. 在 Podman 中使用代理

配置好环境变量后,就可以正常使用 Podman 拉取镜像了:

# 示例:使用 podman-compose 启动容器
cd ~/podman
podman-compose up -d

6. 常见问题及解决方法

问题1:连接被拒绝 (connect: connection refused)

这通常表示代理服务器未运行或端口配置错误。解决方法:

  1. 确认 Clash Verge 正在运行
  2. 使用 ss -tulpn | grep 7897 检查端口是否被监听
  3. 修正环境变量中的端口号

问题2:拉取镜像速度仍然很慢

可能是代理服务器性能不佳。可以尝试:

  1. 切换 Clash Verge 中的代理节点
  2. 添加更多高速代理服务器

通过以上步骤,你可以成功配置 Clash Verge 代理并在 Podman 中使用,确保容器能够顺利访问外部网络资源。