Posted at

(ネタ)コンテナ内のsshdにWebからsshするのをコンテナ1つで動かすサンプルを作ってみた


概要

このエントリは、コンテナ内のsshdにWebからsshするサンプルを作ってみたときの記録です。


対象読者


  • dockerについてある程度知識がある方

  • nodeのエコシステムについてある程度知識がある方


TL;DR

こういうことができます。コンテナを立ち上げると、「http://localhost:3000」に、ログインできるターミナルが立ち上がります。

login.png

コンテナの中は、こんな感じです。

[Browser with Terminal(xterm.js)] <---WebSocket(socket.io)---> [Server(Express.js with Socket.io)] ---ssh(ssh2.js)---> sshd


使ったもの


動かし方


配布物

https://github.com/hrkt/container-with-xterm/releases/tag/0.0.1

に一式を置いてあります。


準備


ビルド


方法1.

$ docker build -t container-with-xterm .


方法2.(ビルドを手っ取り早く)

DockerHubのhrkt/container-with-xtermに、ビルドしたものを置いてあります。

$ docker pull hrkt/container-with-xterm


実行

$ docker run -it -p 3000:3000 --rm container-with-xterm 

> container-with-xterm@0.0.1 start /
> NODE_ENV=prod node app.js

Node.js is listening to PORT:3000


ブラウザから開く

ブラウザから「http://localhost:3000」にアクセスしてください。


注意

一般的なDockerの知識ですが、Dockerのコンテナで、不用意にコンテナホスト側のディレクトリをマウントしないようにしてください。コンテナの中から、コンテナホスト側の領域を操作することができてしまいます。


参考にしたサイト