概要

Docker の話しようぜ!

親愛なるみろりHP愛読者諸兄は、緑さんが大好きな Python のことは知っているかもしれんが、 Docker は知らんであろう。 Docker っていうのは、自分の OS の中でべつの OS を動かすのに使うソフトウェアだ。

今回は、ちと Linux OS で遊びたいんだが、わざわざレンタルするのも面倒なので、自分のぱそこに Linux OS を入れてやりたい。そういう遊びをするときは Docker の他にも Vagrant とかあるんだが、アイコンがカワイイので緑さんは最近は Docker 推しだ。

とまあここまで説明してみたはいいが、今回のハナシは Docker を普通に知ってないとわからんのでよろしく。

 

Image 育成って何だよ

Docker container で遊んでいると、なんかのキッカケで中身をオシャカにしてしまったり、なんかよくわかんなくなっちまったときに、最初からやり直したくなる。しかし、いちいち (Ubuntu の場合) apt update からやり直すと時間がかかって毎度面倒くさい。だから、 container で遊ぶ作業中は、逐一状態を保存したいはずだ。こんなふう↓に。

  • apt update し終わった状態の container を “my-wip-image:0.0.1” image として保存
  • lsb-release とか sudo をインストールし終わった状態の container を “my-wip-image:0.0.2” image として保存
  • なんやかんや遊び終わった状態の container を “my-image” image として保存

Image を保存しておけば、その image から container を作ってすぐスタートできるからいいね! というわけだ。こういうのを緑さんは勝手に image 育成って呼んでいる。

したがって、 “Dockerfile に書いてある update とかの RUN コマンドの実行を待つのが別に億劫ではないよ” という人にとっては不要なハナシだ。

 

育成方法

# とりあえずホストマシンに Docker が入っていることを確認。
docker --version

# 一番最初の image を Docker Hub から貰ってきて container を作る。
# `run` は image から container を作るぞ。
# あれ? `-it` って `run` にも要るんだっけわからん。
docker run -it -d \
    --name my-wip-container \
    -p 8888:80 \
    -e Foo=foo \
    ubuntu:latest

# なんか作業する。 (ここでは `apt update` だけしとこう。)
docker exec -it my-wip-container sh
apt update
exit

# ここからは、その container を保存するステップ。

# Container の id を取得。
# `--format` を使うとわかりやすいぞ。
docker ps --format "table {{.Names}}\t{{.ID}}"

# Container を image として保存。
# (0.0.1 がどんな状態の image かどうかはメモ書きしておくといいね。)
docker commit ここにCONTAINER_ID my-wip-image:0.0.1

# いまある container を消す。 (残してあっても別にいいが。)
docker stop my-wip-container && docker rm my-wip-container

# さっき作った image から container を作る。
docker run -it -d \
    --name my-wip-container \
    -p 8888:80 \
    -e Foo=foo \
    my-wip-image:0.0.1

 

おしまい

みろりHPのバージョンアップを最近は考えていて、その一環として Docker を覚えたのだ。現在のバージョン3と、次のバージョン4の一番大きな違いは、たぶん OS の変更となりそうなんだ。現在のみろりHPは CentOS という Linux で動いているのだけど、次回はおそらく Ubuntu である。

このサイトを自分で作ってから3年が経った。

そろそろまた手入れをしてやってもいいだろう。