Docker非対応のSynologyにDockerをぶち込む
はじめに
SynologyのパッケージにはDockerが存在します。
※DSM7.2から、「Container Manager」という名前に変更された模様
ただし使用できるかは機種によります。
SynologyのContainer Managerパッケージ対応機種一覧
今回はDocker非対応の「Synology DS218play」に、「Docker」をぶち込みます!
製品型番 | DSMバージョン |
---|---|
DS218play | DSM 7.1-42661 Update 4 |
システムに関するところをいじるので、実施する場合は自己責任でお願いします。
Dockerのインストール
アーキテクチャの確認
インストールするSynologyのアーキテクチャを、以下コマンドで確認します。
uname -m
私の場合は「aarch64」でした。
Dockerのダウンロード
確認したアーキテクチャのDockerのバイナリのURLを確認します。
※バージョンは特に理由がなければ最新で大丈夫です。
確認した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 &
参考リンク
- AtsushiYokokawa
まとめ
Docker非対応のSynologyにDockerをぶち込んでみました。
さすがに非対応のため、いろいろ問題は起きます。
あくまで自己責任で。。。
ただ、使えるようになれば幅は限りなく広がります。
以上、ここまで見ていただきありがとうございます。
皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。