はじめに
以前から所持していたSynology DS420j上でDockerを動かしてみました。
SynologyのパッケージとしてDockerは提供されておりますが、DS420jは公式ではサポート外となっていた為、無理やり動かしています。
Docker - アドオン パッケージ | Synology Incorporated
手順は以下を参考にしました。
Can I install Docker on arm8 based Synology Nas - Stack Overflow
※NASのシステム層をいじくるので、データ破損してしまった場合、復旧できなくなる可能性があります!
実施する場合はくれぐれも注意し、自己責任でお願いします。
手順
NASへのSSH接続を有効化
NASの設定
WebブラウザからNASへアクセスし、管理者権限でログインします。
コントロール パネルを開き、「端末とSNMP」を選択します。
『SSHサービスを有効化する。』にチェックを入れ、「適用」を押します。
これで、クライアントからNASへの接続が可能となります。
SSH接続確認
今回はMacOSから操作を行いました。
Windowsからの接続はTeraTermを利用するとよいかと思います。
以下コマンドを実行します。
ssh <接続するNASのユーザー名>@<接続するNASのIPアドレス>
切断は以下コマンドを実行します。
exit
Dockerのインストール
Dockerバイナリのダウンロード
今回インストール対象のNASのアーキテクチャはaarch64でした。
以下からDockerのバイナリを確認します。
(必要に応じて、最新版を選択してください。)
Index of linux/static/stable/aarch64/
アーキテクチャはNASにSSH接続し、以下コマンドで確認ができます。
uname -m
# aarch64
NASにSSH接続し、以下コマンドを実行します。
sudo mkdir -p /usr/local/temp
sudo curl -L <上記で確認したBinaryのURL> -o /usr/local/temp/docker
Dockerバイナリの配置
アーカイブファイルを/usr/local/bin配下に解凍します。
※私は/usr/bin配下に解凍してしまいました。。。本来なら/usr/local/binのほうが好ましいかと思いますので、ここでは/usr/local/binで記載いたします。不具合があれば、ご報告いただけると助かります。
sudo tar xzvf /usr/local/temp/docker -C /usr/local/bin
Dockerの構成
Dockerデーモンの構成ファイルをJSON形式で作成します。
以下のコマンドで構成ファイルを手動で作成します。
sudo mkdir /etc/docker
sudo vi /etc/docker/daemon.json
構成ファイルは以下の通りの内容を記述します。
{
"data-root": "/docker",
"storage-driver": "vfs",
"iptables": false,
"bridge": "none"
}
Dockerのルートディレクトリを作成しておきます。
sudo mkdir -p /volume1/@Docker/lib
sudo mkdir /docker
Dockerデーモンの起動設定
Dockerデーモンの起動設定を行います。
SSH接続を有効化と同じ手順で、WebブラウザにてNASへ接続します。
コントロールパネルを開き、「タスク スケジューラー」を選択します。
「作成」→「トリガーされたタスク」→「ユーザー指定のスクリプト」を選択します。
『全般』タブは以下のような要領で入力します。
タスク:なんでもOK
ユーザー:root
イベント:ブートアップ
プリタスク:指定なし
有効:非アクティブ(起動できなくなる恐れもあると思った為、動作確認に問題がなければ有効に切り替えます)
『タスク設定』タブは以下のような要領で入力し、「OK」を押します。
通知:お好みで設定してください
コマンドを実行:以下のコマンドを指定
mount -o bind "/volume1/@Docker/lib" /docker
dockerd
NASへSSH接続されたTerminalから以下コマンドを実行し、エラーなく出力されることを確認します。
docker run hello-world
動作確認
WebブラウザにてNASへ接続し、タスクスケジューラーにて先程作成したタスクを有効化します。
再起動完了後、TerminalからNASへSSH接続し、以下コマンドを実行し、エラーなく出力されることを確認します。
docker run hello-world
以下コマンドを実行し、/dockerディレクトリ内が空でないか確認します。
sudo ls /docker
以上で完了です。
お疲れさまでした。