Dockerでgitzoneをパッケージしてみる
とりあえず、手始めにgitzoneをパッケージしてみる。
前回調べた通り、debianをベースに作る事にする。
とりあえず、FROMだけ設定したDockerfileを作って、それに入って作業する。
という感じで起動するととりあえず、VMが起動するから、 まず、手作業でインストールしてみて、それをDockerfileに書く。
いろいろ頑張った結果、以下のようなDockerfileになった。
このexposeしてるやつは、現実世界からアクセスする事は(標準では)できない。 そのために-Pオプションと-pオプションがある。
という感じで起動すると、 ランダムなポートに設定される。 どこに設定されているかは、
というコマンドで知れる。 ランダムなポートでは困る場合 (ex, dnsサーバー立てるのにランダムなポートでは困る) -pオプションで設定できる。-pオプションは複数設定できる。
うっかり、dockerデーモンが死んだりすると、 全ての動いてるdockerコンテナが死ぬ。 この場合でも、データが消えたわけでないので、普通は再起動できそう。 起動中のdockerコンテナはdocker psで知る事ができる。 -aオプションをつけて、docker ps -aとすると、停止中の物も含めて、 コンテナが一覧表示できる。 docker stopで実行中のコンテナを停止でき、 docker restartで、停止中のコンテナを再起動できる。 docker rmでコンテナが消せるけど、停止中の物だけ。
docker rmiでイメージを消せる。rmと混同しがちなので注意。
イメージは、ブロックデバイスではないので、ファイルサイズを減らすのが大事。 Dockerfileの中で、apt-get cleanとかするのが大事。
何度もイメージを作ったり消したりしてると、 レグレッションしてないか調べられるテストツールがほしくなるな。