Windows 环境
windows拉取docker镜像经常拉取不下来,目前我知道有三种方式可以处理这个问题。
- 本机挂代理下载
- 可以上外网的服务器下载后打包传回本机
- github配合阿里云docker镜像
这里我感觉使用第一个比较简单,剩下的两个方式大家可以自行搜索。
我使用的是v2rayN,先点击设置查看一下端口号。
临时生效
这种方式只是临时生效,当你关闭Cmd再次打开,代理就失效了。
使用sock5代理
1set http_proxy=socks5://127.0.0.1:108082set https_proxy=socks5://127.0.0.1:10808
取消代理设置
1set http_proxy=2set https_proxy=
测试是否生效
1curl www.google.com # 有返回值说明代理成功
长期生效
右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量 ,在系统环境中,添加如下两个环境变量。
Linux环境
我使用的arch系统,代理软件是qv2ray,大家的配置方式可能不同,但也是大同小异,本文重点参考Arch Wiki Proxy。
先qv2ray中查看,本地代理端口:
临时生效
1export http_proxy=http://10.203.0.1:5187/2export https_proxy=$http_proxy
临时取消代理
1export http_proxy=2export https_proxy=
脚本生效(推荐使用)
vim ~/.bashrc
复制粘贴如下代码
1function proxy_on() {2 export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"3
4 if (( $# > 0 )); then5 valid=$(echo $@ | sed -n 's/\([0-9]\{1,3\}.\?\)\{4\}:\([0-9]\+\)/&/p')6 if [[ $valid != $@ ]]; then7 >&2 echo "Invalid address"8 return 19 fi10 local proxy=$111 export http_proxy="$proxy" \12 https_proxy=$proxy \13 ftp_proxy=$proxy \14 rsync_proxy=$proxy15 echo "Proxy environment variable set."28 collapsed lines
16 return 017 fi18
19 echo -n "username: "; read username20 if [[ $username != "" ]]; then21 echo -n "password: "22 read -es password23 local pre="$username:$password@"24 fi25
26 echo -n "server: "; read server27 echo -n "port: "; read port28 local proxy=$pre$server:$port29 export http_proxy="$proxy" \30 https_proxy=$proxy \31 ftp_proxy=$proxy \32 rsync_proxy=$proxy \33 HTTP_PROXY=$proxy \34 HTTPS_PROXY=$proxy \35 FTP_PROXY=$proxy \36 RSYNC_PROXY=$proxy37}38
39function proxy_off(){40 unset http_proxy https_proxy ftp_proxy rsync_proxy \41 HTTP_PROXY HTTPS_PROXY FTP_PROXY RSYNC_PROXY42 echo -e "Proxy environment variable removed."43}
没有username
和password
可以不填。
source ~/.bashrc
,重新跑一下脚本。
直接在命令行中输入proxy_on
即可配置开启代理,proxy_off
关闭代理。
切换sudo
命令时,会因为环境变量切换导致代理失效,解决办法如下:
在/etc/sudoers.d/05_proxy
中添加一行:
1Defaults env_keep += "*_proxy *_PROXY"