Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2896字,纯文字阅读大概需要5分钟。
内容图文
![Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例](/upload/InfoBanner/zyjiaocheng/925/0478ba083ad049d68e3cd77677c42383.jpg)
环境
- 宿主机:macOS Catalina 10.15.6(已安装Shadowsocks)
- 虚拟机:CentOS Linux 7(已安装Docker / 保证可用空间>20G)
- AlphaRTC:https://github.com/OpenNetLab/AlphaRTC
一、问题分析
配置AlphaRTC环境时,官方推荐采用docker。安装过程中,首先需要通过Dockerfile文件创建镜像,由于xxxxxx,在未配置任何代理的情况下,将出现由于无法访问而导致的一系列问题。
AlphaRTC/dockers/Dockerfile.compile下图圈出来的部分即为可能出现问题的语句
二、目标
-
Linux虚拟机走代理
-
让docker的守护进程及内部容器均可走代理,完成AlphaRTC的安装。
二、解决方案
由于Docker For Mac的实现和标准Docker规范有区别,Docker For Mac的Docker Daemon是运行于虚拟机(xhyve)中的, 而不是像Linux上那样作为进程运行于宿主机,在docker代理配置上又会带来一堆不必要的麻烦。因此,采用在macOS上运行centos7虚拟机,在虚拟机内开启docker的方法。
步骤一 宿主机网络配置
修改Shadowsocks的Socks5监听地址
修改Shadowsocks的高级设置
修改HTTP代理设置
修改Shadowsocks的HTTP代理设置
步骤二 虚拟机网络配置
虚拟机网络模式为NAT模式
![Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例 - 文章图片](/upload/getfiles/0001/2021/5/9/20210509102421383.jpg)
配置Network Proxy
将虚拟机内的Network Proxy改为手动并配置对应ip及端口,端口信息见步骤一截图。
![Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例 - 文章图片](/upload/getfiles/0001/2021/5/9/20210509102421605.jpg)
下载AlphaRTC
此时Linux虚拟机已成功走代理,下载AlphaRTC
git clone https://github.com/OpenNetLab/AlphaRTC.git
![Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例 - 文章图片](/upload/getfiles/0001/2021/5/9/20210509102421731.jpg)
步骤三 Dockerfile修改
官方给出的方法是直接cd至AlphaRTC文件夹下,运行make all
,实际使用中发现在下载一段时间后,会卡在depot_tools工具的下载,提示无法连接。
原因是docker运行起的容器内还未走代理。
Step 12/16 : RUN git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git ${DEPOT_TOOLS}
---> Running in c86a1bcd1229
Cloning into '/opt/depot_tools'...
下面给出为容器配置环境变量的解决方案。
首先需要找到构建镜像的dockerfile文件。查看执行make all
指令后运行AlphaRTC内的Makefile文件。Makefile文件内给出了两个用于构建镜像的dockerfile文件地址。
![Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例 - 文章图片](/upload/getfiles/0001/2021/5/9/20210509102421953.jpg)
![Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例 - 文章图片](/upload/getfiles/0001/2021/5/9/20210509102422176.jpg)
在两个docker文件内添加http_proxy
Dockerfile.compile
地址为 宿主机ip:http代理监听端口
**由于使用的是Linux系统,本机的UID和docker内的UID存在冲突,所以直接把USER也给改了。
![Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例 - 文章图片](/upload/getfiles/0001/2021/5/9/20210509102422289.jpg)
Dockerfile.release
![Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例 - 文章图片](/upload/getfiles/0001/2021/5/9/20210509102422904.jpg)
步骤四 make all创建镜像
此时,cd至AlphaRTC,执行make all。经过很久很久的一段时间后,alphartc、alphartc-compile两个镜像创建完成,可以通过执行docker images
查看
[xieyh@localhost AlphaRTC-v01]$ sudo docker images
[sudo] xieyh 的密码:
REPOSITORY TAG IMAGE ID CREATED SIZE
alphartc latest 5248fc996fbc 5 minutes ago 182MB
alphartc-compile latest d1955f5c7ea9 2 hours ago 948MB
<none> <none> bfa2024d880d 2 hours ago 888MB
<none> <none> df9c9d0be56b 2 hours ago 888MB
ubuntu 18.04 3339fde08fc3 5 days ago 63.3MB
四、总结
不同环境下,配置AlphaRTC的方式也有所不同。但是要解决的核心问题都是
- 终端本身可ping通xxxx
- docker守护进程可ping通xxxx
- docker运行起的容器内部可ping通xxxx
注意分清http_proxy要填的端口号到底是哪一个?连接不上的问题究竟是出在容器和宿主机通信上还是宿主机与外部通信上?
内容总结
以上是互联网集市为您收集整理的Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例全部内容,希望文章能够帮你解决Linux虚拟机下Docker走代理(含Linux虚拟机走代理)—以配置AlphaRTC为例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。