Carpe Diem

備忘録

ホストからdockerのvolumeにファイルをコピー

概要

ホストからコンテナ(が持ってるvolume)へのコピーdocker cpでできます。
しかしホストから直接volume単体にコピーするのはどうすれば良いのだろう?と思って調べたところ地味にサポートされていなかったのでメモとして残します。

環境

  • Docker v18.03.1-ce

方法

こちらで議論されてました。

github.com

issue自体は関連issueでどうするか進める、という結論であとはワークアラウンドが書かれています。
※議論を進めているissueも実装が難しい割に簡単なワークアラウンドがあるので置いておきますで止まってます

ワークアラウンド

以下です。

$ docker container create --name dummy -v myvolume:/root hello-world
$ docker cp ~/myfile.txt dummy:/root/myfile.txt
$ docker rm dummy

つまり一度コンテナを作ってしまえばdocker cpが使えるので解決できるわけです。
コンテナを作って削除すれば、volumeだけ残るので結果的にやりたいことが実現できるわけですね。
またホストからコピーしたvolumeを作るだけなのでdocker runでわざわざ起動せずとも、docker container createで済みます。