Docker で初めてコンテナを作ってボリュームをマウントする際はローカル側に用意しなければいけない

概要

長ったらしいタイトルですが、以下の記事の関連です。

「どう考えてもイケてない」はやっぱりそうらしい

上記記事の「どう考えてもイケてない」の部分ですが、私はちゃんとした解決方法があると思っていたのですが、残念ながらそれは無く、私の考えはどうやら間違ってはいなかったようです。

というのも、MySQL の公式のイメージのドキュメントに、そのようにすべきであるという手順が書いてあるからです。

該当部分は以下の部分です。

Using a Custom MySQL Config File
(中略)
docker exec -it my-container-name cat /etc/my.cnf > /my/custom/config-file
(中略)
docker run --name my-new-container-name -v /my/custom/config-file:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql/mysql-server:tag

コンテナ側のファイルを一度外側に出してから、それをマウントして再度コンテナを作る手順そのものです。

Docker の設計思想

この手順は多くの場合で想定されているとは思うのですが、公式なコマンドのような形で実装がないということは、Docker の設計思想(利用形態の考え方)と合致しないからなのでしょうか。詳しくないのでまったく断言はできないのですが。

ちなみに

上記コマンドにおけるコンテナ内のファイルの場所は微妙に間違っています*1

/etc/my.cnfの部分はそうではなく、/etc/mysql/mysql.conf.d/mysqld.cnfですね。

*1:CentOS なら正しいかも

Powered by はてなブログ