容器间通讯

最后更新于

如果需要两个运行中的容器之间传递数据,最方便的方法是通过 ssh / scp 或者 rsync

通过代理访问网络

如果服务器没有办法直接访问外部网络,需要在做任何与网络有关的命令前配置代理:

export http_proxy=<http-proxy>
export https_proxy=<http-proxy>
export no_proxy=openbayes-server-svc

然后主动的更新下 bayes 命令行工具:

bayes upgrade

创建私钥

bayes ssh create

会在 ~/.ssh 目录下创建一堆名为 openbayes / openbayes.pub 的私钥和公钥,并将 openbayes.pub 上传到 openbayes 的 key 列表中。

ssh 协议默认会访问 ~/.ssh/id_rsa / ~/.ssh/id_rsa.pub ,可以将以上生成的两个文件重命令,可以免去后续输入 -i ~/.ssh/openbayes

mv ~/.ssh/openbayes ~/.ssh/id_rsa
mv ~/.ssh/openbayes.pub ~/.ssh/id_rsa.pub

ssh 链接

首先登录目标容器,打开 Terminal 执行如下内容:

# 如果需要代理才能访问外网
# export http_proxy=<http-proxy>
# export https_proxy=<http-proxy>
# export no_proxy=openbayes-server-svc

apt install iproute2 -y
ip a

可以得到如下结果:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
4: eth0@if96: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UP group default
    link/ether 2a:d7:3a:68:13:ee brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.38.6.87/32 scope global eth0
       valid_lft forever preferred_lft forever

可以看到该容器的内网 ip 为 10.38.6.87,通过命令 ssh -i ~/.ssh/openbayes 10.38.6.87 就可以访问该容器了,同时这种方式也可以支持 rsync。