准备工作和环境

我有一个闲置的 DigitalOcean VPS,只用来跑一个 RSS 服务,网易云音乐海外代理,大部分时间计算资源被浪费。这里把这个 Debian VPS 配置成 docker machine 来跑容器玩。

Mac 上的准备

  1. 确定 docker client 版本和 VPS 上的 docker server 版本兼容(API版本兼容就行了)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(Mac)$ docker version
Client:
Version: 18.03.0-ce-rc1
API version: 1.35 (downgraded from 1.37)
Go version: go1.9.4
Git commit: c160c73
Built: Thu Feb 22 02:34:03 2018
OS/Arch: darwin/amd64
Experimental: true
Orchestrator: swarm
# Server info...

(DebianVPS)$ docker version
# Client info...
Server:
Engine:
Version: 17.12.0-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:09:54 2017
OS/Arch: linux/amd64
Experimental: false
  1. Mac 能通过 public key 认证访问 Debian VPS。
  2. 如果要在 VPS 使用 sudo,确保 VPS 上的 sudo 不需要密码:
1
2
# visudo
%sudo ALL=(ALL) NOPASSWD:ALL
  1. VPS 防火墙允许 2376 端口访问(DigitalOcean 没有 inbound/outbound 限制,默认都开着的)。

创建 Docker Machine

1
2
3
4
5
$ docker-machine -D create \
--driver generic \
--generic-ip-address=<VPS IP> \
--generic-ssh-user <VPS username after ssh> \
asgard

-D 是 debug 模式。driver 可选 Google Compute,Amazon,Azure,DigitalOcean 官方的 Docker 服务,我们这里是 generic,任何 VPS 通用的。

这里默认的 key 是 ~/.ssh/id_rsa, 如果不是要 --generic-ssh-key <path to private key>

如果想配置

如果顺利的话,就可以看见:

1
2
3
4
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
asgard - generic Running tcp://<VPS IP>:2376 v17.12.0-ce
default * virtualbox Running tcp://192.168.99.100:2376 v17.12.1-ce

当前使用的是 Mac 上 VirtulBox 的 docker-machine default, 可以用 eval $(docker-machine env asgard) 切换到 VPS。

最后,如果要注册 DigitalOcean, 可以用我的 referrer link

References