Bronya
(布洛妮娅总裁)
1
佬友们,最近我遇到个问题,解决了两天了还是没有合适的解决办法。就是我在学校的服务器上能够使用docker,但是没有sudo权限。我目前需要使用docker,但是服务器连接不上 docker.io,我本地配置了clash代理,但是docker不走这个代理。我网上搜了很多方法,大多都需要修改系统文件或者sudo权限,我的权限仅限于 ~/** 里,请问该怎么做来让docker pull的时候能够使用代理或者镜像加速?
另外,我尝试过使用docker pull 带镜像源地址的镜像,例如使用 docker pull dockerpull.cn/library/ubuntu:latest
,也会经常报下面的这个错:
error parsing HTTP 400 response body: invalid character '<' looking for beginning of value: "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Error><Code>InvalidRequest</Code><Message>Missing x-amz-content-sha256</Message></Error>"
另外,好像docker pull和docker build使用的是不同的代理方式,这个我也不太懂,目前网上搜到的方法,要么没用,要么需要sudo权限,而且是修改全局的。
请问佬友有没有合适的办法解决,折腾了好半天了。因为这个服务器很多人在用,所以修改尽量只影响我自己的工作区。如果实在需要sudo权限我可以去找管理员 
提前谢谢各位大佬!
可以试一下 docker.1panel.live
镜像
如果想用代理可以在 /etc/docker/daemon.json
这个文件中添加
{
"proxies": {
"http-proxy": "http://127.0.0.1:xxxx",
"https-proxy": "http://127.0.0.1:xxxx"
}
}
或 /etc/systemd/system/docker.service.d/http-proxy.conf
中添加
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:xxxx"
Environment="HTTPS_PROXY=http://127.0.0.1:xxxx"
docker pull 只能用别人加速网站,或者拉取到GitHub的ghcr.io再拉回来。
docker build 有命令行参数可以配置代理。
那可以在 ~/.config/systemd/user/docker.service.d/http-proxy.conf
这个文件中添加
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:xxxx"
Environment="HTTPS_PROXY=https://127.0.0.1:xxxx"
参考文档
Daemon proxy configuration | Docker Docs
1 个赞
Comm
(Comm)
8
就是用原来的方法多试几个加速就行,昨天试了下三楼的那个是正常的
Bronya
(布洛妮娅总裁)
10
docker不走环境变量,export http_proxy对他没用 
Bronya
(布洛妮娅总裁)
12
我试了下还是不行,这个是用rootless启动的docker服务的设置方法,服务器上的docker是正常启动的,这个设置对它来说没用 
如果是root身份运行的Docker守护进程那就不太好办了,选一个能用镜像pull吧
不过非root用户也不一定有权限使用Docker命令,可以用 docker images
看一下
demo_le
(bunny)
15
本地下镜像,然后上传,或者走镜像加速了,代理没有权限估计不行
Bronya
(布洛妮娅总裁)
17
我刚刚找了个docker.1ms.run挺好用的,但是pull下来的image也必须带这个registry前缀才能run,我有强迫症感觉不舒服 