プログラミングをしていて「検証環境をつくりたいなー」というときにDockerは非常に役にたちます。
シェルスクリプトのテストをするために『sudo権限をもった一般ユーザーが存在する環境』をDockerで構築したので、環境構築のチートシートを今回用意しました。
一般ユーザーの作成手順は、Dockerだけでなく、VPSを借りたときにも利用できるので活用していただければと思います。
今回作るDockerコンテナ
作成するコンテナは以下のようなスペックです
- OSはubuntu
- isuconというsudo権限をもつユーザーが存在する
- 一般ユーザー(isucon)のログインシェルは/bin/bash
- 最低限のコマンド(git, less, vimなど)がインストールされている
Dockerコンテナを立ち上げ、ログインする
docker run -it
でコンテナの立ち上げてコンテナにログインできます。
今回はubuntuのDockerイメージからshell_containerというコンテナ名のDockerコンテナを作成しています。
$ docker run -it --name shell_container ubuntu /bin/bash
必要なコマンドのインストール
ubuntuコンテナには基本的なコマンドもまだ用意されていないので、最低限のコマンドをインストールします
$ apt-get update && apt-get install -y git less vim sudo
sudo権限をもつユーザーを作成する
ユーザーの作成をします。-mでホームディレクトリも作成します。
$ useradd -m isucon
isuconユーザーのパスワードを作成します。
$ passwd isucon
isuconユーザーにsudo権限を与えます
$ usermod -aG sudo isucon
isuconユーザーのログインシェルを変更します。
$ usermod -s /bin/bash isucon
(補足) 作成したDockerコンテナを再利用する場合
docker commitをすることでコンテナの環境をDockerイメージとして保存することができます。
以下のコマンドでshell_containerというコンテナをshell_sandboxというイメージ名で保存できます。
$ docker commit shell_container shell_sandbox
以下のコマンドでcommitしたshell_sandboxのイメージからコンテナを立ち上げることができます。
$ docker run -it shell_sandbox /bin/bash
まとめ
今回はdocker runを利用して『sudo権限をもった一般ユーザーが存在する環境』を作る手順の説明をしました。
今回の詳細はDockerでサクっと検証環境(テスト環境)を構築するための手順でも解説をしているので興味のあるかたはご覧になってください。
by @nishina555