Ubuntu に Docker をインストールして以下の操作を実行するだけで、Docker コンテナを作成しました。
sudo docker run -i -t ubuntu /bin/bash
私はすぐにJavaと他のツールをインストールし、しばらく時間を費やした後、コンテナを停止しました。
exit
その後、ボリュームを追加したいと思ったのですが、思ったほど簡単ではないことに気付きました。 を使用するとsudo docker -v /somedir run ...
、新しいコンテナーが作成されるため、マウントされたボリュームを持つコンテナーに到達するために、Java をインストールして、以前に実行したことを実行する必要があります。
ホストからフォルダーをマウントすることに関するすべてのドキュメントは、ボリュームのマウントはコンテナーの作成時に実行できることを暗示しているようです。したがって、新しいコンテナーを最初から再構成することを回避する唯一のオプションは、既存のコンテナーをリポジトリにコミットし、ボリュームをマウントするときにそれを新しいコンテナーのベースとして使用することです。
これが本当に既存のコンテナにボリュームを追加する唯一の方法なのでしょうか?
ベストアンサー1
既存のコンテナをコミットし (コンテナの変更から新しいイメージを作成します)、新しいマウントを使用して実行できます。
例:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a8f89adeead ubuntu:14.04 "/bin/bash" About a minute ago Exited (0) About a minute ago agitated_newton
$ docker commit 5a8f89adeead newimagename
$ docker run -ti -v "$PWD/somedir":/somedir newimagename /bin/bash
問題がなければ、古いコンテナを停止し、新しいコンテナを使用します。
コンテナの名前を使用してコミットすることもできます。例:
docker commit agitated_newton newimagename
それでおしまい :)