宿主机: 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 "处理完成"