vagrant-ubuntu-docker-clash

宿主机: win11,安装有代理服务clash
vagrant安装ubuntu,ubuntu上安装docker,docker正常下载了ubuntu:latest,并推送到阿里云acr服务上,但docker下载flink 一直失败。

所以需要docker使用clash服务才可以

直接上结论: 
1、clash开启:局域网连接,方便docker连接到代理服务
2、docker的/etc/docker/daemon.json内设置代理服务配置: 
          "proxies": {
"http-proxy": "http://192.168.0.104:12345",
"https-proxy": "http://192.168.0.104:12345",
"no-proxy": "localhost,127.0.0.1,192.168.0.0/24,*.aliyun.com"
  }
或者直接加到vagrantfile内,
另外一种方式:编辑文件: /etc/systemd/system/docker.service.d/http-proxy.conf ,尝试了下并没有成功,放弃了!

vagrantfile: 

# -*- mode: ruby -*-
# vi: set ft=ruby :


Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"
  config.vm.hostname = "flink-docker-host"
  
  # 配置网络
  #config.vm.network "private_network", ip: "192.168.56.10"
  config.vm.network "public_network"
  
  # 配置资源
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "4096"
    vb.cpus = 2
  end
  
  # 启动后自动安装Docker(使用国内源)
  config.vm.provision "shell", inline: <<-SHELL
    # 替换Ubuntu源为阿里云
    sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
    sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
    
    # 更新系统
    sudo apt-get update
    sudo apt-get upgrade -y
    
    # 安装Docker依赖
    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
    
    # 添加Docker国内源(阿里云)
    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    
    # 安装Docker
    sudo apt-get update
    sudo apt-get install -y docker-ce
    
    # 配置Docker国内镜像加速(修复EOF标记问题)
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": [
      ],
      "insecure-registries": [],
      "debug": false,
      "experimental": false,
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m"
      },
  "proxies": {
"http-proxy": "http://192.168.0.104:12345",
"https-proxy": "http://192.168.0.104:12345",
"no-proxy": "localhost,127.0.0.1,192.168.0.0/24,*.aliyun.com"
  }
    }
EOF
    # 注意:上面的EOF必须顶格写,前后不能有任何空格
    
    # 重启Docker服务
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    # 允许vagrant用户使用Docker
    sudo usermod -aG docker vagrant
    
    # 安装Docker Compose(使用国内源)
    #sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    #sudo chmod +x /usr/local/bin/docker-compose
  SHELL
end
    
 3、这样可以保证docker能拉取到flink镜像,如何推送到阿里云,以及自动推送到阿里云
自动拉取和推送脚本: 

#!/bin/bash

# 配置阿里云ACR信息
ACR_DOMAIN=""  # 替换为你的ACR域名
ACR_NAMESPACE=""                     # 替换为你的命名空间
ACR_REGISTRY="${ACR_DOMAIN}/${ACR_NAMESPACE}"
ALI_ACNT="" #替换为你的阿里云账号

# 要同步的镜像列表
IMAGES=(
  "flink:latest"
)

# 检查并登录ACR
login_acr() {
  echo "检查ACR登录状态..."
  if ! docker info | grep -q "$ACR_DOMAIN"; then
    echo "未登录ACR,尝试登录..."
    if ! sudo docker login --username="$ALI_ACNT" "$ACR_DOMAIN"; then
      echo "登录失败!请检查账号和密码是否正确"
      exit 1
    fi
  fi
  echo "ACR登录状态正常"
}

# 执行登录检查
login_acr

# 循环处理镜像
for image in "${IMAGES[@]}"; do
  echo "处理镜像: $image"
  
  # 拉取镜像
  if ! sudo docker pull "$image"; then
    echo "拉取失败,跳过"
    continue
  fi
  
  # 构建ACR镜像标签
  acr_image="${ACR_REGISTRY}/${image//\//-}"
  
  # 标记并推送
  sudo docker tag "$image" "$acr_image"
  if sudo docker push "$acr_image"; then
    echo "推送成功: $acr_image"
    sudo docker rmi "$acr_image"  # 清理标签
  else
    echo "推送失败: $acr_image"
  fi
  
  echo "----------------------------------------"
done

echo "处理完成"