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?

リモートのdockerでEarthlyを実行する

Last updated at Posted at 2024-05-18

TL;DR

サーバー側でDockerデーモンをtcpで公開し、ファイアウォールの設定を適宜行った後、Earthlyを実行するクライアント側で環境変数DOCKER_HOSTにサーバーのアドレスを設定するとリモートのDocker上でビルドを走らせることができる。

経緯

出先のノートパソコン(16GB RAM)で開発をする際、Earthlyを動かすためにDocker DesktopをIDEやブラウザと同時に起動するとRAM不足に陥ってしまった。また、ノートパソコンを閉じている間に時間のかかるビルドプロセスを実行できると何かと便利なため、自宅に設置したサーバーのDocker上でビルドを行えばよいと考えた。

実現方法

サーバーを直接公開するのは不安なので、Raspberry PiでVPNサーバーを立て、VPN経由でDockerサーバーに接続することとした。VPNサーバーを構築する過程については省略し、VPNなどでLANに接続できることを前提とする。

Dockerデーモンがtcpで公開は、/lib/systemd/system/docker.serviceの以下の項目で設定することができる。

/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// -H=tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock

この例ではデーモンがtcpのポート2375に公開されている。これを利用するため、適宜ファイアウォールの設定を行う。

sudo ufw allow 2375

次にクライアント側の設定を行う。設定といってもDOCKER_HOST=tcp://サーバーのアドレス:ポートという風に環境変数を設定するだけでよい。適切に環境を構築できたかどうかはクライアント側でdocker versionを実行することで確認できる。

// 設定前
>docker version
Client:
 Cloud integration: v1.0.35+desktop.11
 Version:           25.0.3
 API version:       1.44
 Go version:        go1.21.6
 Git commit:        4debf41
 Built:             Tue Feb  6 21:13:02 2024
 OS/Arch:           windows/amd64
 Context:           default

Server: Docker Desktop 4.28.0 (139021)
 Engine:
  Version:          25.0.3
  API version:      1.44 (minimum version 1.24)
  Go version:       go1.21.6
  Git commit:       f417435
  Built:            Tue Feb  6 21:14:25 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.28
  GitCommit:        ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

>set DOCKER_HOST=tcp://192.168.1.10:2375
//設定後
>docker version
Client:
 Cloud integration: v1.0.35+desktop.11
 Version:           25.0.3
 API version:       1.41 (downgraded from 1.44)
 Go version:        go1.21.6
 Git commit:        4debf41
 Built:             Tue Feb  6 21:13:02 2024
 OS/Arch:           windows/amd64
 Context:           default

Server:
 Engine:
  Version:          20.10.25
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.1
  Git commit:       20.10.25-0ubuntu1~22.04.1
  Built:            Thu Jun 29 21:21:05 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.2
  GitCommit:
 runc:
  Version:          1.1.7-0ubuntu1~22.04.2
  GitCommit:
 docker-init:
  Version:          0.19.0
  GitCommit:

これでサーバーのDockerを利用するように設定できたので、Docker DesktopやWSLを終了しメモリを節約することができる。

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?