Linuxコマンドを叩いたことのない人向けに、Linuxコマンドの演習用環境を用意した時のメモ
主な要件と状況
・手軽に用意したい
・別途費用が発生して欲しくない(純粋なマシン利用料含め、準備にかかるコスト)
・手元にあるLinuxマシンが1台だけ使える
常用しているマシンのため荒らして欲しくない
結論
DockerコンテナでLinux環境を用意することで、一部の特権的操作を除き作業できる環境を用意する。
下記のようなdocker-composeファイルを作り、centosを使用できるコンテナを用意する。
centos/tools:latestイメージは、centosに基本的なツールを入れてあるイメージです。
普通のcentosイメージの場合、minimalな状態のため別途ツールを入れる必要があるため、こちらを利用する。
※ただ、このイメージを使ってもnetstatなどのコマンドが入らないため別途精査する必要はある。
services:
cent:
image: centos/tools:latest
container_name: cent
tty: true
あとは適当なLinuxユーザを作成して、dockerグループへ所属させる。
あとはコンテナへアクセスするためのdocker execコマンドを叩いてもらうだけ。
docker グループを明け渡すことも若干抵抗があるので、コンテナのsshポートを開けて接続してもらう方がいいかもしれない。
特権が必要なコマンドを実行する方法(未調査)
下記のようにprivilegedや/sbin/initなどを使うことで特権コマンドも使えるようになるっぽい。
今回のケースでは、ホストマシン側の影響を少なくしたかったので使用は避けたが、どうでもいいマシンならこの方法を取りたい。
docker run -it -d --privileged --name centos7 centos:7 /sbin/init