dockerイメージの保存と反映方法

dockerを使用していると、自分のPCのdockerイメージを別のPCに持って行って使用したいということがたまにあります。


イメージのファイルがどこかに保存されているはずだから、それをコピーしちゃえば良いと思いやってみると

# dockerイメージがあるフォルダに移動
$ cd /var/lib/docker/
-bash: cd: /var/lib/docker/: Permission denied

Permission deniedで怒られてしまいアクセスできません。。
ということで色々と調べてみると、dockerイメージの保存と反映はdockerコマンドでやることが分かりました。

1.dockerイメージを保存する

私のPCのイメージ一覧に登録されているbusyboxのイメージを保存する方法で説明します。

# 登録されているイメージ一覧を確認
$ docker images
REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
busybox            1.34.1    7a80323521cc   11 days ago     1.24MB

# 保存したいリポジトリ名とタグを指定してsave
$ docker save busybox:1.34.1 > busybox.tar

# 保存されたか確認
$ ls
busybox.tar

ちなみに、同じリポジトリ名のイメージが複数登録されている場合、タグ指定しないと同じリポジトリ名のイメージがまとめられて保存されます。
1つだけ保存したい場合はタグ指定してください。

# 複数busyboxのリポジトリがあるとまとめられて保存される
$ docker save busybox > busybox.tar

# タグ指定してるので1つだけ保存される
$ docker save busybox:1.34.1 > busybox.tar

これでイメージの保存は完了です。

2.dockerイメージを反映する

1で保存したdockerイメージファイル(.tar)を反映したいPCにコピーして、以下のコマンドを実行してください。

# tarファイルからロードする
$ docker load < busybox.tar
084326605ab6: Loading layer [==================================================>]  1.463MB/1.463MB
Loaded image: busybox:1.34.1

# 反映できたか確認
$ docker images
REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
busybox            1.34.1    7a80323521cc   11 days ago     1.24MB

これで無事にdockerイメージの保存と反映ができました。