Synology DSM 7.2にて、「Docker」パッケージが「Container Manager」パッケージと名称変更されており、インターフェースが一新されました。
具体的な相違点について調査しました。
前提 本記事でのDSM(OS)バージョンは、Synology DSM 7.2 を用いています。
1.コンテナマネージャのユーザーインターフェース
1-1.概要
コンテナマネージャを起動すると「概要」という画面が初期表示されます。コンテナの状態(正常・警告・エラー)や、イメージの数やトータルサイズ、使用の有無やアップデートの有無が表示されます。また、コンテナによるリソースの使用量(CPU/RAM/ネットワーク)が表示されています。
1-2.プロジェクト
左メニューから[プロジェクト]を選択すると、プロジェクト画面が表示されます。こちらの画面からはdocker-composeによる、複数コンテナで構成されるアプリケーションを定義ファイルで簡単に起動させる仕組みが搭載されています。
docker-compose自体はDSM7.2以前でもコマンドラインでは実行することが可能でしたが、DSM7.2の「Container Manager」ではGUI画面から機能を使用することが可能となりました。
詳細については3節に記載しています。
1-3.コンテナ
左メニューから[コンテナ]を選択すると、稼働中のコンテナの一覧画面が表示されます。[作成]釦より新規コンテナの作成や、[操作]釦で稼働中のコンテナの操作(停止・再起動・削除等)が行えます。
従来のDSM7.1までのDockerアプリケーションとの相違点として、コンテナマネージャでは、コンテナの状態表示が追加されています。正常であれば緑色、警告時はオレンジ、エラー発生時は赤の表示が行われます。
稼働中のコンテナを選択して、コンテナの各種情報表示が行えます。[全般]タブでは、コンテナの全般の情報が表示されます。定義された環境変数などもこちらで確認することが可能です。
[統計]タブでは、コンテナのリソース使用状況(CPU/RAM/ネットワーク)が表示されます。
[ログ]タブでは、コンテナの出力ログが表示されます。エラー発生時の内容確認等に必要となります。
[設定]タブでは、コンテナの設定を変更することが出来ます。ただしコンテナが停止中である必要があります。
1-4.イメージ
左メニューから[イメージ]を選択すると、ダウンロードしたイメージ一覧が表示されます。こちらにはイメージ更新機能が追加されています。イメージ更新機能については2節にて説明します。
ダウンロードしたイメージを指定してコンテナを新規作成することも可能です。([コンテナ]画面からの操作と同様となります。)
1-5.その他画面
[レジストリ]画面では、Docker Hubなどのコンテナリポジトリからイメージファイルをダウンロードすることが出来ます。ダウンロードしたイメージファイルは[イメージ]画面で確認することが出来ます。本画面については以前の[Docker]パッケージと機能相違はありません。
[ネットワーク]画面では、Dockerで使用するネットワークの設定・管理を行うことが出来ます。本画面についても以前の[Docker]パッケージと機能相違はありません。
[ログ]画面では、[コンテナマネージャ]から出力された各種ログを参照することが出来ます。本画面についても以前の[Docker]パッケージと機能相違はありません。
2.イメージ更新機能
[イメージ]画面で、ダウンロード済のイメージ一覧が表示されていますが、リポジトリに最新バージョンがアップロードされると、ダウンロード済のイメージに「アップデートがあります」というリンクが表示されます。本リンクをクリックすることにより、下のようなダイアログが表示され、[アップデート]をクリックすることにより、イメージの更新と、コンテナの再起動を実行することが出来ます。
注意喚起のダイアログが表示されますので、問題ないことを確認の上、再度[アップデート]をクリックします。
イメージが最新バージョンで更新されます。この後、コンテナもダウンロードした最新バージョンのイメージで再生成されます。
3.コンテナマネージャのプロジェクト機能詳細
前述した通り、[Container Manager]では、docker-composeによる、複数コンテナで構成されるアプリケーションを定義ファイルで簡単に生成できる仕組みが機能として新規追加されました。
事例として、WordpressによるWebサイトを生成する手順を紹介します。
まず、[プロジェクト]画面より、[作成]をクリックします。
[プロジェクトを作成]ダイアログが表示されますので、必要事項を入力していきます。
- プロジェクト名:本プロジェクトの名称を入力します。
- パス:プロジェクトのカレントディレクトリを入力します。本ディレクトリ以下にdocker-compose.ymlが生成されます。
- ソース:生成済のdocker-compose.ymlをアップロードする方法と、GUIエディタ画面からdocker-compose.ymlの内容を作成する方法があります。後者を実施してみます。
GUIエディタ画面が表示されるので、docker-compose.ymlの内容を入力していきます。
docker-compose.ymlの内容は以下の通りです。
wordpress、mysql、redisを実行する構成としています。
マウントしているファイルはこちらの記事で説明しているものです。
version: '3.9'
services:
wordpress:
image: wordpress:latest
container_name: host0_wp
hostname: wordpress
healthcheck:
test: curl -f http://localhost:80/ || exit 1
ports:
- 8080:80
depends_on:
db:
condition: service_started
redis:
condition: service_healthy
volumes:
- /volume1/docker/host0/wp:/var/www/html:rw
- /volume1/docker/host0/conf/php.ini:/usr/local/etc/php/conf.d/php.ini:ro
- /volume1/docker/host0/conf/headers.load:/etc/apache2/mods-enabled/headers.load:ro
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
restart: on-failure:5
db:
image: mysql:5.7
container_name: host0_db
security_opt:
- no-new-privileges:true
hostname: db
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -P 3306 -proot | grep 'mysqld is alive' || exit 1"]
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_ROOT_PASSWORD: root
TZ: Asia/Tokyo
volumes:
- /volume1/docker/host0/db:/var/lib/mysql:rw
restart: on-failure:5
redis:
image: redis/redis-stack:latest
hostname: redis
container_name: host0_redis
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
environment:
TZ: Asia/Tokyo
restart: on-failure:5
リバースプロキシでWebサイトに連携する方法とするため、Webポータル設定はそのままとして[次へ]をクリックします。
要約画面で入力内容が一覧されるので、[完了]をクリックします。
ターミナルが表示され、docker-composeの実行状況が逐次表示されます。ターミナルは[閉じる]釦で非表示にできますが、非表示としてもdocker-composeの実行に特に支障はありません。
docker-composeが完了し、コンテナ生成に問題が無ければ、[プロジェクト]画面上で、生成したプロジェクトが表示されます。状態表示は各コンテナの集約が表示されます。
[コンテナ]画面では、プロジェクトによって生成された各個別のコンテナが表示されます。
プロジェクト単位でコンテナの管理が可能です。プロジェクトで作成したコンテナは、まとめて操作することが出来ます。例えば、コンテナを削除する場合は、プロジェクトの[操作]>[削除]を選択します。
注意喚起ダイアログが表示されますので、内容を確認して[削除]をクリックします。この後、コンテナが纏めて削除されます。
4.まとめ
Synology DSM7.2でリリースされた「Container Manager」について、新規機能を中心に紹介しました。
プロジェクト機能は、コンテナを本格的に活用するのであれば必須な機能であると感じました。
以上、最後まで記事を読んでいただき、ありがとうございました。