• Docker 配置代理完整指南

    26-01-21 17:18 19 0 技术

    背景

    在国内环境下使用 Docker 时,经常遇到拉取镜像缓慢或超时的问题。虽然可以配置镜像加速器,但随着国内镜像源的不稳定,使用代理成为了更可靠的解决方案。

    问题现象

    执行 docker builddocker pull 时出现以下错误:

    ERROR: failed to solve: DeadlineExceeded: failed to resolve source metadata for docker.io/xxx
    dial tcp xxx.xxx.xxx.xxx:443: i/o timeout
    

    核心原理

    Docker 架构分为两部分: - Docker Client: 命令行工具,接收用户命令 - Docker Daemon: 后台服务,实际执行拉取镜像等操作 当我们在终端设置 export HTTP_PROXY=... 时,只影响 Docker Client,而真正需要网络访问的 Docker Daemon 并未使用代理。

    解决方案

    为 Docker Daemon 配置代理(推荐) 1. 创建 systemd 配置目录

    sudo mkdir -p /etc/systemd/system/docker.service.d
    
    1. 创建代理配置文件

      sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
      
    2. 添加代理配置

      [Service]
      Environment="HTTP_PROXY=http://your-proxy-ip:port"
      Environment="HTTPS_PROXY=http://your-proxy-ip:port"
      Environment="NO_PROXY=localhost,127.0.0.1,*.local,registry.internal.com"
      

      配置说明:

    • HTTP_PROXY: HTTP 协议代理地址
    • HTTPS_PROXY: HTTPS 协议代理地址(Docker Hub 使用 HTTPS)
    • NO_PROXY: 不使用代理的地址列表,通常包括:
      • localhost, 127.0.0.1: 本地地址
      • *.local: 本地域名
      • 内网私有镜像仓库域名
    1. 重载配置并重启 Docker

      # 重载 systemd 配置
      sudo systemctl daemon-reload
      # 重启 Docker 服务
      sudo systemctl restart docker
      
    2. 验证配置

      # 查看 Docker 服务的环境变量
      sudo systemctl show --property=Environment docker
      

      预期输出:

      Environment=HTTP_PROXY=http://your-proxy-ip:port HTTPS_PROXY=http://your-proxy-ip:port NO_PROXY=localhost,127.0.0.1
      
    3. 测试代理连接

      # 测试是否能通过代理访问 Docker Hub
      curl -x http://your-proxy-ip:port -I https://registry-1.docker.io/v2/
      # 拉取测试镜像
      docker pull hello-world
      
  • 入职满 11 周年纪念日

    26-01-20 10:19 26 0 生活

    79EE5F71-BDDD_thumb.jpg

    IMG_7957.JPG

  • 在 macOS(Apple Silicon)根目录下创建目录的正确方式

    25-10-29 17:30 607 0 技术

    在 macOS 上,我想在根目录(/)下创建一个目录,比如 /data1,用于放置项目数据。

    mkdir /data1
    

    结果系统提示:

    mkdir: /data1: Read-only file system
    

    一开始我以为是权限问题,于是又试了:

    sudo mkdir /data1
    

    但依然报错,说明即使 sudo 也不行。

    为什么会这样?

    从 macOS Big Sur(11) 开始,苹果对系统盘启用了 Signed System Volume(SSV)签名保护机制。

    这意味着:

    系统卷 / 是 只读的 APFS 快照;

    即使是 root 用户,也不能直接修改;

    mount -uw / 在 Apple Silicon(M1/M2/M3)上会报错:

    mount_apfs: volume could not be mounted: Permission denied
    mount: / failed with 66
    

    简单来说:根目录是锁死的。

  • 2025 海淀马拉松 3:39 安全完赛

    25-10-14 17:28 576 0 跑步

    2025 海淀马拉松 3:39 安全完赛

    9c43b356be68a5.JPG
    IMG_0984_thumb.jpg
  • 西北旺第四届十公里竞速赛 PB 44:11

    25-09-28 15:00 682 0 跑步

    西北旺第四届十公里竞速赛 PB,成绩 44:11,配速 4:25,排名 40(500 人参赛)

    西北旺十公里竞速赛_thumb.jpeg

    IMG_7516.PNG

    43c45a461d7f085af8ccf003bf824033.JPG

    IMG_7506.PNG

  • 2025北京亦庄半程马拉松暨人形机器人马拉松安全完赛

    25-04-19 15:52 1646 0 跑步

    2025北京亦庄半程马拉松暨人形机器人马拉松安全完赛,第一次和机器人一起参加比赛,最近太忙训练太少,虽然没有 PB,但是今天的发挥也相当满意!

    aedd09da708030ae2501b73fe9b278_thumb.jpg

    IMG_6782_thumb.jpg

    IMG_6783_thumb.jpg

  • 入职满 10 周年纪念日

    25-01-20 09:49 3995 0 生活

    时光荏苒,岁月如梭,十年风雨,不负韶华。

    lALPDfJ6ffmvLUbNCMDNBNo_1242_2240_thumb.jpg

    WechatIMG324_thumb.jpg

  • 通过 pyenv 配合 venv 来创建项目专属的虚拟环境

    24-12-03 17:37 4517 0 技术

    安装 pyenv

    curl https://pyenv.run | bash
    

    这条命令会自动安装以下工具:

    • pyenv
    • pyenv-doctor(检查 pyenv 安装的健康状况)
    • pyenv-virtualenv(用于创建 Python 虚拟环境)

    更新 Shell 配置

    vim ~/.bashrc
    
    echo -e 'export PATH="$HOME/.pyenv/bin:$PATH"\n' \
        'eval "$(pyenv init --path)"\n' \
        'eval "$(pyenv init -)"\n' \
        'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
    
    source ~/.bashrc
    

    安装 Python 版本

    pyenv install 3.11.9
    

    设置全局或本地 Python 版本

    设置一个全局的 Python 版本(用于所有项目):

    pyenv global 3.11.9
    

    你还可以为特定目录设置本地版本,例如在某个项目目录下:

    pyenv local 3.8.12
    

    这会创建一个 .python-version 文件,记录该项目使用的 Python 版本。

    创建虚拟环境(使用 venv)

    python -m venv venv
    

    激活虚拟环境

    对于 Bash/Zsh(Linux/macOS):

    source venv/bin/activate
    

    对于 Windows(CMD):

    .\venv\Scripts\activate
    
  • 解决 Python 3.8+ 遇到的 OpenSSL 版本不兼容的问题

    24-11-09 16:40 7230 0 技术

    在安装 Python3.8 时可能会遇到与系统自带 OpenSSL 版本不兼容的问题。Python3.8 需要的 OpenSSL 版本为 1.0.21.1.x。如果系统中默认的 OpenSSL 版本低于需求(通常是 OpenSSL 1.0.1),会导致如下错误:

    Could not build the ssl module!
    Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
    
  • 2024 海淀马拉松 3:35 安全完赛

    24-10-29 20:15 4402 0 跑步

    离家最近的一场马拉松,从家出发到起点仅 5 公里,整体的体验非常好,明年还会继续参加!

    05FCA2AA209C49F6FD703F278526C682_thumb.png

文章归档

文章日历

2026 年 01 月
27 28 29 30 01 02 03
04 05 06 07 08 09 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

文章标签

最新评论

友情链接