こんにちは。
今の世の中はどこでもインターネット接続可能な環境ですが、勤務している企業のセキュリティの兼ね合いなんかでインターネット接続できないオフライン環境もあると思います。そんな人向けにDocker-composeをオフライン環境に導入した方法をご紹介します。
1.前提環境
必要な機器は以下の通り。オンラインとオフラインでLinuxサーバーが存在することが前提です。
オフライン環境:Linuxサーバ
オンライン環境:Linuxサーバ
オフライン向け環境構築と言ってもインターネットに接続できないサーバが一台は必要です。オンライン環境がないとDocker等を導入できません。と言いつつもオンライン環境のLinuxサーバはファイルのダウンロード移送用なのでLinuxが動けば何でも良いのです。つまり、パソコン上に仮想サーバを導入してもらえれば十分です。
なお、私は、sudoコマンドでroot相当のコマンドを実行しています。
2.必要資材の入手
まずはオンライン環境で必要資材として以下を入手します。
- Docker
- Docker-compse
ここは特段変わったことがなく普通にダウンロードします。Dockerの方は普通のWindows端末のブラウザから入手可能です。
【Docker】
https://download.docker.com/linux/static/stable/x86_64/
⇒ 最新の .tgz をダウンロードします。
【Docker-compose】
以下のコマンドで入手します。
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compos
入手した資材をどうにかしてオフライン環境へ移送してください。
3.オフライン環境でDocker環境を構築する
オフライン環境でDockerファイルを展開してDocker環境を構築します。
tar zxvf docker-19.03.2.tgz # docker本体を解凍。ファイルverは変更要。
sudo cp docker/* /usr/bin # bin配下にdocker資材を展開
sudo dockerd & # プロセスを起動する
sudo ps -ef | grep [d]ocker # dockerプロセスが起動していることを確認する
続いてDocker-composeを展開します。こちらも簡単。
cp docker-compose /usr/local/bin/ # bin配下にdocker-composeをコピー
sudo chmod +x /usr/local/bin/docker-compose # 実行権限を付与
sudo docker-compose -v # バージョンが表示されること
これでDocker環境のとりあえずの構築は完了です。
4.オフライン環境へdocker-imageを移送する。
ネット上で公開されているdocker-imageをオフライン環境で使用したい場合は以下の手順を行います。
<オフライン環境>
- Dockerイメージをdocker-hubから入手
- Dockerをイメージ化
- イメージをセーブ(今回はtar)
コマンドベースですと以下となります。xxxxはイメージ名です。
docker pull xxxxx:latest # イメージをpullして入手
docker images # イメージがpullできたか確認する
docker save xxxxxx > helloworld_img # イメージをsave
tar zcvf xxxxx.tar.gz xxxxx_img # tar.gzに圧縮
オフライン環境へイメージはロードします。そしてさらにtagを固定値に変更します。タグがlatestだとcompserで起動する際にオフライン環境にも関わらずネット上に最新版がないか確認しようしてエラーとなります。私は適当tagは1とかに変更しています。
tar zxvf xxxxxx_img.tar.gz # tar.gzの解凍する
docker load < xxxxx_img # dockerイメージをloadする
docker images # イメージが存在することを確認。image名を確認
docker tag [対象イメージ名:タグ] [変更後イメージ名:タグ]
後は通常通りdocker-compose up -d コマンドでimageをup可能です。お疲れ様でした。