Centos7配置代理安装最新版Docker并拉取镜像

2024-08-24 09:12

本文主要是介绍Centos7配置代理安装最新版Docker并拉取镜像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目介绍

"cat"不过多介绍就是你想的那个代理软件 温馨提示文章中所有名字已被修改为"cat",自行修改为原样
侵权联系删除,软件来自于魔戒,感谢魔戒官方提供的软件包

此项目是通过使用开源项目(https://github.com/Dreamacro/"cat")作为核心程序,再结合脚本实现简单的代理功能。

主要是为了解决我们在服务器上下载GitHub等一些国外资源速度慢的问题。

使用须知

  • 运行本项目建议使用root用户,或者使用 sudo 提权。
  • 使用过程中如遇到问题,请优先查已有的 issues。
  • 在进行issues提交前,请替换提交内容中是敏感信息(例如:订阅地址)。
  • 本项目是基于 “cat” 、yacd 进行的配置整合,关于"cat"、yacd的详细配置请去原项目查看。
  • 此项目不提供任何订阅信息,请自行准备"cat"订阅地址。
  • 运行前请手动更改.env文件中的"cat"_URL变量值,否则无法正常运行。
  • 当前在RHEL系列和Debian系列Linux系统中测试过,其他系列可能需要适当修改脚本。
  • 支持 x86_64/aarch64 平台

注意:当你在使用此项目时,遇到任何无法独自解决的问题请优先前往 Issues 寻找解决方法。由于空闲时间有限,后续将不再对Issues中 “已经解答”、“已有解决方案” 的问题进行重复性的回答。

使用教程

下载项目

$ git clone https://github.com/wanhebin/"cat"-for-linux.git

进入到项目目录,编辑.env文件,修改变量"cat"_URL的值。

$ cd "cat"-for-linux
$ vim .env

注意: .env 文件中的变量 "cat"_SECRET 为自定义 “cat” Secret,值为空时,脚本将自动生成随机字符串。

启动程序

直接运行脚本文件start.sh

  • 进入项目目录
$ cd "cat"-for-linux
  • 运行启动脚本
$ sudo bash start.sh正在检测订阅地址...
"cat"订阅地址可访问!                                      [  OK  ]正在下载"cat"配置文件...
配置文件config.yaml下载成功!                              [  OK  ]正在启动"cat"服务...
服务启动成功!                                             [  OK  ]"cat" Dashboard 访问地址:http://<ip>:9090/ui
Secret:xxxxxxxxxxxxx请执行以下命令加载环境变量: source /etc/profile.d/"cat".sh请执行以下命令开启系统代理: proxy_on若要临时关闭系统代理,请执行: proxy_off
$ source /etc/profile.d/"cat".sh
$ proxy_on
  • 检查服务端口
$ netstat -tln | grep -E '9090|789.'
tcp        0      0 127.0.0.1:9090          0.0.0.0:*               LISTEN     
tcp6       0      0 :::7890                 :::*                    LISTEN     
tcp6       0      0 :::7891                 :::*                    LISTEN     
tcp6       0      0 :::7892                 :::*                    LISTEN
  • 检查环境变量
$ env | grep -E 'http_proxy|https_proxy'
http_proxy=http://127.0.0.1:7890
https_proxy=http://127.0.0.1:7890

以上步鄹如果正常,说明服务"cat"程序启动成功,现在就可以体验高速下载github资源了。

重启程序

如果需要对"cat"配置进行修改,请修改 conf/config.yaml 文件。然后运行 restart.sh 脚本进行重启。

注意:
重启脚本 restart.sh 不会更新订阅信息。

停止程序

  • 进入项目目录
$ cd "cat"-for-linux
  • 关闭服务
$ sudo bash shutdown.sh服务关闭成功,请执行以下命令关闭系统代理:proxy_off
$ proxy_off

然后检查程序端口、进程以及环境变量http_proxy|https_proxy,若都没则说明服务正常关闭。

“cat” Dashboard

  • 访问 “cat” Dashboard

通过浏览器访问 start.sh 执行成功后输出的地址,例如:http://192.168.0.1:9090/ui

  • 登录管理界面

API Base URL一栏中输入:http://<ip>:9090 ,在Secret(optional)一栏中输入启动成功后输出的Secret。

点击Add并选择刚刚输入的管理界面地址,之后便可在浏览器上进行一些配置。

  • 更多教程

此 “cat” Dashboard 使用的是yacd项目,详细使用方法请移步到yacd上查询。

常见问题

  1. 部分Linux系统默认的 shell /bin/sh 被更改为 dash,运行脚本会出现报错(报错内容一般会有 -en [ OK ])。建议使用 bash xxx.sh 运行脚本。

  2. 部分用户在UI界面找不到代理节点,基本上是因为厂商提供的"cat"配置文件是经过base64编码的,且配置文件格式不符合"cat"配置标准。

    目前此项目已集成自动识别和转换"cat"配置文件的功能。如果依然无法使用,则需要通过自建或者第三方平台(不推荐,有泄露风险)对订阅地址转换。

  3. 程序日志中出现error: unsupported rule type RULE-SET报错,解决方法查看官方WIKI

无法登录Web界面

确保 RESTful API 正确

[root@localhost "cat"-for-linux-master]# vim conf/config.yaml # HTTP 代理端口
port: 7890# SOCKS5 代理端口
socks-port: 7891# Linux 和 macOS 的 redir 代理端口
redir-port: 7892# 允许局域网的连接
allow-lan: true# 规则模式:Rule(规则) / Global(全局代理)/ Direct(全局直连)
mode: rule# 设置日志输出级别 (默认级别:silent,即不输出任何内容,以避免因日志内容过大而导致程序内存溢出)。
# 5 个级别:silent / info / warning / error / debug。级别越高日志输出量越大,越倾向于调试,若需要请自行开启。
log-level: silent
# "cat" 的 RESTful API
external-controller: '0.0.0.0:9090'# RESTful API 的口令
secret: 'Abc@1234'

配置Docker代理

Dockerd 代理

在执行docker pull时,是由守护进程dockerd来执行。因此,代理需要配在dockerd的环境中。而这个环境,则是受systemd所管控,因此实际是systemd的配置。

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf

在这个proxy.conf文件(可以是任意*.conf的形式)中,添加以下内容:

cat > /etc/systemd/system/docker.service.d/proxy.conf << EOF
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
EOF

要换成可用的免密代理。通常使用 cntlm 在本机自建免密代理,去对接公司的代理。可参考《Linux下安装配置Cntlm 代理》

Container 代理

在容器运行阶段,如果需要代理上网,则需要配置 ~/.docker/config.json。以下配置,只在Docker 17.07及以上版本生效。

mkdir ~/.docker/
cat > ~/.docker/config.json << EOF
{"proxies":{"default":{"httpProxy": "http://127.0.0.1:7890","httpsProxy": "http://127.0.0.1:7890","noProxy": "localhost,127.0.0.1,.example.com"}}
}
EOF

这个是用户级的配置,除了 proxies,docker login 等相关信息也会在其中。而且还可以配置信息展示的格式、插件参数等。

此外,容器的网络代理,也可以直接在其运行时通过 -e 注入 http_proxy 等环境变量。这两种方法分别适合不同场景。config.json 非常方便,默认在所有配置修改后启动的容器生效,适合个人开发环境。在CI/CD的自动构建环境、或者实际上线运行的环境中,这种方法就不太合适,用 -e 注入这种显式配置会更好,减轻对构建、部署环境的依赖。当然,在这些环境中,最好用良好的设计避免配置代理上网。

Docker Build 代理

虽然 docker build 的本质,也是启动一个容器,但是环境会略有不同,用户级配置无效。在构建时,需要注入 http_proxy 等参数。

docker build . \--build-arg "HTTP_PROXY=http://127.0.0.1:7890/" \--build-arg "HTTPS_PROXY=http://127.0.0.1:7890/" \--build-arg "NO_PROXY=localhost,127.0.0.1,.example.com" \-t your/image:tag

注意:无论是 docker run 还是 docker build,默认是网络隔绝的。如果代理使用的是 localhost:3128 这类,则会无效。这类仅限本地的代理,必须加上 --network host 才能正常使用。而一般则需要配置代理的外部IP,而且代理本身要开启 Gateway 模式。

命令行代理

docker run -it --env HTTP_PROXY="http://127.0.0.1:7890" --env HTTPS_PROXY="http://127.0.0.1:7890" ubuntu bash

查看Docker配置信息

[root@localhost "cat"-for-linux-master]# docker info | grep -i proxy
...HTTP Proxy: http://127.0.0.1:7890HTTPS Proxy: http://127.0.0.1:7890No Proxy: localhost,127.0.0.1,.example.com
...

重启服务

sudo systemctl daemon-reload
sudo systemctl restart docker

NO_Proxy优化

在配置 NO_PROXY 时,你需要确保它覆盖到所有你不希望通过代理的域名和 IP 地址。通常情况下,NO_PROXY 可以包括以下几类:

  1. 本地主机localhost, 127.0.0.1, ::1 (IPv6 本地地址)
  2. 内部网络:常见的内部网络 IP 段如 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 等。
  3. 特定域名:如果你的内部服务使用特定域名或者子域名,可以将它们添加进去。

以下是一个优化的 NO_PROXY 配置示例:

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1,::1,.example.com,.localdomain,.aliyun.com,mirrors.aliyun.com,mirrors.aliyuncs.com,mirrors.cloud.aliyuncs.com
解释:
  • localhost,127.0.0.1,::1:本地环回地址。
  • 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16:常见的私有 IP 地址范围,用于确保内网流量不会通过代理。
  • .example.com:对于 example.com 的所有子域名都不使用代理。
  • .localdomain:假设你有一个内网的局域网域名,可以像这样添加。
  • .aliyun.com 覆盖所有阿里云的子域名。
  • mirrors.aliyun.commirrors.aliyuncs.commirrors.cloud.aliyuncs.com 是你的 YUM 源配置文件中提到的阿里云镜像站的域名。

配置Containerd代理

创建文件

  1. 创建 containerd.service.d 目录:
mkdir -p /etc/systemd/system/containerd.service.d/
  1. 创建或编辑 /etc/systemd/system/containerd.service.d/http-proxy.conf 文件:
    使用 cat 命令创建或编辑 http-proxy.conf 文件:
cat > /etc/systemd/system/containerd.service.d/http-proxy.conf << EOF
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local,<nodeCIDR>,<APIServerInternalURL>,<serviceNetworkCIDRs>,<etcdDiscoveryDomain>,<clusterNetworkCIDRs>,<platformSpecific>,<REST_OF_CUSTOM_EXCEPTIONS>,.example.com,.localdomain,.aliyun.com,mirrors.aliyun.com,mirrors.aliyuncs.com,mirrors.cloud.aliyuncs.com"
EOF

重启 containerd 服务

  1. 重新加载 systemd 配置:
systemctl daemon-reload
  1. 重启 containerd:
systemctl restart containerd

NO_PROXY 的推荐配置

NO_PROXY 中配置以下地址和网段可以确保这些流量不会经过代理:

  • 本地地址和网段:

    • localhost
    • 127.0.0.1
    • ::1
    • 127.0.0.0/8
  • Kubernetes 的默认域名后缀:

    • .svc
    • .cluster.local
  • Kubernetes Node 网段: <nodeCIDR>

    • 这个网段代表所有 Kubernetes 节点的 IP 地址范围。
  • APIServer 的内部 URL: <APIServerInternalURL>

    • 这通常是集群内部用于访问 Kubernetes API Server 的地址。
  • Service Network 网段: <serviceNetworkCIDRs>

    • Kubernetes Service 的网络范围。
  • etcd 的 Discovery Domain: <etcdDiscoveryDomain>

    • 如果有使用 etcd 的发现服务,需要添加对应的域名。
  • Cluster Network 网段: <clusterNetworkCIDRs>

    • 这个代表集群中使用的网络范围。
  • 其他内网网段:

    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • 其他特定平台相关网段: <platformSpecific>

    • 例如 DevOps 工具的网段,Git 仓库等。
  • 其他自定义 NO_PROXY 网段: <REST_OF_CUSTOM_EXCEPTIONS>

    • 任何需要特殊处理的例外网段。

这篇关于Centos7配置代理安装最新版Docker并拉取镜像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102054

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal