Dockerにおいて表題の通り。たまにやりたくなっていつも調べなおすのでメモ。
■ 環境
- Docker 1.8.2
■ copy
下記のように実行することで、既に稼働しているコンテナに対して、ローカルのファイルをコピーすることができる。
稼働中のコンテナを確認。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
72de143ca974 jplock/zookeeper:3.4.6 "/opt/zookeeper/bin/z" 3 minutes ago Up 3 minutes 2181/tcp, 2888/tcp, 3888/tcp adoring_raman
$
“CONTAINER ID“を調べ、`exec`コマンドを利用する。まずはコピー前のファイルを確認。
$ docker exec -i 72de143ca974 cat /opt/zookeeper/conf/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
:
$
ローカルにコピーしたいファイルを準備。わかりやすいように下記にしている。
$ cat copy.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
$
このファイルをコピーする。
$ docker exec -i 72de143ca974 /bin/bash -c "cat > /opt/zookeeper/conf/zoo.cfg" < copy.cfg
$
確認。
$ docker exec -i 72de143ca974 cat /opt/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
$
コピーできたようだ。
$ docker exec -i [CONTAINER ID] /bin/bash -c "cat > [コピー先ファイル]" < [コピー元ファイル]
以上。