代理服务器作为连接Internet(广域网)与Intranet(局域网)的桥梁,在实际应用中发挥着极其重要的作用。
Linux下有很多程序都只有命令行接口,对于这类程序,它们通过代理服务器(proxy)访问网络的方式也不尽相同。
本文总结了一些常用Windows/Linux程序配置代理服务器的方法。
对于大多数Linux控制台程序,例如 Debian 或Ubuntu中的apt-get和aptitude命令、 git命令 、wget命令,这些程序都使用http_proxy和ftp_proxy环境变量来获取代理服务的配置。
# export http_proxy="http://username:password@proxyServer:port/"
# export https_proxy="http://username:password@proxyServer:port/"
# export ftp_proxy="http://username:password@proxyServer:port/"
# export no_proxy="127.0.0.1,192.168.124.0/16,*.example.com"
如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和passwd部分,否则的话,省略这两部分。
proxyServer为代理服务器的域名(如果能解析)或者IP。
no_proxy 设置你明确不需要走代理的IP 域名 网段之类,用逗号隔开,如网络要求访问外网走代理,访问内网无需走代理的情况。
# export http_proxy="http://proxyServer:port/"
# export https_proxy="http:/proxyServer:port/"
# export ftp_proxy="http://proxyServer:port/"
将代理设置添加到环境文件
# cat >> /etc/profile <<EOF
export http_proxy="http://username:password@proxyServer:port/"
export https_proxy="http://username:password@proxyServer:port/"
export ftp_proxy="http://username:password@proxyServer:port/"
export no_proxy="127.0.0.1,192.168.124.0/16,*.example.com"
EOF
# source /etc/profile
# unset http_proxy
# unset https_proxy
# unset ftp_proxy
# unset no_proxy
set http_proxy="http://username:password@proxyServer:port/"
set https_proxy="http://username:password@proxyServer:port/"
set ftp_proxy="http://username:password@proxyServer:port/"
set no_proxy="127.0.0.1,192.168.124.0/16,*.example.com"
谷歌浏览器访问:chrome://settings/
其他浏览器代理设置,大同小异,无需赘言了!
因为某些原因,国内网络访问 Docker Hub 拉取官方 Docker 镜像时经常超时。怎么解决呢?可以使用 HTTP 代理来加速访问。
国内稍具规模的中大型技术公司应该有正常访问国外网站的代理服务器。
# mkdir -p /etc/systemd/system/docker.service.d
# vim /etc/systemd/system/docker.service.d/http-proxy.conf
###############################################################
[Service]
Environment="HTTP_PROXY=http://username:password@proxyServer:port/"
Environment="HTTPS_PROXY=http://username:password@proxyServer:port/"
Environment="NO_PROXY=localhost,127.0.0.1"
###############################################################
# systemctl daemon-reload
# systemctl restart docker
# docker info | grep -i proxy
# docker build --help
# docker build \
--build-arg http_proxy="http://username:password@proxyServer:port/" \
--build-arg https_proxy="http://username:password@proxyServer:port/" \
-f Dockerfile \
-t sonatype/nexus3:3.5.2 .
Linux下代理服务器(proxy)配置
https://www.cnblogs.com/klb561/p/9175583.html
docker代理配置
https://blog.frognew.com/2017/01/docker-http-proxy.html
Control Docker with systemd
https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
1 在 CentOS 6.4 上安装 dockerdocker当前官方只支持Ubuntu,所以在 CentOS 安装Docker比较麻烦(Issue #172)。
docker官方文档说要求Linux kernel至少3.8以上,CentOS 6.4是2.6的内核,于是我哼哧哼哧的编译安装了最新的kernel 3.11.6,重启后运行docker还是失败,最后找到原因,是因为编译时忘记集成aufs模块了。aufs 需要和 kernel 一起编译,很麻烦。
不过不需要这么麻烦,有强人已经编译好了带aufs模块的内核,见这里Installing docker.io on centos 6.4 (64-bit)
1.1 取消selinux,因为它会干扰lxc的正常功能
sudo vim /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
1.2 安装 Fedora EPEL
sudo yum install http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
1.3 添加 hop5 repo地址
cd /etc/yum.repos.d
sudo wget http://www.hop5.in/yum/el6/hop5.repo
1.4 安装 docker-io
sudo yum install docker-io
会自动安装带aufs模块的3.10内核,以及docker-io包。
1.5 将 cgroup 文件系统添加到 /etc/fstab , 只有这样docker才能正常工作
sudo echo "none/sys/fs/cgroup cgroup defaults0 0" >>/etc/fstab
1.6 修改grub引导顺序
sudo vim /etc/grub.conf
default=0
设置default为新安装的内核的位置,一般是0
1.7 重启
sudo reboot
1.8 检查新内核是否引导成功
重启后,检查一下新内核是否引导起来了
uname -r
3.10.5-3.el6.x86_64
说明成功了
看一下 aufs是否存在
grep aufs /proc/filesystems
nodev aufs
说明存在
1.9 启动 docker daemon 进程
sudo docker -d &
如果你在公司,且公司内部都是通过代理上网,则可以把代理服务器告诉docker,用如下命令(参考这里):
sudo HTTP_PROXY=http://xxx:port docker -d &
1.10 下载 ubuntu 镜像
sudo docker pull ubuntu
1.11 运行 hello world
sudo docker run ubuntu /bin/echo hello world
hello world
安装成功了!!
当前Ubuntu 系统下的 Docker 的安装包只提供64位。如果你想运行32位的 Docker,你需要。安装 Docker
通过 apt-get 安装 Docker 简直是小菜一碟。
$ sudo apt-get install docker.io
如果你不是 root 组的用户,你可以把自己加入到 docker 用户组。下面的命令可以让没有 root 权限的用户使用 Docker:
$ sudo usermod -a -G docker $USER
重新登录,以便让你的用户组权限生效。
下一步是编辑 Docker 配置文件,确定 Docker 可执行文件的路径:
$ sudo vi /etc/default/docker.io
DOCKER= /usr/bin/docker.io
重启 Docker 服务:
$ sudo service docker.io restart
管理 Docker Container 容器
如果你想在新的 Docker 容器下创建一个新的 Ubuntu *** 作系统,你首先需要 pull 一个 的 Docker 镜像。下面的命令可以通过网络下载 Docker 镜像:
$ docker pull ubuntu
你可以使用下面的命令启动 Docker 里面的 Ubuntu 系统。最后的参数 /bin/bash 表示一旦容器启动,首先会执行简单的 bash。
$ docker run -i -t ubuntu /bin/bash
上面的命令会立即启动 Ubuntu container 容器(这是一个完美的容器!),然后它会提供一个 shell 提示符运行环境给你。现在开始你可以通过这个沙箱环境访问一个完整的 Ubuntu 系统了。
输入 exit 命令退出 Docker 容器。
你也可以用下面的命令进入不同的系统。比如 Fedora:
$ docker.io run -i -t fedora /bin/bash
如果系统中还不存在 Fedora Docker 镜像,这个命令会自动下载它,然后启动这个 Fedora 的 Docker 容器。
如果你想要开启指定版本的系统,比如 Ubuntu 13.04,你可以使用下面的命令:
$ docker.io run -i -t ubuntu:13.04 /bin/bash
Container 容器网络设置
Docker 使用 Linux 桥接技术与其他容器通信,以及连通外网。安装完 Docker 后你应该可以看到 docker0 这个网桥,这是 Docker 默认创建的。你创建的每个容器都会通过这个网桥连接到网络。
自定义 Linux 网桥
如果你想自定义网桥,你可以执行以下步骤。你可以在这个网桥后面分配一个子网,并为这个子网分配地址。下面的命令会为 Docker 子网分配 10.0.0.0/24 地址段:
$ sudo apt-get install bridge-utils
$ sudo brctl addbr br0
$ sudo ifconfig br0 10.0.0.1 netmask 255.255.255.0
然后在 /etc/default/docker.io 文件的 DOCKER_OPTS 变量里添加 -b=br0 选项,并重启 Docker 服务:
$ sudo service docker.io restart
到目前为止,任何创建的容器都会连上 br0 网桥,它们的 IP 地址会从 10.0.0.0/24 中自动分配(译注:在10.0.0.2到10.0.0.254之间随机分配)。
其他自定义设置
你可以通过 /etc/default/docker.io 文件的 DOCKER_OPTS 变量设置其他一些属性:
-dns 8.8.8.8 -dns 8.8.4.4 : 为容器指定 DNS 服务器。
-icc=false : 将容器与其他容器隔离出来
疑难解答
1、当你运行 docker.io 命令时,你可能会遇到以下问题:
dial unix /var/run/docker.sock: no such file or directory
这个错误可能是由于 Docker 后台进程没有启动。检查下 Docker 后台进程的状态,确认它已经处于启动状态:
$ sudo service docker.io status$ sudo service docker.io start
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)