第480回ではウェブブラウザーベースのシステム管理ツールであるCockpitを紹介しました。このCockpitにはDockerコンテナや仮想マシンを管理するUIも備わっています。今回はCockpitを使って、Dockerコンテナを操作する方法を紹介しましょう。
UbuntuでDockerをインストールするもうひとつの方法
さらに遡ること半年弱、第458回では「UbuntuでDocker再入門」と題してUbuntuでDockerをインストールするいくつかの方法を紹介しました。今一度、その方法を列挙しておきましょう。
- Docker公式のdocker-ceパッケージをインストールする方法
- Ubuntu公式リポジトリにあるdocker.ioパッケージをインストールする方法
- snapを使ってdockerパッケージをインストールする方法
第458回ではそれぞれの選択基準を次のように紹介しました。
- Docker公式のdocker-ceパッケージ
- 常に最新版のDockerを使いたい場合[1]
- Ubuntuリポジトリのdocker.ioパッケージ
- 最新版であることにこだわりがない、LXD上でDockerを使いたい場合
- snap版のdockerパッケージ
- snapの技術的デモという位置づけ、通常は使用しない
Docker公式パッケージについてはインストール手順が若干変わっています。主にリポジトリのURL、公開鍵の取得先、それにパッケージ名が変更点です。今から新規にインストールするのであれば、この手順にあわせておきましょう(第458回も新しい手順に修正済みです)。また、Ubuntuリポジトリのdocker.ioパッケージについては大きな変更点はありません。CanonicalがKubernetesにもリソースを注いでいるため、今後もそれなりのメンテナンスはされるはずです。
そしてsnap版のパッケージについては「通常は使用しない」ということで前回は紹介を省きました。しかしながらその位置づけが現在では大きく変わっています。まずパッケージの提供元が「Docker, Inc.」になりました。ソースパッケージもGitHubのDockerチームのリポジトリで管理されています[2]。その結果、特にリポジトリを追加することなく比較的新しいバージョンを試せます。ただしLXD上ではまだきちんと動くようにはなっていません。Ubuntu
CoreのようなRaspberry Pi2やNextcloud Box上で動くマシンでもDockerを試したい時に、有力な選択肢のひとつになるはずです。
そこで、実際にsnap版のDockerをインストールする方法も紹介しておきましょう。まずsnap版のDockerにはいくつかのバージョンがあります。普通にインストールするとstableの「17.06.0-ce-1」がインストールされます[3]。またまもなく「17.06/candidate」チャンネルには、Docker本家としては既にリリースされているリリース候補版の「17.06.1-ce-rc1」が用意される予定です。これは17.06.1-ceが正式にリリースされたら、snapリポジトリのstableチャンネルへと移行するはずです。
今回はstableの「17.06.0-ce-1」を使います。
一般ユーザーの権限でdockerコマンドを実行するためには、上記のように別途dockerグループを作成し、そのユーザーを追加する必要があります。ヘルプどおりにインストールする前でもかまいませんが、インストールしたあとに作成した場合であっても、一度デーモンを再起動すれば問題ありません。
第458回のようにProxyの設定を行う場合、snapパッケージではサービスファイルのパスが異なるため注意してください。次のように設定します。
あとの使い方は普通のDockerと同じです。
ちなみにdocker.compose
コマンドやdocker.machine
コマンドも一緒にインストールされます。コマンド名がハイフンではなくピリオドになっていることに注意してください。
CockpitのDockerインターフェース
第480回の手順に従ってCockpitをインストール済みであれば、cockpit-dockerパッケージをインストールするだけでDockerインターフェースが追加されます。
cockpit-dockerパッケージは推奨パッケージとしてdocker.ioもしくはdocker-engineパッケージ、docker-ceを指定しています。つまり「--no-install-recommends
」を指定しないと、docker.ioパッケージ(UbuntuリポジトリのDockerパッケージ)かdocker-engineパッケージ(バージョンルールが変わる前のDocker公式パッケージ)かdocker-ceパッケージ(バージョンルールが変わったあとのDocker公式パッケージ)のいずれかをインストールしようと試みます。これらのいずれかのパッケージを使っているのであれば「--no-install-recommends
」は不要です。snap版のパッケージを使っている場合もしくはソースから自分でDockerをビルドしてインストールした場合はこのオプションが必要になります。
これだけでCockpitにインターフェースが追加されます。実際にログインしてみましょう。
「Containers」では、コンテナの実行中のリソース使用量の表示やコンテナ・イメージの管理を行えます。Dockerをインストールした直後であれば、何もない状態のはずです。「Get new image」をクリックして、まずはイメージを取得(pull)しましょう。
ダイアログで検索し、取得したいイメージをクリックします。左下のタグフィールドには取得するイメージのタグが自動で入力されます。別のタグのイメージを取得したい場合は、適宜変更してください。「Download」ボタンで取得を開始します。
イメージの名前の部分をクリックすると、イメージの管理画面が表示されます。イメージを削除したい場合はこの管理画面に遷移してください。またイメージフィールドにはRunアイコン(再生ボタン)が存在します。このボタンをクリックすると、このイメージを起動(run)します。
起動時のオプションも管理インターフェースから指定可能です。具体的には「docker image inspect イメージ
」で表示されるオプションを一通り設定できます。また各フィールドには初期設定値が入力されていますので、このまま起動することも可能です。
RStudio Serverを起動する「tokyor/rstudioコンテナ」の場合、Portsの8787をホストの適当なポートに指定しておけば「http://(cockpitが動いているマシンのアドレス):(指定したポート番号)」でRstudio Serverにアクセスできるようになります。またVolumesを適切なディレクトリにマウントしておけば、RStudio Server上の編集結果をローカルディスクに残せるでしょう。「Restart
Policy」はコンテナが終了したときに再起動するかどうかを設定します。RStudio Serverのようなデーモンの場合は、再起動するように設定してもいいかもしれません。
Runボタンでコンテナが起動します。
詳細画面では、起動したコンテナの情報やコンソールログ、リソースの情報が表示されます。またコンテナの停止や再起動、削除もこの画面から設定可能です。一時的なリソース制限の変更も可能なので、特定のコンテナが暴走したときにも便利でしょう。
表示されるIPアドレスはコンテナそのもののIPアドレスです。このアドレスに直接アクセスできる環境であれば、つまりDockerデーモンが動いているホストマシン上からアクセスするのであれば、このIPアドレスをウェブブラウザーに入力すればRStudio Serverの画面を表示できます。また、Portsフィールドにあるように、ポート8787をホストマシンのポート8787にマップしているので、ホストマシンの外からホストマシンのアドレスを指定することでもアクセス可能です。
実際にウェブブラウザーのアドレスフィールドに「http://(cockpitが動いているマシンのアドレス):(指定したポート番号)」を入力してアクセスしてみましょう。
このようにCockpitを使えば、CUIでdockerコマンドを打つことなくDockerコンテナを管理できます。