コンテナ=ホスト間のファイルコピー(docker / k8s)

実行中のコンテナ内にあるファイルをホストとの間でコピー転送するには、kubectl|docker container cpを使えます。
config類のベースファイルや実行ログを取得する場合などに便利です。

## コンテナのファイルコピー kubernetes, dockerに`cp`サブコマンドがある * `kubectl cp [options] origin dest` * `docker container cp [options] origin dest` --- ## ファイルpath NFS同様 `[host:]/path/to/file` * ローカルは、`host:`のprefixなし * リモートpathにはタブ補完が効かない * kubernetesの`host`にはpod名を指定 * `kubectl get pods`で検索 --- ## kubectl用共通オプション 以下のオプションは他のサブコマンドと同じ用法 * `-c container_name` マルチコンテナpodの際のコンテナ名 * `-n namespace` ネームスペース指定

k8sコンテナ内のファイルをホストにコピー

$ kubectl cp some_container:/path/to/target_file ./target_file

kubectl cpでは転送先のファイル名指定も必要なようです。

ホスト上のファイルをk8sコンテナ内の指定ディレクトリにコピー

$ kubectl cp target_file some_container:/path/to/target_dir/

kubernetesのコンテナ名はkubectl get podsで確認できます。

dockerコンテナ内のファイルをホストにコピー

$ docker container cp some_container:/path/to/target_file .

ホスト上のファイルをdockerコンテナ内の指定ディレクトリにコピー

$ docker container cp target_file some_container:/path/to/target_dir/

末尾にファイル名を指定した場合にはコンテナ内のファイル名が指定のものになります。

dockerのコンテナ名はdocker container lsで確認できます。

中馬崇尋
Chuma Takahiro