ヘッダー画像

Docker非対応のSynologyにDockerをぶち込む

投稿 2022年8月28日 最終更新 2023年7月30日 専門用語多め

はじめに

SynologyのパッケージにはDockerが存在します。
※DSM7.2から、「Container Manager」という名前に変更された模様

ただし使用できるかは機種によります。

SynologyのDockerパッケージ対応機種一覧

SynologyのContainer Managerパッケージ対応機種一覧

今回はDocker非対応の「Synology DS218play」に、「Docker」をぶち込みます!

製品型番 DSMバージョン
DS218play DSM 7.1-42661 Update 4

システムに関するところをいじるので、実施する場合は自己責任でお願いします。

Dockerのインストール

アーキテクチャの確認

インストールするSynologyのアーキテクチャを、以下コマンドで確認します。

uname -m

私の場合は「aarch64」でした。

Dockerのダウンロード

確認したアーキテクチャのDockerのバイナリのURLを確認します。
※バージョンは特に理由がなければ最新で大丈夫です。

aarch64のDockerバイナリ

確認したURLからダウンロードします。

私の場合は「aarch64」の「docker-20.10.17.tgz」をダウンロードします。

curl https://download.docker.com/linux/static/stable/aarch64/docker-20.10.17.tgz -o /tmp/docker.gz

Dockerバイナリの配置

ダウンロードしたバイナリファイルを配置します。

tar xzvf /tmp/docker.gz -C /tmp
mv -f /tmp/docker/* /usr/local/bin

Dockerデーモン構成ファイル

Dockerデーモン構成ファイルを作成します。

mkdir -p /etc/docker
vi /etc/docker/daemon.json

「/etc/docker/daemon.json」には、以下のように記述します。

{
  "data-root": "/volume1/@docker/lib",
  "registry-mirrors": [],
  "storage-driver": "vfs",
  "bridge": "none"
}

Dockerのルートディレクトリを作成します。

mkdir -p /volume1/@docker/lib

Dockerデーモン起動

dockerデーモンを起動します。

dockerd &

Docker起動確認

ここまでくれば、dockerコマンドが使用できるはずです。

一般的なdockerコマンドでエラーが出なければ成功です。

docker ps

Dockerデーモン起動設定

手動でデーモン起動が確認出来たら、自動で起動できるように設定します。

DSMのコントロールパネルから、タスクスケジューラーを開きます。

「作成」→「トリガーされたタスク」→「ユーザー指定のスクリプト」

全般タブ

設定項目 設定値
タスク お好きな名前
ユーザー root
イベント ブートアップ
プリタスク -
有効 チェック

タスク設定タブ

設定項目 設定値
通知 お好きなように
コマンドを実行 dockerd &

すでに別のブートアップタスクがあるのであれば、
コマンドの最終行にdockerdコマンドを追記してください。

ここまで来たら、もうDocker完成です。

Docker構成ファイルの詳細

上記で使用した「/etc/docker/daemon.json」

dockerデーモンの設定は、dockerdコマンド自体のオプションでも指定はできます。

やっていることは同じのため、設定ファイル基準で以下にまとめます。

設定項目 説明
data-root rootディレクトリの指定
registry-mirrors キャッシュレジストリURLを指定
storage-driver ファイルシステムを指定
bridge デフォルトのnetworkを指定

パッケージセンターからの手動インストールは不可?

パッケージセンターには、手動インストールができるところがあります。

公式ダウンロードセンターから、パッケージファイルがダウンロードできます。

近しい機種(DS218+)のDockerをダウンロードして、
手動インストールを試してみましたが、無理でした。
※以下のようなメッセージが出ました

「このパッケージは、DisStationのプラットフォームではサポートされていません。

または、現在DSMバージョンと互換性がありません。」

DSMのアップデートで起動不可になる可能性

DSMアップデートを行うことで、dockerdコマンドが失敗するようになることがあります。

Docker構成ファイルで作成した「daemon.json」は、
DSMバージョンにあった設定を行う必要があるようです。

そりゃ、非対応DSMにぶち込んでいるので、何かは起きますよね。

できる限りDSM最新バージョンで起動できる設定を、記載していく予定です。
※この記事を書く前ですが、一回変更しています。

DSM7.2-64570 「DSM7.2-64570」の場合

詳細は省略してコマンドだけ記載します。
※2023/07/15追記

curl https://download.docker.com/linux/static/stable/`uname -m`/docker-24.0.4.tgz -o /tmp/docker.gz
tar xzvf /tmp/docker.gz -C /tmp
mv -f /tmp/docker/* /usr/local/bin
curl -L https://github.com/docker/compose/releases/download/v2.19.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
mkdir -p /etc/docker
vi /etc/docker/daemon.json
{
  "data-root": "/volume1/@docker/lib",
  "registry-mirrors": [],
  "storage-driver": "vfs",
  "bridge": ""
}
mkdir -p /volume1/@docker/lib
dockerd &

まとめ

Docker非対応のSynologyにDockerをぶち込んでみました。

さすがに非対応のため、いろいろ問題は起きます。

あくまで自己責任で。。。

ただ、使えるようになれば幅は限りなく広がります。

以上、ここまで見ていただきありがとうございます。

皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。

コメント

この記事のコメントはありません。