Ubuntu Weekly Recipe

第719回 UbuntuでDocker Desktop for Linuxを使う

この記事を読むのに必要な時間:およそ 6 分

DD4Lの起動とコンテナの管理

インストールが完了したら,Superキーを押して「docker」と検索し,DD4Lを起動してください。

図2 DD4Lの起動

図2

初回起動時は図3のような利用規約への同意画面が表示されます。DockerにはDocker Subscription Service Agreementというサブスクリプションサービス契約があり,Docker Desktopはこの影響を受けるプロダクトです。簡単に言えば,Docker Desktopは個人や中小企業での利用であれば無料ですが,一定の規模以上の企業で利用するのであれば,有償のサブスクリプション契約が必要になります。詳細は公式ブログを参照してください。

図3 Docker Subscription Service Agreementを確認した上で同意する必要がある

図3

問題がなければ「I accept the terms」にチェックを入れた上で,⁠Accept」をクリックしてください。DD4Lが起動すると,図4のような画面が開きます。

図4 DD4Lのホーム画面

図4

それでは実際にコンテナを起動してみましょう。ホーム画面にいくつか定番のコンテナイメージがリストアップされています。ここではUbuntuのイメージの「Run」をクリックしてみましょう。すると自動的にリポジトリからUbuntuのイメージがPullされ,コンテナインスタンスが起動します。

図5 Ubuntuコンテナが起動した状態。Launch terminalをクリックするとコンテナ内のシェルを取ることができる

図5

図6 裏側で動作しているのは普通のDockerのため,dockerコマンドで直接操作することもできる。これはdocker execを実行してターミナルからコンテナのシェルを取った例

図6

別のコンテナも起動してみましょう。今度はホーム画面から,NGINXのイメージの「Run」をクリックしてみます。すると図7のようなダイアログが表示されます。

図7 NGINXコンテナ起動時に表示されるダイアログ。NGINXで公開するホスト上のディレクトリを指定する

図7

NGINXはWebサーバーですから,コンテンツを公開するディレクトリが必要になります。ここで指定したホスト上のディレクトリをコンテナ内にマウントし,Webサーバーで公開できるという仕組みです。例えば以下のコマンドを実行し,~/wwwディレクトリ内に「hello, world」とだけ書かれたファイルを用意し,コンテナにマウントしてみます。

ディレクトリを作成し,シンプルなHTML(という名のテキスト)を用意してみた

$ mkdir ~/www
$ echo 'hello, world' > ~/www/index.html

コンテナが起動すると,今度はOverviewにURLが表示されました。このURL(localhost:55000)で,コンテナ内のNGINXにアクセスできます。

図8 NGINXコンテナが起動した状態。コンテナの標準出力に出力されている,サーバーのアクセスログが表示されている

図8

図9 http://localhost:55000にホストマシンのブラウザからアクセスした例。先ほど作成したindex.htmlが表示されているのがわかる

図9

左ペインから「Containers」をクリックすると,現在起動中のコンテナの一覧を表示できます。ここからコンテナの停止や再起動,削除といった管理が可能です。

図10 動作中のコンテナの一覧。UbuntuコンテナとNGINXコンテナが起動しているのがわかる

図10

「Images」をクリックすると,ローカルに存在するコンテナイメージを表示できます。ここではイメージのPullやリモートリポジトリへのPush,不要になったイメージの削除といったイメージの管理全般を行えます。イメージ名の右側に表示されているケバブメニューから「Inspect」をクリックすると,そのイメージがどのようにビルドされたかの履歴を確認できます。DockerHubへサインイン済みの場合は,リモートリポジトリの内容も参照できます。そして当然ですが,ここからイメージを選択してコンテナインスタンスを起動することもできます。

図11 イメージの一覧を表示した例。先ほど起動した際にPullされた,UbuntuとNGINXのイメージが確認できる

図11

図12 NGINXイメージの履歴を表示した例

図12

docker-composeを使う

DD4Lでは,デフォルトでCompose V2が使えます。docker-compose.ymlを用意して,⁠docker compose」コマンドを実行すれば,WebアプリコンテナとDBコンテナといった,複数のコンテナを簡単に管理できます。

注意点としては,Compose V1である従来のdocker-composeコマンドはインストールされていない点です。互換性の都合といった理由で,どうしてもdocker-composeコマンドを使いたい場合は,設定の「General⁠⁠→⁠Enable Docker Compose V1/V2 compatibility mode」にチェックを入れてください。/usr/local/bin以下に,dockre-composeというシンボリックリンクが作成されます(ただし内部的にはdocker composeコマンドを呼び出します⁠⁠。

図13 docker composeコマンドで起動したコンテナ群は,GUI上からもグループ化されて見える。一度コンテナを作成してしまえば,以後はGUI上からまとめて起動や停止が可能になる

図13

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。最近レンズ沼にハマる。日本仮想化技術株式会社所属。