ひつまぶし食べたい

メモ代わりのブログ

Mesos の sandbox のログローテーションをする

結論

概要

Mesos + Marathon 環境でdockerを動かしている。 基本的にコンテナのログは fluentd で飛ばしているのだけど、日に日に mesos slave のディスク容量が圧迫されていた。 調べてみると、 /var/lib/mesos-slave/slaves/ 以下にあるフォルダのうち、sandbox のログが肥大化していた。 sandbox には stdout, stderr があって、それぞれコンテナのstdout, stderrを記録しているファイルで、mesosからファイルとして取得することができる。 長期的なものは fluentd で飛ばしているので問題ないため、障害時や直近の確認のために sandbox を使うことにして、 短期間でのログローテーションを行うことにした。


DockerHub で docker build のオプションを設定したい

参考リポジトリ

目的

  • Dockerfile の中で、 ARGを使いたい。
    • LABEL としてビルドした日付や、 VCSのリビジョンを入れたい
    • ソフトウェアのバージョンをARGで指定したい

やること

  1. Dockerfile と同じ場所に、 hook ディレクトリを作成する。
  2. hook ディレクトリ以下に、 build というファイルを作成する。
    • build には、 build時に実行したいシェルスクリプトを書くと、build 時に実行される。
    • 自分で docker build … というコマンドを書く

TIPS

Dockerfileを別の場所に置く場合

https://github.com/hitsumabushi/docker-phpipam では、 Dockerfile を、/dockerimages/phpipam/ 以下に置いている。 その場合であっても、 Dockerfileと同じディレクトリに、 hook ディレクトリを作成すれば良い。 その上で、 DockerHub の Build Settings の Dockerfile Location にて、 /dockerimages/phpipam/Dockerfile とすれば良い。


Dockerの細々としたメモ

Debian で利用する際のメモを書いておく。

grub でのカーネルパラメータ

  1. systemd を利用する設定
  2. cgroups で、メモリに制限をかけるための設定
# quiet はあってもなくても良い
GRUB_CMDLINE_LINUX_DEFAULT="quiet init=/bin/systemd"
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

cgroups まわり

cgroups のディレクトリ配下に設定がある


Dockerのプロキシ設定

自宅ではプロキシを立てていないので問題なかったが、会社でDockerをいじろうとするとプロキシに阻まれてうまくいかず困っていた。 bashの環境変数を設定するのはうまくいかなくて、しばらく手元ではdockerをやらず、作業用マシンをクラウドに立ててどうにかごまかしていたのだけど、 あらためて考えると解決できた。