Dockerfile-vs-Itamae



Sitemap | Profile | タグ一覧
最近の更新
ドライランのありがたみを改めて知る
2024/04/04
伊豆半島
2024/03/31
お出かけチェックリスト
2024/03/29
Ruby
2024/03/27
Kubernetes
2024/03/22
音楽データをDisplayAudioで聞く
2024/03/09
Redmine
2024/02/05
git
2024/02/02
経済
2024/01/08
どうする家康
2023/12/17
MX-Linux
2023/11/06
國體関連学-休学のご連絡
2023/08/13
Debian
2023/08/02
CentOS
2023/06/13
Dell-XPS13
2023/05/23
ベルト
2023/05/18
SourceForge
2023/04/17
確定申告
2023/02/19
さらば「まぐまぐ」
2023/01/09
風猷縄学
2022/11/23


[-] 1. 発端

Dockerfile と itamae(や chef, ansible などの provisioning ツール)は、 互いに機能が被るところがあるなぁ、と思っていた。

現状、中途半端に itamae で頑張っていたのだけど、 どちらかに寄せたほうが幸せになれるのでは、と。

[-] 2. 結論

で、 https://deeeet.com/writing/2014/03/03/why-building-docker-by-packer/ にもあるように、Dockerfile 固有の記述方式よりはなるべく汎用の 記述が出来る itamae に寄せるのが幸せだろう、と言う結論には達した。

ただ、矛盾するようだけど、 手順を改良し、初期設定を一部 Dockerfile で行うことで、 全体の手順を簡素化した。

どういうことか。

以下、詳細についてメモしておきたい。

[-] 3. 問題点

下記の手順ですすめていた:

  1. 素のコンテナを docker run で起動:
    h$ docker run ... centos:7
  2. コンテナ内で sshd をインストールし起動。 passwd root で root パスワードを変更し、ssh root ログイン出来るようにしておく。
  3. itamae ssh -h [コンテナ名] -u root [レシピ[ でプロビジョニング

この手順の問題は、 root パスワードを手動で変更している点。

Linux系 Docker コンテナの root パスワードは 非公開のままとしたかったけど、ここで root パスワードを設定。しかも手作業。

…と言う点がダサいな、と。

なお、

  1. docker コンテナ内に sshd を立てることの是非 (「Docker にて sshd を走らせるのは良くない」と言う記事がある http://postd.cc/docker-ssh-considered-evil/ )
  2. itamae ssh による docker コンテナへの provisioning

については問題とは思ってない。と言うのは、

  1. sshd はあくまで itamae ssh するための手段。provisioning が終われば sshd は止める。
  2. itamae ssh こそが最善の手段だと思っているため。
    • 例えば、itamae local するにはローカルに ruby 環境が必要となってしまい、 ruby と無関係の環境構築(DBサーバなど)に向かない。
    • itamae docker は起動の度にコンテナが作成されるようで、 ちょっと僕の思っていたものと違っていた。
    • itamae に限らず、他の provisioning ツールでも事情は似たようなものでは ないだろうか?(確信はないけれど)。

[-] 4. 対応

そこで、

  1. 以下までを Dockerfile で構築:
    1. ユーザ登録
    2. sudo 登録
    3. sshd インストール
  2. それ以降の provisioning を itamae ssh で構築。 この段階で itamae ssh が一般ユーザで可能となっており、かつ ssh 先(= docker container) では root 権限で動作する。

…とすることで、 docker コンテナの root パスワードを手で変更する、と言う ダサさを回避した次第。

これが正解かはまだ自身がないけれど、しばらく様子を見たい(2018/12/15)






Generated by juli 2.3.2