Ubuntu Weekly Recipe

第481回 CockpitとsnapでDockerコンテナをお手軽に管理する

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

第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の技術的デモという位置づけ,通常は使用しない
※1
2017年にDockerのバージョン・リリースルールが変わったため,Dockerが提供するCommunity Editionのパッケージ名もdocker-engineからdocker-ceに変わっています。

Docker公式パッケージについてはインストール手順が若干変わっています。主にリポジトリのURL,公開鍵の取得先,それにパッケージ名が変更点です。今から新規にインストールするのであれば,この手順にあわせておきましょう第458回も新しい手順に修正済みです)⁠また,Ubuntuリポジトリのdocker.ioパッケージについては大きな変更点はありません。CanonicalがKubernetesにもリソースを注いでいるため,今後もそれなりのメンテナンスはされるはずです。

そしてsnap版のパッケージについては「通常は使用しない」ということで前回は紹介を省きました。しかしながらその位置づけが現在では大きく変わっています。まずパッケージの提供元がDocker, Inc.になりました。ソースパッケージもGitHubのDockerチームのリポジトリで管理されています※2)⁠その結果,特にリポジトリを追加することなく比較的新しいバージョンを試せます。ただしLXD上ではまだきちんと動くようにはなっていません。Ubuntu CoreのようなRaspberry Pi2やNextcloud Box上で動くマシンでもDockerを試したい時に,有力な選択肢のひとつになるはずです。

※2
ただし「Docker公式」かというとちょっと怪しいところで,どちらかというとCanonicalの中の人がメンテナンスしているようにも見えます。将来に渡ってこの状態が続くかどうかは不明です。

そこで,実際に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チャンネルへと移行するはずです。

※3
7月21日に17.03.1-ce-1から更新されました。すでにsnap版パッケージをインストール済みの環境も,特に設定を変更していなければ自動的に17.06.0-ce-1に更新されているはずです。
$ snap info docker
name:      docker
summary:   "The docker app deployment mechanism"
publisher: docker-inc
contact:   snappy-devel@lists.ubuntu.com
description: |
  Docker for snappy.

  This snap allows you to use the full capabilities of docker on snappy.

  In order to use 'docker build', 'docker save' and 'docker load', you need to
  place your dockerfile within $HOME. All files that you want docker to access
  to must be within this path.

  You may also use the 'docker-privilege' command to allow you to use 'docker
  run --privileged'. Because docker is unencumbered on snappy, it is recommended
  that you follow the Docker project's recommendations for using docker
  securely.
channels:
  latest/stable:    17.06.0-ce-1   (155) 43MB -
  latest/candidate: 17.06.1-ce-rc1 (165) 43MB -
  latest/beta:      17.03.1-ce-0   (102) 37MB -
  latest/edge:      17.06.1-ce-rc1 (165) 43MB -

  17.03/stable:     17.03.2-ce-1   (159) 42MB -
  17.03/candidate:  17.03.2-ce-1   (159) 42MB -
  17.03/edge:       17.03.2-ce-1   (159) 42MB -

  17.06/stable:     17.06.0-ce-1   (155) 43MB -
  17.06/candidate:  17.06.1-ce-rc1 (165) 43MB -
  17.06/edge:       17.06.1-ce-rc1 (165) 43MB -

今回はstableの「17.06.0-ce-1」を使います。

$ snap install docker
$ docker.help
Docker snap: Docker Linux container runtime.

Due to the confinement issues on snappy, it requires some manual setup to make docker-snap works on your machine.
We'll take you through the steps needed to set up docker snap work for you on ubuntu core and ubuntu classic.

On Ubuntu classic, before installing the docker snap,
please run the following command to add the login user into docker group.
    sudo addgroup --system docker
    sudo adduser $USER docker
    newgrp docker

On Ubuntu Core 16, after installing the docker snap from store,
you need to connect the home interface as it's not auto-connected by default.
    sudo snap connect docker:home :home

Then have fun with docker in snappy.

一般ユーザーの権限でdockerコマンドを実行するためには,上記のように別途dockerグループを作成し,そのユーザーを追加する必要があります。ヘルプどおりにインストールする前でもかまいませんが,インストールしたあとに作成した場合であっても,一度デーモンを再起動すれば問題ありません。

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker
  (もしくはログインしなおす)
$ sudo systemctl restart snap.docker.dockerd

第458回のようにProxyの設定を行う場合,snapパッケージではサービスファイルのパスが異なるため注意してください。次のように設定します。

$ sudo mkdir -p /etc/systemd/system/snap.docker.dockerd.service.d
$ cat <<EOF | sudo tee /etc/systemd/system/snap.docker.dockerd.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=https://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart snap.docker.dockerd
$ systemctl status snap.docker.dockerd.service
● snap.docker.dockerd.service - Service for snap application docker.dockerd
   Loaded: loaded (/etc/systemd/system/snap.docker.dockerd.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/snap.docker.dockerd.service.d
           └─proxy.conf

あとの使い方は普通のDockerと同じです。

ちなみにdocker.composeコマンドやdocker.machineコマンドも一緒にインストールされます。コマンド名がハイフンではなくピリオドになっていることに注意してください。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入