12
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker非対応のNAS上でDockerを動かしてみた

Posted at

はじめに

以前から所持していた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へアクセスし、管理者権限でログインします。
1_Login.png

コントロール パネルを開き、「端末とSNMP」を選択します。
2_ControlPanel.png

『SSHサービスを有効化する。』にチェックを入れ、「適用」を押します。
3_SNMPSSH.png

これで、クライアントからNASへの接続が可能となります。

SSH接続確認

今回はMacOSから操作を行いました。
Windowsからの接続はTeraTermを利用するとよいかと思います。

Terminalを起動します。
4_Terminal.png

以下コマンドを実行します。

ssh
ssh <接続するNASのユーザー名>@<接続するNASのIPアドレス>

NASのパスワードを入力します。
5_SSHLogin.png

セッションが確立されたことを確認します。
6_SSHConnect.png

切断は以下コマンドを実行します。

exit
exit

Dockerのインストール

Dockerバイナリのダウンロード

今回インストール対象のNASのアーキテクチャはaarch64でした。
以下からDockerのバイナリを確認します。
(必要に応じて、最新版を選択してください。)
Index of linux/static/stable/aarch64/
アーキテクチャはNASにSSH接続し、以下コマンドで確認ができます。

uname
uname -m
# aarch64

NASにSSH接続し、以下コマンドを実行します。

curl
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で記載いたします。不具合があれば、ご報告いただけると助かります。

tar
sudo tar xzvf /usr/local/temp/docker -C /usr/local/bin

Dockerの構成

Dockerデーモンの構成ファイルをJSON形式で作成します。
以下のコマンドで構成ファイルを手動で作成します。

vi
sudo mkdir /etc/docker
sudo vi /etc/docker/daemon.json

構成ファイルは以下の通りの内容を記述します。

daemon.json
{
    "data-root": "/docker",
    "storage-driver": "vfs",
    "iptables": false,
    "bridge": "none"
}

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

mkdir
sudo mkdir -p /volume1/@Docker/lib
sudo mkdir /docker

Dockerデーモンの起動設定

Dockerデーモンの起動設定を行います。

SSH接続を有効化と同じ手順で、WebブラウザにてNASへ接続します。
7_NASWeb.png

コントロールパネルを開き、「タスク スケジューラー」を選択します。
8_ControlPanel.png

「作成」→「トリガーされたタスク」→「ユーザー指定のスクリプト」を選択します。
9_TaskScheduler.png

『全般』タブは以下のような要領で入力します。
10_TaskConfig1.png
タスク:なんでもOK
ユーザー:root
イベント:ブートアップ
プリタスク:指定なし
有効:非アクティブ(起動できなくなる恐れもあると思った為、動作確認に問題がなければ有効に切り替えます)

『タスク設定』タブは以下のような要領で入力し、「OK」を押します。
11_TaskConfig2.png
通知:お好みで設定してください
コマンドを実行:以下のコマンドを指定

dockerd
mount -o bind "/volume1/@Docker/lib" /docker
dockerd

「実行」を選択し、「はい」を選択します。
12_TaskRun.png

NASへSSH接続されたTerminalから以下コマンドを実行し、エラーなく出力されることを確認します。

docker
docker run hello-world

13_HelloWorld.png

動作確認

WebブラウザにてNASへ接続し、タスクスケジューラーにて先程作成したタスクを有効化します。
14_TaskEnabled.png

NASを再起動します。
15_reboot.png

再起動完了後、TerminalからNASへSSH接続し、以下コマンドを実行し、エラーなく出力されることを確認します。

docker
docker run hello-world

13_HelloWorld.png

以下コマンドを実行し、/dockerディレクトリ内が空でないか確認します。

ls
sudo ls /docker

16_Exist.png

以上で完了です。
お疲れさまでした。

12
4
1

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
12
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?