ページ

2021年11月23日火曜日

オフライン環境でDockerを使う.コンテナイメージをエクスポート・インポートする方法

今更だが最近,Dockerを使い始めた.
便利という話は聞いていたが,予想以上の代物でもっと早く使えば良かったと思う今日この頃.

しかし,世の中にはネットに繋がっていない(繋げられない)残念な開発環境も少なくない.
そんな環境でもDockerを使うため,コンテナのイメージをエクスポート/インポートする方法を調べた.

我が家のDebianでイメージを作成し,それをRedHat に取り込んで問題なく動いたので,
大抵のディストリビューションで可能な方法だと思う.

まずは,Debian でコンテナイメージを作成する.

Docker をインストールしていなければ,apt install し,自分のユーザをdockerグループに追加する.
 $ sudo apt install docker
 $ sudo apt install docker.io
 $ sudo usermod -aG docker [Dockerを使うユーザ名]

次にDockerfileを用意する.オフライン環境にインポートするので,必要なパッケージは今のうちにインストールしておく.
 $ cat Dockerfile
 FROM centos:centos8
 RUN yum update -y
 RUN yum groupinstall -y 'Development Tools'

Dockerfile を保存したらイメージをビルドする.
 $ docker build -t centos:centos8_update .

ビルドしたイメージをエクスポートする.
 $ docker save centos:centos8_update > CentOS8_Update.tar

エクスポートされたイメージはtar 形式で容量が大きいので圧縮する.
 $ gzip CentOS8_Update.tar

圧縮したファイルをオフライン環境にコピーし,解凍・インポートする.
 $ gunzip CentOS8_Update.tar.gz
 $ docker load < CentOS8_Update.tar

docker images コマンドで無事にインポートできたか確認する.
 $ docker images
 REPOSITORY   TAG              IMAGE ID       CREATED          SIZE
 centos       centos8_update   xxxxxxxxxxxx   13 minutes ago   1.49GB


ところで,本記事では取っ付きやすさのため,エクスポート/インポートという表現を用いたが,正確にはセーブとロードである.

Dockerにはexportとimportというコマンドが別にあり,こっちはイメージではなく,コンテナ自体をエクスポート/インポートするコマンドらしい.(使ったことがないので詳細は割愛)

0 件のコメント:

コメントを投稿