前提・実現したいこと
「Docker/Kubernetes 実践コンテナ開発入門」に則ってDockerを学習中です。
Data Volumeコンテナで利用しているデータをホスト側にエクスポートした後、他のDockerホストにリストアしたい。
発生している問題・エラーメッセージ
以下に記したコマンドを入力したところ、出力先として指定したbusyboxコンテナの/tmpディレクトリには問題なくmysql-backup.tar.gzが出力されたが、/tmpディレクトリをカレントディレクトリにマウントできていない。
該当のソースコード
Docker Volumeで利用しているデータをホスト側にエクスポートする際のコマンド
$ docker container run -v `${PWD}`:/tmp \ --volumes-from mysql-data \ busybox \ tar cvzf /tmp/mysql-backup.tar.gz /var/lib/mysql
Data Volumeコンテナ用Dockerfileを作成
Dockerfile
1FROM busybox 2 3VOLUME /var/lib/mysql 4 5CMD ["bin/true"]
$ docker image build -t example/mysql-data:latest .
mysql-dataという名前をつけてData Volumeコンテナを実行
$ docker container run -d --name mysql-data example/mysql-data:latest
$ docker container run -d --rm --name mysql \ -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \ -e "MYSQL_DATABASE=volume_test" \ -e "MYSQL_USER=example" \ -e "MYSQL_PASSWORD=example" \ --volumes-from mysql-data \ mysql:5.7
実行中のmysqlコンテナにデータを挿入する
$ docker container exec -it mysql mysql -u root -p volume_test Enter password: mysql> CREATE TABLE user(id int PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci; INSERT INTO user (name) VALUES ('Reegan'), ('Cayden'), ('Faizaan');
データが挿入されていることを確認
$ docker container exec -it mysql mysql -u root -p volume_test Enter password: mysql> SELECT * FROM user; +----+---------------+ | id | name | +----+---------------+ | 1 | Reegan | | 2 | Cayden | | 3 | Faizaan | +----+---------------+ 3 rows in set (0.00 sec)
新たにbusyboxコンテナを実行し、Data Volumeコンテナにmysql-dataを指定、tarコマンドでアーカイブを行い、出力先の/tmpディレクトリをカレントディレクトリにマウントするコマンドを入力
$ docker container run -v `${PWD}`:/tmp \ --volumes-from mysql-data \ busybox \ tar cvzf /tmp/mysql-backup.tar.gz /var/lib/mysql
ターミナル上の出力
bash: /Users/<user_name>/ch03_4_2: is a directory tar: removing leading '/' from member names var/lib/mysql/ var/lib/mysql/volume_test/ (中略) var/lib/mysql/private_key.pem
エクスポート後カレントディレクトリでlsコマンドを打つと、
$ ls Dockerfile
mysql-backup.tar.gzがエクスポートされていない。
試したこと
mysql-backup.tar.gzがbusyboxコンテナ内の出力先として指定した/tmpディレクトリに出力されていることを確認。
$ docker container exec -it hungry_easley ls /tmp mysql-backup.tar.gz
補足情報(FW/ツールのバージョンなど)
macOS High Sierra-10.13.6
Docker CE-2.0.0.0-beta1-mac75 (27117)
回答2件
あなたの回答
tips
プレビュー