配置 docker 集群互相之间的 ssh
新!年!快!乐!从量变到质变的过程总是发生地很短暂。
最近搭建 hadoop 环境(感觉弄出来个还算好的集群,之后再加配置就轻松了!的时候碰上这样的需求——需要让 Docker 集群的不同容器之间能通过 ssh 互相访问,研究了几个晚上后终于是搞定了,相关配置虽然很简单,但是感觉仍旧是学到了一点东西,这里进行一些记录,
镜像使用 fedora,实现的原理是只生成一对密钥,所有机器都使用该密钥来进行 ssh,这样能大大方便 Dockerfile 的编写,本机也可以使用 ssh 来访问容器(但这没有必要,ssh 会导致 Dockerfile 中配置的环境变量失效,应当直接使用docker exec
)。
生成密钥对
首先须在本机生成一对密钥,只需在工作目录下执行ssh-keygen -f id_rsa
即可(要求输入的地方直接回车),其会生成id_rsa
和id_rsa.pub
文件;然后执行cat id_rsa.pub > authorized_keys
,修改authorized_keys
,**把最后的user@host
改成*@*
**。
这样修改是说 ssh 服务端将接受所有持有该公钥对应私钥的客户端。
生成完毕后,工作目录的文件列表如下——
1 |
|
创建 sshd_config
在工作目录下创建sshd_config
文件,插入如下内容——
1 |
|
编写 Dockerfile
1 |
|
集群环境下测试
编写docker-compose.yml
文件,只包括 hostname 就可(需要通过 hostname 来获取互相的 ip)——
1 |
|
启动集群。
1 |
|
进入ssh1
,检查 ssh 连接。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 协议 ,转载请注明出处!