こんにちは。
今回「RubyやPythonを入れたいけれど本番環境に入れたくない」と思い、Dockerに手を出してみました。Dockerとは、小さな仮想環境(コンテナ)を作れるツールのようなものです。(私自体、説明できる程知識がありません🙏ごめんね)
※下記コマンドは自動化すべきなのかもしれません「Dockerがよくわからなくなってきた」
※結局Dockerfileで自動化し、OSもalpine linuxに変更しました「理想のDockerfileができた」
今回は、DebianというLinuxディストリビューションの一種を使います。これを選んだ理由は、私が個人的にDebianが好きだからです。今回は「stable-slim」という最低限の構成の安定版で作業します。環境はIntel Macです。
※本投稿では、Dockerダウンロードからユーザー制作(sudoパスワードなし)までの行程です。
まずDocker Desktopをインストールします。
コンテナの状態などが視覚的に分かるので使っています。
ダウンロードしたらコンテナを作ります。ターミナル上で
docker run -it --name=”コンテナ名" debian:stable-slim /bin/bash
これでシェルがbashのdebian最小構成の仮想環境(コンテナ)が出来上がりました。
上記を打ち込むと、すでにコンテナの中に入った状態のターミナルになっていると思います。
初期設定はルート状態です。ルート環境で弄るのはちょっと心配なのでユーザーを作ります。
パスワード無しのホームディレクトリ有りのユーザーを作ります。
useradd -m ユーザー名
このままではパッケージも入れられないので、sudoとエディタ(vim)を入れます。
apt-get update
apt-get install sudo vim -y
ユーザーにsudoグループを付加させます。
usermod -G sudo ユーザー名
この状態ではユーザーになってsudoしようとしてもパスワードを求められます。
なのでsudoに属する全てのユーザーがパスワード無しでsudoを実行できるようにします。
sudo visudo(自動でVimエディタで開きます)
%sudo ALL=(ALL:ALL) ALL
↓
%sudo ALL=(ALL:ALL) NOPASSWD: ALLへ変更します。
Vimエディタの使い方と言えば、iでインサートモードにして追記、Escで解除し、wqで上書き。もし間違った部分を消してしまって困ったら、Esc→q!で保存されません。
ユーザーになり、パスワード無しで動くか確認してみます。
su -s /bin/bash - ユーザー名
sudo -V(バージョン確認)
パスワードを求められず、エラーが出なければ成功です。
最後にコンテナへユーザー名でログインできるか確認してみます。
一度exitでコンテナの外へ出ます。
ターミナルで下記のコマンドを打ちます。
docker start コンテナ名
docker exec -u ユーザー名 -it コンテナ名 /bin/bash
これでユーザー権限で入ることができます。コンテナ名を忘れたらDocker desktopで確認してください。
sudo持ち全員とユーザー、ルートさえもノーパスワードなので、セキュリティ的にはあんまり良くないと思いますが、個人で使うので良いでしょうという考えで構成しました。
こんな感じです。多分、この情報を欲している人は居ないと思いますので備忘録ということで。


