Dataボリュームコンテナではなくvolume apiを使う

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

この本のp95のDataボリュームコンテナの下りがいまいち理解できなかったのでなんとなくググってたらそもそも使うなという話が出てきたので読んでた。

Dataボリュームコンテナのメリットがいまいち理解できてないんだけど、ざっくりとアプリケーションのコンテナがホスト(のパス)に依存するのはよくないから、コンテナを一個噛ませてあくまでアプリケーションのコンテナは、コンテナ間のボリュームを扱う感じでやろうぜ、的な話なのかなと理解している。

この記事の話は、1.9.0からそもそもボリューム用のコンテナなんか立てなくてもいいAPIができたので、そっちを使おうね、という話。

$ docker volume create --name test

で、testボリュームができて、

FROM busybox

RUN mkdir -p /test
CMD ["ls", "/test/a"]

こんな感じのDockerfileから作ったimageを起動して、ボリュームにtestを使って、

$ docker container run -v test:/test test

コンテナを落としてから

FROM busybox

CMD ["ls", "/test"]

のイメージを同じボリュームを指定して起動すると、

$ docker container run -v test:/test test2
a

最初の起動時のデータが残ってる、という話。

volume apiのドキュメントはこれ。 https://docs.docker.com/engine/reference/commandline/volume_create/