ServerStatus:VPS群监测,逗比云监控中文版,一键安装

简介:

对于手里有很多VPS或者服务器的人而言,有时为了查看状态,要挨个登陆查看,耗时耗力,而ServerStatus是一个能集中监控众多服务器的软件,这里的版本是经过逗比大佬修改的版本,支持一键安装。

项目地址:

Github:https://github.com/ToyoDAdoubi/ServerStatus-Toyo
Github:https://github.com/tenyue/ServerStatus

脚本:

  • ServerStatus-Toyo版是一个酷炫高逼格的云探针、云监控、服务器云监控、多服务器探针~,该云监控(云探针)是ServerStatus( https://github.com/tenyue/ServerStatus )项目的优化/修改版。

目录介绍:

  • clients 客户端文件
  • server 服务端文件
  • web 网站文件

安装教程:

执行下面的代码下载并运行脚本。

wget -N --no-check-certificate https://softs.loan/Bash/status.sh && chmod +x status.sh

# 如果上面这个脚本无法下载,尝试使用备用下载:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/status.sh && chmod +x status.sh

下载脚本后,根据需要安装客户端或者服务端:

# 显示客户端管理菜单
bash status.sh c
 
# 显示服务端管理菜单
bash status.sh s

运行脚本后会出现脚本操作菜单,选择并输入1就会开始安装。

一开始会提示你输入 网站服务器的域名和端口,如果没有域名可以直接回车代表使用 本机IP:8888

视频安装演示:

Youtube视频

简单步骤:

首先安装服务端,安装过程中会提示:

是否由脚本自动配置HTTP服务(服务端的在线监控网站)[Y/n]
 
# 如果你不懂,那就直接回车,如果你想用其他的HTTP服务自己配置,那么请输入 n 并回车。
# 注意,当你曾经安装过 服务端,同时没有卸载Caddy(HTTP服务),那么重新安装服务端的时候,请输入 n 并回车。

然后 添加或修改 初始示例的节点配置,注意用户名每个节点配置都不能重复,其他的参数都无所谓了。

然后安装客户端,根据提示填写 服务端的IP 和前面添加/修改 对应的 节点用户名和密码(用于和服务端验证),然后启动就好了,有问题请贴出 详细步骤+日志(如果有)联系我。

使用说明:

进入下载脚本的目录并运行脚本:

# 客户端管理菜单
./status.sh c
# 服务端管理菜单
./status.sh s

然后选择你要执行的选项即可。

ServerStatus 一键安装管理脚本 [vx.x.x]
-- Toyo | doub.io/shell-jc3 --
 
0. 升级脚本
————————————
1. 安装 服务端
2. 卸载 服务端
————————————
3. 启动 服务端
4. 停止 服务端
5. 重启 服务端
————————————
6. 设置 服务端配置
7. 查看 服务端信息
8. 查看 服务端日志
————————————
9. 切换为 客户端菜单
 
当前状态: 服务端 已安装 并 已启动
 
请输入数字 [0-9]:

其他操作

客户端:

启动:service status-client start

停止:service status-client stop

重启:service status-client restart

查看状态:service status-client status

服务端:

启动:service status-server start

停止:service status-server stop

重启:service status-server restart

查看状态:service status-server status

Caddy(HTTP服务):

启动:service caddy start

停止:service caddy stop

重启:service caddy restart

查看状态:service caddy status

Caddy配置文件:/usr/local/caddy/caddy

默认脚本只能一开始安装的时候设置配置文件,更多的Caddy使用方法,可以参考这些教程:https://doub.io/search/caddy

——————————————————————————————————————

安装目录:/usr/local/ServerStatus

网页文件:/usr/local/ServerStatus/web

配置文件:/usr/local/ServerStatus/server/config.json

客户端查看日志:tail -f tmp/serverstatus_client.log

服务端查看日志:tail -f /tmp/serverstatus_server.log

其他说明

网络实时流量单位为:G=GB/s,M=MB/s,K=KB/s

服务器总流量单位为:T=TB,G=GB,M=MB,K=KB

CentOS7系统 负载显示异常的问题

CentOS7系统 默认可能没有安装 netstat 依赖,所以会造成IP检测(负载)出错,手动安装即可: yum install net-tools -y

VPS安装人人影视linux客户端,赚取区块链CVNT虚拟币

简介:

VPS安装人人影视linux客户端,赚取区块链CVNT虚拟币

人人影视最近推出了区块链的功能,只要安装他家的客户端,在下载视频的同时可以上传赚取CVNT虚拟币,理论上你的电脑就可以直接赚取,但是目前虚拟币的价格未知,用本机的电脑挂机,可能并不划算。

所以,可以考虑用VPS来挂机。

linux客户端安装教程

安装
说明:官方客户端只有CentOS系统,不过发现客户端也能在Debian、Ubuntu上使用,所以这里就都写下教程。

只测试过CentOS 7和Debian 8+,理论上Ubuntu 16+也可以,不过为了稳定使用,还是建议优先使用CentOS 7。

1、安装依赖

#CentOS 7系统

yum install make wget crontabs -y

#Debian、Ubuntu系统

apt install make cron -y

2、安装RAR解压支持

#32位系统

wget http://freetribe.me/rar/rarlinux-4.0.1.tar.gz
tar -zxvf rarlinux-4.0.1.tar.gz
cd rar
make

#64位系统

wget http://freetribe.me/rar/rarlinux-x64-5.3.0.tar.gz
tar -zxvf rarlinux-x64-5.3.0.tar.gz
cd rar
make

安装完成后,我们再清理下无用文件,使用命令:

cd ..
rm -rf rarlinux-*.tar.gz rar

3、下载人人影视

#下载客户端

wget http://freetribe.me/rar/rrshareweb_linux.rar

#解压

unrar x rrshareweb_linux.rar

#解压CentOS 7压缩包,这里测试的Debian、Ubuntu都可以使用该包,CentOS 6的没试过

tar -zxvf rrshareweb_centos7.tar.gz

#删除无用文件

rm -rf rrshareweb*.tar.gz rrshareweb_linux.rar WEB*.png

#运行客户端

cd rrshareweb
./rrshareweb

然后访问http://ip:3001即可,初始密码为:123456

如果你打不开界面,那么需要开启防火墙端口了,可以先使用Ctrl+C断开运行,然后使用命令:

#CentOS 7系统

firewall-cmd –zone=public –add-port=3001/tcp –permanent
firewall-cmd –reload

最后再重启运行即可。

4、开机自启

为了我们使用方便些,这里可以使用Systemctl守护进程,并加入开机自启。

#以下是一整条命令,一起复制到SSH客户端运行

cat > /etc/systemd/system/renren.service <<EOF
[Unit]
Description=RenRen server
After=network.target
Wants=network.target[Service]
Type=simple
PIDFile=/var/run/renren.pid
ExecStart=/root/rrshareweb/rrshareweb
RestartPreventExitStatus=23
Restart=always
User=root[Install]
WantedBy=multi-user.target
EOF

开始启动:

systemctl start renren

查看状态:

systemctl status renren

如果显示active(running)即开启成功。

设置开机自启:

systemctl enable renren

使用教程:

打开ip:3001首页后,

1、点击右上角的设置,更改路径为真实存在的文件夹,

2、更改用户密码

3、退出设置,在用户中填入用户名和密码,如果没有,在 zimuzu.io 注册

人人影视客户端安装可道云网盘,实现下载后就可观看

这里,简单的介绍下思路,就是先安装宝塔面板,

Linux面板6.8安装命令:通过SSH登陆,执行

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

 然后,登陆宝塔面板地址:  ip:8888,安装必要的系统环境

人人影视客户端安装可道云网盘,实现下载后就可观看

然后,再在宝塔面板中,找到“软件管理”下面的“一键部署源码”,再找到可道云,点击一键部署。

人人影视客户端安装可道云网盘,实现下载后就可观看

接下来,按正常流程安装人人影视客户端安装好以后,登陆把人人影视的缓存目录,改成可道云的某个固定地址。这样,就可以直接在上面观看下载的影视了。

一键测试VPS到国内速度脚本 SuperBench.sh

我们买国外VPS服务器测试网络通常会用到speedtest,speedtest默认是测试到最近的节点,那么到国内速度如何呢?虽然可以指定服务器编号,但是一个个测试还是比较麻烦的,这里推荐一个脚本整合了几个国内的测试点,还是比较方便的。Superspeed已更新为SuperBench.sh,整合了teddysun 大佬的 bench.sh 脚本。

一、使用方法

wget -qO- --no-check-certificate https://raw.githubusercontent.com/oooldking/script/master/superbench.sh | bash

或者

curl -Lso- -no-check-certificate https://raw.githubusercontent.com/oooldking/script/master/superbench.sh | bash

二、测试结果

一键测试VPS到国内速度脚本 SuperBench.sh

这里我测试了一台自己的VPS,可以看到到国内三大运营商的延迟和带宽,还有VPS的信息,包含了虚拟化技术信息,所以,非常使用,建议可以在自己的vps上进行测试。

wireguard添加TCP和Https混淆,实现速度+稳定

前言

WireGuard在速度上拥有更加完美的表现,但是作为udp协议传输的工具,则相对容易识别,今天就介绍实现了WireGuard混淆、WireGuard伪装的VPN,那就是TunSafe,TunSafe是一个基于WireGuard协议的VPN实现,在最近的版本更新中,TunSafe已经做了很大的升级,那就是可以支持混淆、可以使用TCP传输,甚至伪装为https:

1、UDP可添加混淆参数

2、可使用TCP协议传输

3、TCP可伪装为https

一键脚本搭建TunSafe服务端

1、系统安装为ubuntu >= 16.04

2、建议使用UDP+混淆模式

3、个别地区如果udp限制严重,可选择TCP模式任意一个,但效率比UDP模式低

4、速度比较 UDP > TCP > TCP + HTTPS

首先连接VPS,使用以下一键脚本安装

<span class="pln">wget https</span><span class="pun">:</span><span class="com">//raw.githubusercontent.com/atrandys/tunsafe/master/tunsafe_install.sh && chmod +x tunsafe_install.sh && ./tunsafe_install.sh</span>

在弹出的页面中选择1 安装tunsafe

安装过程中需要你选择使用哪种模式,建议1 UDP模式,如果UDP干扰严重,可选择TCP中的一个,https比tcp还要慢一点

安装完成后在/etc/tunsafe/目录下可看到client.conf,这个就是客户端配置文件。

客户端安装TunSafe

windows版:

下载安装TunSafe,这是一个windows端的第三方客户端,因为官方windows版本的还没开发完成,先用这个软件代替,TunSafe已经开源了,可以放心使用。

注意下载TunSafe 1.5-rc2版本,其他版本不支持混淆。

官网下载:TunSafe

打开TunSafe,点击file,选择import file,选择第5步下载的client.conf文件,导入到软件中。

wireguard添加TCP和Https混淆,实现速度+稳定

导入后会自动连接,连接成功后,所有流量都会被代理,也就是全局代理。

移动版

移动客户端暂不支持混淆的TunSafe,等待客户端更新。

多用户

./tunsafe_install.sh

使用以上命令,输入需要增加的用户名,不可输入client,不要和已经存在的用户重复即可。

DockerFile指令集

FROM
        语法:FROM <image>[:<tag>]
        解释:设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上下载。
    MAINTAINER
        语法:MAINTAINER <name>
        解释:MAINTAINER指令允许你给将要制作的镜像设置作者信息
    RUN
        语法:①RUN <command>        #将会调用/bin/sh -c <command>
                  ②RUN [“executable”, “param1”, “param2”]    #将会调用exec执行,以避免有些时候shell方式执行时的传递参数问题,而且有些基础镜像可能不包含/bin/sh
        解释:RUN指令会在一个新的容器中执行任何命令,然后把执行后的改变提交到当前镜像,提交后的镜像会被用于Dockerfile中定义的下一步操作,RUN中定义的命令会按顺序执行并提交,这正是Docker廉价的提交和可以基于镜像的任何一个历史点创建容器的好处,就像版本控制工具一样。
    CMD
        语法:①CMD [“executable”, “param1”, “param2”]    #将会调用exec执行,首选方式
                  ②CMD [“param1”, “param2”]        #当使用ENTRYPOINT指令时,为该指令传递默认参数
                  ③CMD <command> [ <param1>|<param2> ]        #将会调用/bin/sh -c执行
        解释:CMD指令中指定的命令会在镜像运行时执行,在Dockerfile中只能存在一个,如果使用了多个CMD指令,则只有最后一个CMD指令有效。当出现ENTRYPOINT指令时,CMD中定义的内容会作为ENTRYPOINT指令的默认参数,也就是说可以使用CMD指令给ENTRYPOINT传递参数。
        注意:RUN和CMD都是执行命令,他们的差异在于RUN中定义的命令会在执行docker build命令创建镜像时执行,而CMD中定义的命令会在执行docker run命令运行镜像时执行,另外使用第一种语法也就是调用exec执行时,命令必须为绝对路径。
    EXPOSE
        语法:EXPOSE <port> [ …]
        解释:EXPOSE指令用来告诉Docker这个容器在运行时会监听哪些端口,Docker在连接不同的容器(使用–link参数)时使用这些信息。
    ENV
        语法:ENV <key> <value>
        解释:ENV指令用于设置环境变量,在Dockerfile中这些设置的环境变量也会影响到RUN指令,当运行生成的镜像时这些环境变量依然有效,如果需要在运行时更改这些环境变量可以在运行docker run时添加–env <key>=<value>参数来修改。
        注意:最好不要定义那些可能和系统预定义的环境变量冲突的名字,否则可能会产生意想不到的结果。
    ADD
        语法:ADD <src> <dest>
        解释:ADD指令用于从指定路径拷贝一个文件或目录到容器的指定路径中,<src>是一个文件或目录的路径,也可以是一个url,路径是相对于该Dockerfile文件所在位置的相对路径,<dest>是目标容器的一个绝对路径,例如/home/yooke/Docker/Dockerfile这个文件中定义的,那么ADD /data.txt /db/指令将会尝试拷贝文件从/home/yooke/Docker/data.txt到将要生成的容器的/db/data.txt,且文件或目录的属组和属主分别为uid和gid为0的用户和组,如果是通过url方式获取的文件,则权限是600。
        注意:①如果执行docker build – < somefile即通过标准输入来创建时,ADD指令只支持url方式,另外如果url需要认证,则可以通过RUN wget …或RUN curl …来完成,ADD指令不支持认证。
                  ②<src>路径必须与Dockerfile在同级目录或子目录中,例如不能使用ADD ../somepath,因为在执行docker build时首先做的就是把Dockerfile所在目录包含子目录发送给docker的守护进程。
                  ③如果<src>是一个url且<dest>不是以”/“结尾,则会下载文件并重命名为<dest>。
                  ④如果<src>是一个url且<dest>以“/”结尾,则会下载文件到<dest>/<filename>,url必须是一个正常的路径形式,“http://example.com”像这样的url是不能正常工作的。
                  ⑤如果<src>是一个本地的压缩包且<dest>是以“/”结尾的目录,则会调用“tar -x”命令解压缩,如果<dest>有同名文件则覆盖,但<src>是一个url时不会执行解压缩。
    COPY
        语法:COPY <src> <dest>
        解释:用法与ADD相同,不过<src>不支持使用url,所以在使用docker build – < somefile时该指令不能使用。
    ENTRYPOINT
        语法:①ENTRYPOINT [“executable”, “param1”, “param2”]        #将会调用exec执行,首选方式
                  ②ENTRYPOINT command param1 param2             #将会调用/bin/sh -c执行
        解释:ENTRYPOINT指令中指定的命令会在镜像运行时执行,在Dockerfile中只能存在一个,如果使用了多个ENTRYPOINT指令,则只有最后一个指令有效。ENTRYPOINT指令中指定的命令(exec执行的方式)可以通过docker run来传递参数,例如docker run <images> -l启动的容器将会把-l参数传递给ENTRYPOINT指令定义的命令并会覆盖CMD指令中定义的默认参数(如果有的话),但不会覆盖该指令定义的参数,例如ENTRYPOINT [“ls”,”-a”],CMD [“/etc”],当通过docker run <image>启动容器时该容器会运行ls -a /etc命令,当使用docker run <image> -l启动时该容器会运行ls -a -l命令,-l参数会覆盖CMD指令中定义的/etc参数。
        注意:①当使用ENTRYPOINT指令时生成的镜像运行时只会执行该指令指定的命令。
                  ②当出现ENTRYPOINT指令时CMD指令只可能(当ENTRYPOINT指令使用exec方式执行时)被当做ENTRYPOINT指令的参数使用,其他情况则会被忽略。
    VOLUME
        语法:VOLUME [“samepath”]
        解释:VOLUME指令用来设置一个挂载点,可以用来让其他容器挂载以实现数据共享或对容器数据的备份、恢复或迁移,具体用法请参考其他文章。
    USER
        语法:USER [username|uid]
        解释:USER指令用于设置用户或uid来运行生成的镜像和执行RUN指令。
    WORKDIR
        语法:WORKDIR /path/to/workdir
        解释:WORKDIR指令用于设置Dockerfile中的RUN、CMD和ENTRYPOINT指令执行命令的工作目录(默认为/目录),该指令在Dockerfile文件中可以出现多次,如果使用相对路径则为相对于WORKDIR上一次的值,例如WORKDIR /data,WORKDIR logs,RUN pwd最终输出的当前目录是/data/logs。
    ONBUILD
        语法:ONBUILD [INSTRUCTION]
        解释:ONBUILD指令用来设置一些触发的指令,用于在当该镜像被作为基础镜像来创建其他镜像时(也就是Dockerfile中的FROM为当前镜像时)执行一些操作,ONBUILD中定义的指令会在用于生成其他镜像的Dockerfile文件的FROM指令之后被执行,上述介绍的任何一个指令都可以用于ONBUILD指令,可以用来执行一些因为环境而变化的操作,使镜像更加通用。
        注意:①ONBUILD中定义的指令在当前镜像的build中不会被执行。
                  ②可以通过查看docker inspeat <image>命令执行结果的OnBuild键来查看某个镜像ONBUILD指令定义的内容。
                  ③ONBUILD中定义的指令会当做引用该镜像的Dockerfile文件的FROM指令的一部分来执行,执行顺序会按ONBUILD定义的先后顺序执行,如果ONBUILD中定义的任何一个指令运行失败,则会使FROM指令中断并导致整个build失败,当所有的ONBUILD中定义的指令成功完成后,会按正常顺序继续执行build。
                  ④ONBUILD中定义的指令不会继承到当前引用的镜像中,也就是当引用ONBUILD的镜像创建完成后将会清除所有引用的ONBUILD指令。
                  ⑤ONBUILD指令不允许嵌套,例如ONBUILD ONBUILD ADD . /data是不允许的。
                  ⑥ONBUILD指令不会执行其定义的FROM或MAINTAINER指令。

Docker网络详解

Docker网络详解

     当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。
     同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0 接口。比如典型的 172.17.42.1 ,掩码为 255.255.0.0 。此后启动的容器内的网口也会自动分配一个同一网段( 172.17.0.0/16 )的地址。
     当创建一个 Docker 容器的时候,同时会创建了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 eth0 ;另一端在本地并被挂载到docker0 网桥,名称以 veth 开头(例如 vethAQI2QT )。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。
 

配置 DNS

     Docker 没有为每个容器专门定制镜像,那么怎么自定义配置容器的主机名和 DNS 配置呢? 秘诀就是它利用虚拟文件来挂载到来容器的 3 个相关配置文件。
在容器中使用 mount 命令可以看到挂载信息:
复制代码
$ mount
...
/dev/disk/by-uuid/1fec...ebdf on /etc/hostname type ext4 ...
/dev/disk/by-uuid/1fec...ebdf on /etc/hosts type ext4 ...
tmpfs on /etc/resolv.conf type tmpfs ...
...
复制代码
     这种机制可以让宿主主机 DNS 信息发生更新后,所有 Docker 容器的 dns 配置通过 /etc/resolv.conf 文件立刻得到更新。
如果用户想要手动指定容器的配置,可以利用下面的选项。
     -h HOSTNAME or –hostname=HOSTNAME 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts 。但它在容器外部看不到,既不会在 docker ps 中显示,也不会在其他的容器的 /etc/hosts 看到。
     –link=CONTAINER_NAME:ALIAS 选项会在创建容器的时候,添加一个其他容器的主机名到 /etc/hosts 文件中,让新容器的进程可以使用主机名 ALIAS 就可以连接它。
     –dns=IP_ADDRESS 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
     –dns-search=DOMAIN 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的 主机时,DNS 不仅搜索host,还会搜索 host.example.com 。 注意:如果没有上述最后 2 个选项, Docker 会默认用主机上的 /etc/resolv.conf 来配置容器。
容器访问控制

     容器的访问控制,主要通过 Linux 上的 iptables 防火墙来进行管理和实现。 iptables 是 Linux 上默认的防火墙软件,在大部分发行版中都自带。
容器访问外部网络
     容器要想访问外部网络,需要本地系统的转发支持。在Linux 系统中,检查转发是否打开。
[root@master ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
  如果为 0,说明没有开启转发,则需要手动打开。
  $sysctl -w net.ipv4.ip_forward=1
容器之间访问

容器之间相互访问,需要两方面的支持
  • 容器的网络拓扑是否已经互联。默认情况下,所有容器都会被连接到 docker0 网桥上。
  • 本地系统的防火墙软件 — iptables 是否允许通过。
访问所有端口
     当启动 Docker 服务时候,默认会添加一条转发策略到 iptables 的 FORWARD 链上。策略为通过( ACCEPT )还是禁止( DROP )取决于配置 –icc=true (缺省值)还是 –icc=false 。当然,如果手 动指定 –iptables=false 则不会添加 iptables 规则。
     可见,默认情况下,不同容器之间是允许网络互通的。如果为了安全考虑,可以在 /etc/default/docker文件中配置 DOCKER_OPTS=–icc=false 来禁止它
访问指定端口
     在通过 -icc=false 关闭网络访问后,还可以通过 –link=CONTAINER_NAME:ALIAS 选项来访问容器的开 放端口。
例如,在启动 Docker 服务时,可以同时使用 icc=false –iptables=true 参数来关闭允许相互的网络 访问,并让 Docker 可以修改系统中的 iptables 规则。
此时,系统中的 iptables 规则可能是类似
复制代码
$ sudo iptables -nL
...
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
...
复制代码

之后,启动容器( docker run )时使用 –link=CONTAINER_NAME:ALIAS 选项。Docker 会在 iptable 中为 两个容器分别添加一条 ACCEPT 规则,允许相互访问开放的端口(取决于 Dockerfile 中的 EXPOSE 行)。

     当添加了 –link=CONTAINER_NAME:ALIAS 选项后,添加了 iptables 规则
复制代码
$ sudo iptables -nL
...
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 172.17.0.2 172.17.0.3 tcp spt:80
ACCEPT tcp -- 172.17.0.3 172.17.0.2 tcp dpt:80
DROP all -- 0.0.0.0/0 0.0.0.0/0
复制代码

 

     注意: –link=CONTAINER_NAME:ALIAS 中的 CONTAINER_NAME 目前必须是 Docker 分配的名字,或使用 –name 参数指定的名字。主机名则不会被识别
映射容器端口到宿主主机的实现

容器访问外部实现
     容器所有到外部网络的连接,源地址都会被NAT成本地系统的IP地址。这是使用 iptables 的源地址伪装 操作实现的。
查看主机的 NAT 规则。
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0
......

 

其中,上述规则将所有源地址在 172.17.0.0/16 网段,目标地址为其他网段(外部网络)的流量动态伪 装为从系统网卡发出。MASQUERADE 跟传统 SNAT 的好处是它能动态从网卡获取地址.
外部访问容器实现
     容器允许外部访问,可以在 docker run 时候通过 -p 或 -P 参数来启用。 不管用那种办法,其实也是在本地的 iptable 的 nat 表中添加相应的规则。
使用 -p80:80 时:
复制代码
Chain DOCKER (2 references)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 to:172.17.0.15:80
使用 -P 时:
 
$ iptables -t nat -nL
Chain DOCKER (2 references)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:49153 to:172.17.0.2
复制代码

 

端口映射实现
     IP:host_port:container_port 或 -p IP::port 来指定允许访问容器的主机上的 IP、接口等,以制 定更严格的规则。
     如果希望永久绑定到某个固定的 IP 地址,可以在 Docker 配置文件 /etc/default/docker 中指定 DOCKER_OPTS=”–ip=IP_ADDRESS” ,之后重启 Docker 服务即可生效。
配置 docker0 网桥

     Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),它在内核层连通了其他 的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。
     Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信,它还给出了 MTU(接口允许接收的最大传输单元),通常是 1500 Bytes,或宿主主机网络路由上支持的默认值。这些值都可以在服务启动的时候进行配置。
  • –bip=CIDR — IP 地址加掩码格式,例如 192.168.1.5/24
  • –mtu=BYTES — 覆盖默认的 Docker mtu 配置
也可以在配置文件中配置 DOCKER_OPTS,然后重启服务。 由于目前 Docker 网桥是 Linux 网桥,用户可 以使用 brctl show 来查看网桥和端口连接信息。
复制代码
[root@master ~]# brctl show
bridge name    bridge id        STP enabled    interfaces
docker0        8000.56847afe9799    no        veth6278b4d
                            veth9321eba
                            vethc12c3b4
                            vethe54ad11
复制代码

每次创建一个新容器的时候,Docker 从可用的地址段中选择一个空闲的 IP 地址分配给容器的 eth0 端口。 使用本地主机上 docker0 接口的 IP 作为所有容器的默认网关.

自定义网桥

     除了默认的 docker0 网桥,用户也可以指定网桥来连接各个容器。 在启动 Docker 服务的时候,使用 -b BRIDGE 或 –bridge=BRIDGE 来指定使用的网桥。
如果服务已经运行,那需要先停止服务,并删除旧的网桥。
复制代码
$ sudo service docker stop
$ sudo ip link set dev docker0 down
$ sudo brctl delbr docker0
然后创建一个网桥 bridge0
 
$ sudo brctl addbr bridge0
$ sudo ip addr add 192.168.5.1/24 dev bridge0
$ sudo ip link set dev bridge0 up
查看确认网桥创建并启动
 
ip addr show bridge0
4: bridge0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state UP group default
link/ether 66:38:d0:0d:76:18 brd ff:ff:ff:ff:ff:ff
inet 192.168.5.1/24 scope global bridge0
valid_lft forever preferred_lft forever
复制代码

 

 配置Docker服务,默认桥接到创建的网桥上
$ echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
$ sudo service docker start

启动 Docker 服务。 新建一个容器,可以看到它已经桥接到了 bridge0 上。 可以继续用 brctl show 命令查看桥接的信息。另外,在容器中可以使用 ip addr 和 ip route 命令来 查看 IP 地址配置和路由信息。

初步使用Docker,docker安装与加速

初步使用Docker,docker安装与加速

一、安装docker

参考官方文档:https://docs.docker.com/

阿里云栖社区这篇安装docker CE的文章也很详细:https://yq.aliyun.com/articles/110806

二、使用docker加速器

官方镜像仓库在美国,在国内使用非常慢,甚至pull失败。可以使用阿里云的镜像加速器。

访问https://dev.aliyun.com/search.html,有个管理中心,点击进去,就会发现有个Docker Hub镜像站点,上面有详细的介绍如何使安装和使用阿里云加速器

三、使用国内的镜像源

可以看下这个:https://www.docker-cn.com/registry-mirror

修改 /etc/docker/daemon.json

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

  国内的:
  https://docker.mirrors.ustc.edu.cn
  https://hub-mirror.c.163.com

镜像加速器

镜像加速器
国内访问 Docker Hub 有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了加速器服务,例如:
注册用户并且申请加速器,会获得如 https://jxus37ad.mirror.aliyuncs.com 这样的地址。我们需要将其配置给 Docker 引擎。
Ubuntu 16.04、CentOS 7
  对于使用 systemd 的系统,用 systemctl enable docker 启用服务后,编辑 /etc/systemd/system/multi-user.target.wants/docker.service 文件,
找到 ExecStart= 这一行,在这行最后添加加速器地址 –registry-mirror=<加速器地址>,
如:ExecStart=/usr/bin/dockerd –registry-mirror=https://jxus37ad.mirror.aliyuncs.com
注:对于 1.12 以前的版本,dockerd 换成 docker daemon。
重新加载配置并且重新启动。
1
2
sudo systemctl daemon-reload
sudo systemctl restart docker

 

检查加速器是否生效
Linux系统下配置完加速器需要检查是否生效,在命令行执行 ps -ef | grep dockerd,如果从结果中看到了配置的 –registry-mirror 参数说明配置成功。
1
sudo ps -ef | grep dockerd root 5346 1 0 19:03 ? 00:00:00 /usr/bin/dockerd --registry-mirror=https://jxus37ad.mirror.aliyuncs.com