从开机到跑路:用Docker开轻量化NAT容器,自己当IDC

111 3

从开机到跑路:用Docker开轻量化NAT容器,自己当IDC

相信大家手里都有一堆正在吃灰的VPS。这些VPS一般都是在商家促销时屯的,没有建站等正式的用途,食之无味但又弃之可惜。

其实,用吃灰的VPS自己开NAT当IDC也是个不错的选择,既让吃灰机器派上了用场,又能赚回一些买VPS花的钱。而Docker有着运行轻便、启动快速、容易上手等特点,很适合吃灰VPS。本篇文章详细介绍宿主机的配置教程。

零、准备步骤

  • 一台或几台吃灰的VPS
  • 建议使用Ubuntu20系统
  • 防火墙提前开放所有端口(可以屏蔽特定端口)
  • 使用sudo su切换到root权限

一、安装Docker

请在https://docs.docker.com/engine/install/#server选择自己的系统版本,按教程安装。

二、设置NAT容器硬盘大小



1.设置硬盘大小

echo "OPTIONS=--storage-driver=devicemapper --storage-opt dm.basesize=10G" >>/etc/default/docker

注:本文命令框中加粗斜体的内容是命令中需要依自身需求修改的参数。
此处10G为每个NAT容器的硬盘大小,视情况设定。

2.修改配置文件

vi /lib/systemd/system/docker.service

在[Service]下加入一行:

EnvironmentFile=-/etc/default/docker

ExecStart一行改为:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock $OPTIONS

3.重启Docker服务

systemctl daemon-reload
systemctl restart docker

三、部署限速系统

注:本案例中只限速入站流量

docker run -d \
    --name tc-docker \
    --network host \
    --privileged \
    --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /var/run/docker/netns:/var/run/docker/netns:shared \
    codyguo/tc-docker

四、(可选)制作系统镜像

建议不用折腾,用我这个tzchz/baseos:u20amd就可以。(Ubuntu20+AMD架构)

如果你需要用其他系统(比如CentOS7),或者你的服务器不是AMD架构(比如甲骨文的ARM),那么需要自己制作一个。下文以CentOS7为例。

1.创建容器环境

docker run --name baseos -i -t centos:7 /bin/bash

centos:7为所需系统和版本。

2.进入容器命令行,安装SSH等必需软件

yum update
yum install openssh-server passwd -y
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

3.开启密码登陆

vi /etc/ssh/sshd_config

PermitRootLogin改为yesUsePAM改为no

exit

4.打包生成镜像

docker login
docker commit baseos dockerusername/baseos:c7
docker push dockerusername/baseos:c7

dockerusername/baseos:c7为Docker Hub用户名、镜像名和版本号。

docker rm baseos

五、添加管理脚本



echo '#!/bin/bash' >>/create.sh
echo '    read -p "ContainerName:" cname' >>/create.sh
echo '    read -p "UserID: " port' >>/create.sh
echo '    docker run --name ${cname} -it -d -p ${port}0:22 -p ${port}1-${port}9:${port}1-${port}9 --cpus=0.5 --memory=512M --restart=always --label "org.label-schema.tc.enabled=1" --label "org.label-schema.tc.rate=1mbps" --label "org.label-schema.tc.ceil=2mbps" tzchz/baseos:u20amd sh -c "/etc/init.d/ssh start && tail -f /dev/null"' >>/create.sh
echo '    docker exec -i ${cname} passwd' >>/create.sh

自行修改vCPU、内存、带宽、容器镜像等参数。

echo "alias do-1='bash /create.sh'" >>~/.bashrc
echo "alias do-2='docker stats $(docker ps --format={{.Names}})'" >>~/.bashrc
echo "alias do-3='docker stats --no-stream $(docker ps --format={{.Names}})'" >>~/.bashrc
source ~/.bashrc

六、IDC上线

  • 创建Docker容器命令:
do-1

依次输入容器名、端口号和密码。
其中端口号建议为四位数,若输入为1001,则SSH端口为10010,Web端口为10011~10019。

  • 监控各容器的资源占用:
do-2
  • 输出一次各容器的资源占用(不刷新):
do-3

这家伙太懒了,什么也没留下。
最新回复 ( 3 )
  • 2
    0
    6
  • 3
    0
    用lxc容器是不是会更好一点?
  • 4
    0
    没那么大的VPS T T
  • 游客
    5

    您需要登录后才可以回帖

    登录 注册

发新帖