Day1:Linuxのしくみ - 終わりなき旅 -

f:id:dombri:20191117194128j:plain

お久しぶりです。

前回のGCPシリーズは何とか一週間完走、アウトプットを継続して行う大変さや効果を実感しました。
ブログの更新はいったん終えましたが、今年中の GCP Associate 資格取得を目指して引き続き学んでいきます。

本日からは第二弾として、「Linuxのしくみ」について学び始めようと思います。

Linuxの「しくみ」を完全に理解したい。

次のお題は何にしようかと考えていたころ、少し前にとある事象に悩んだ事を思い出しました。

この問題は解消(というか回避)しました。

原因は「DB接続用jarを配置している CLASSPATHKubernetes 環境だと認識されず、見つけてもらえなかった」から。
どうやら「Docker on Ubuntu 環境だと CLASSPATH に記載してなくても catalina/bin 配下を勝手に path 通してくれてるらしい?のに、K8s環境では CLASSPATH に明記しないと認知してくれないっぽい」という挙動だったのです。

うーん、なんだろう。。

実はもう一つ問題になったことが「確かにあるはずのclassファイルが、K8sでは読み込めてDockerでは読み込めず404エラーになる」という現象。
これは LANG=ja_JP.UTF-8 の設定有無が挙動を左右している様子でした。

Dockerイメージを固めたときに設定してあった LANG は認識されておらず、Deployment に記載した LANG が効いているからK8s環境では正しく動作する、と。

ここで二つの疑問が生まれました。

  • Docker にとっての環境変数って何だろう?
  • そもそも環境依存の設定をDockerイメージ作る段階で埋め込んでいいのか?

一先ず Docker のしくみを再確認しようと思い、自分で調べたり、職場の方と話したりした末に以下の考えにたどり着きました。

  • Dockerコンテナと、ホストの関係性の理解が曖昧なのではないか?

よし、この発見を職場でも共有してみよう!

と思ったはいいものの、この記事をよくよく読むと、DockerというよりかはLinuxというOSの在り様を理解していないと、なんだか輪郭がぼんやりしてしまうのです。
つまり、

  • Docker以前に「Linux」を理解できていないのではないか?

やっと表題にたどり着いた。

こういう経緯から、Linuxのしくみを完全に理解したい終わりなき旅が幕を開けたのでした。

To be continued...

P.S. 終わりなき旅といえばこちら。いい曲だった(実は初めてちゃんと聴きました)
www.youtube.com