0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

snap で完全オフライン Ubuntu に docker 環境を作る方法のまとめ

Posted at

背景

完全にオフラインな Ubuntu で Python を動かしたいという場面に遭遇しました。完全オフラインサーバなので pip も使えず、必要なモジュールをインストールすることは不能。そこでオンラインサーバでスクリプトをコンテナ化し、オフラインサーバでコンテナを起動する方法を考えたのですが、そもそもオフラインサーバなので docker のインストールもできず。

そこでオンラインサーバで docker の snap ファイルをダウンロードし、オフラインサーバにインストールする方法を試したとろ、上手くいったのでその方法のまとめです。

オンライン Ubuntu でファイルをダウンロード

まずオンラインの Ubuntu で docker の snap パッケージをダウンロードします。ここで、docker の snap パッケージだけダウンロードすれば良さそうに思えますが、Ubuntu のバージョンが違うと snap のバージョンが合わず動かなかったりするので snap, core22, docker の 3 つのファイルを落としておきます。

実際の出力は下記のようになります。

root@localhost:~# snap download snapd
Fetching snap "snapd"
Fetching assertions for "snapd"
Install the snap with:
   snap ack snapd_23258.assert
   snap install snapd_23258.snap
root@localhost:~# 
root@localhost:~# snap download docker
Fetching snap "docker"
Fetching assertions for "docker"
Install the snap with:
   snap ack docker_2963.assert
   snap install docker_2963.snap
root@localhost:~# 
root@localhost:~# snap download core22
Fetching snap "core22"
Fetching assertions for "core22"
Install the snap with:
   snap ack core22_1722.assert
   snap install core22_1722.snap
root@localhost:~# 

下記のようなファイルがダウンロードされますので、これをオフラインサーバにコピーします。

root@localhost:~# ls -lh
total 258M
-rw-r--r-- 1 root root 4.5K Dec 23 04:17 core22_1722.assert
-rw------- 1 root root  74M Dec 23 04:17 core22_1722.snap
-rw-r--r-- 1 root root 5.1K Dec 23 04:17 docker_2963.assert
-rw------- 1 root root 140M Dec 23 04:17 docker_2963.snap
-rw-r--r-- 1 root root 4.5K Dec 23 04:16 snapd_23258.assert
-rw------- 1 root root  45M Dec 23 04:16 snapd_23258.snap

オフライン Ubuntu でインストール

オフラインサーバでは、下記の順序でコマンドを実行するだけです。

snap ack snapd_23258.assert
snap install snapd_23258.snap
snap ack core22_1722.assert
snap install core22_1722.snap
snap ack docker_2963.assert
snap install docker_2963.snap

これだけで docker が使えるようになります。簡単ですね!

最後に

上記の方法で Ubuntu 20.04, 22.04, 24.04 すべてのオフライン Ubuntu に docker 環境を構築することができました。あとはスクリプトをコンテナイメージにしてコピーすればどの環境でも動作します。改めてコンテナの便利さを実感しました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?