Dockerイメージをオフラインでも使いたい

Web上の各種”やってみた”系情報はインターネットに接続できる環境で簡単に環境構築したという話が多いですが、実環境ではセキュリティの観点からインターネットに接続できない環境は多いです。（接続できるのが羨ましいです・・）
今回は、インターネットに接続できない環境でもDocker公式リポジトリからDockerイメージを取得して使用したいというときの方法について記載します。

# 使用環境

ダウンロード用PC：インターネットに接続可能な環境。Windows10にDocker（version 17.09.0-ce）導入済み。
Docker環境：ダウンロード用PCとは疎通可能だが、インターネットには接続できない環境。Ubuntu上にDocker（version 17.03.2-ce）導入済み。

#やってみた

まずイメージダウンロード用PC上でDocker pullコマンドを使用してイメージを取得します。
下記例ではwordpressを取得する例を示します。

```ruby:＠ダウンロード用PC
PS C:\Users\User01> docker pull wordpress
Using default tag: latest
latest: Pulling from library/wordpress
85b1f47fba49: Pull complete
d8204bc92725: Pull complete
92fc16bb18e4: Pull complete
31098e61b2ae: Pull complete
f6ae64bfd33d: Pull complete
003c1818b354: Pull complete
a6fd4aeb32ad: Pull complete
a094df7cedc1: Pull complete
e3bf6fc1a51d: Pull complete
ad235c260360: Pull complete
edbf48bcbd7e: Pull complete
fd6ae81d5745: Pull complete
69838fd876d6: Pull complete
3186ebffd72d: Pull complete
b24a415ea2c0: Pull complete
225bda14ea90: Pull complete
d47a53aaaacc: Pull complete
ce9b97a033e9: Pull complete
Digest: sha256:6216f64ab88fc51d311e38c7f69ca3f9aaba621492b4f1fa93ddf63093768845
Status: Downloaded newer image for wordpress:latest
PS C:\Users\User01>
PS C:\Users\User01> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wordpress           latest              fcf3e41b8864        31 hours ago        408MB

```

続いて、イメージを転送するためにアーカイブします。

```ruby:＠ダウンロード用PC
PS C:\Users\User01> docker save -o wordpress.tar wordpress
```

すると使用ユーザーのホームディレクトリ（C:\Users\User01）内にアーカイブしたファイル”wordpress.tar”ファイルが作成されます。

```ruby:＠ダウンロード用PC
PS C:\Users\User01> dir wordpress.tar


    ディレクトリ: C:\Users\User01


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2017/11/06     15:35      421605888 wordpress.tar

```

アーカイブしたファイルをDocker実行環境に転送したあと、次のコマンドでイメージをロードします。

```ruby:Docker環境
root@docker01:/tmp# docker load -i wordpress.tar
37412c153883: Loading layer [==================================================>] 204.7 MB/204.7 MB
c3d26400d3ff: Loading layer [==================================================>] 3.584 kB/3.584 kB
5cd2e0cfe892: Loading layer [==================================================>] 8.552 MB/8.552 MB
2c3aa4e96952: Loading layer [==================================================>] 10.24 kB/10.24 kB
4c0354ed71f4: Loading layer [==================================================>] 9.728 kB/9.728 kB
2f6273a5f133: Loading layer [==================================================>] 4.096 kB/4.096 kB
dcdbe9fe2ca1: Loading layer [==================================================>]  7.68 kB/7.68 kB
a9aa8861270e: Loading layer [==================================================>] 13.87 MB/13.87 MB
fa7f9311a060: Loading layer [==================================================>] 4.096 kB/4.096 kB
61a961ab5d2b: Loading layer [==================================================>] 33.01 MB/33.01 MB
8933dc910eee: Loading layer [==================================================>] 11.78 kB/11.78 kB
493137409f3e: Loading layer [==================================================>] 4.608 kB/4.608 kB
749e8aaa7dd4: Loading layer [==================================================>] 6.892 MB/6.892 MB
6594bf4ea5b9: Loading layer [==================================================>] 4.608 kB/4.608 kB
24605e7ca88b: Loading layer [==================================================>] 7.168 kB/7.168 kB
4f2aeb865fa0: Loading layer [==================================================>] 25.14 MB/25.14 MB
2ff5b2ab6416: Loading layer [==================================================>] 10.24 kB/10.24 kB
Loaded image: wordpress:latest

```
これでイメージのロードは完了です。最後にイメージの登録を確認します。

```
root@docker01:/tmp# docker images | grep wordpress
wordpress                                   latest              fcf3e41b8864        33 hours ago        408 MB

```

#参考リンク

docker save
https://docs.docker.com/engine/reference/commandline/save/

docker load
https://docs.docker.com/engine/reference/commandline/load/