这两天试了一下在Ubuntu上安装docker版本的Dify,说来惭愧,之前一直没怎么用过docker。碰到了一些问题,这里记录一下。
首先安装docker,主要参考这两篇博客:
在Ubuntu上安装Docker以及使用_ubuntu配置docker-CSDN博客
ubuntu环境下docker容器详细安装使用_ubuntu docker-CSDN博客
这两篇博客都已经讲的比较详细了,我就不再重复了。安装好之后按照Dify GitHub主页装一下:https://github.com/langgenius/dify
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
sudo docker-compose up -d
如果网络好的话,运行到这里就可以了,不过我运行了以后就报了下面这样的错:
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
看起来是网络的问题,下面总结一下我是怎么解决问题的:
1.首先尝试是不是需要显式指定代理:
export http_proxy=http://192.168.1.61:10811
export https_proxy=http://192.168.1.61:10811
结果发现没有任何区别。
2.增加docker源(参考类似这里的介绍:Dify本地安装部署-docker安装配置_dify docker 安装-CSDN博客):
sudo mkdir -p /etc/docker
可以直接输入:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":[
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn"
]
}
EOF
每次改完配置以后需要重启docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
但是还是报错。
3.修改DNS:
期间还尝试了网友说的修改DNS:
Docker拉取镜像报错解决Error Get "https://registry-1.docker.io/v2/":环境报错问题 - vello - 博客园
sudo vim /etc/resolv.conf
发现还是一样报错。发现有些网友说大力出奇迹:
【云原生Docker | 报错01】大力出奇迹,解决docker_Error response from daemon_Get “https://registry-1.docker.io/v2/“_error response from daemon: get-CSDN博客
首先我不知道为什么要加这么多源,难道大家就不能选几个有用的源?其次,发现加了之后依然没用。
但其实大部分网友都是这样解决了问题 :
解决docker: Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: request canc-CSDN博客
4.又增加了一些源:
记不清在哪篇博客上看到,又增加了一些源:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":[
"https://docker.m.daocloud.io",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com",
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu"
]
}
EOF
发现虽然还是报错,但是输出不一样了,并且能成功pull hello-world:
docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
Digest: sha256:1b7a37f2a0e26e55ba2916e0c53bfbe60d9bd43e390e31aacd25cb3581ed74e6
Status: Image is up to date for hello-world:latest
docker.io/library/hello-world:latest
5.手动配置docker代理,后来看到了这篇博客:
如何彻底解决Docker网络请求问题:https://registry-1.docker.io/v2/ request canceled报错_ping registry-1.docker.io-CSDN博客
发现还有这种方法:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/proxy.conf <<-'EOF'
[Service]
Environment="HTTP_PROXY=http://192.168.1.61:10811"
Environment="HTTPS_PROXY=http://192.168.1.61:10811"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
然后再运行:
sudo docker compose up -d
发现竟然可以了。其实到最后也没搞清楚,是其中一步起了作用,还是很多步综合起来起了作用。有点玄学了。不过相信遇到类似问题的朋友按照我这种操作,应该还是可以解决这个问题的。