Docker (1) インストールと動作確認

次の公式ドキュメントを参考にして、Ubuntu上にDockerをインストールしてみます。 リポジトリからインストールする方法とパッケージを使ったインストールがありますが、ここではリポジトリから インストールします。

docs.docker.com

準備

初めに古いバージョンがインストールされていたら削除しておきます。

$ sudo apt remove docker docker-engine docker.io containerd runc

Dockerのインストールに必要なパッケージをインストールします。

$ sudo apt update
$ sudo apt install ca-certificates curl gnupg lsb-release

GPG鍵の追加

Dockerの公式GPG鍵を追加します。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

curlのオプションは次の通りです。

  • -f, --fail: サーバエラーのとき何も出力しない。
  • -s, --silent: サイレントモード。プログレスメータとエラーメッセージを表示しない。
  • -S, --show-error: サイレントモードでもエラーメッセージは表示する。
  • -L, --location: リダイレクト

gpgのオプションは次の通りです。

  • --dearmor: OpenPGP ASCII armor形式(Base64に似たテキスト形式)で出力
  • -o, --output: ファイルに出力する。

gpgコマンドの実行で次のメッセージが出ます。これはgpgをsudoを使いroot ユーザーで実行しているが、 $HOMEの所有者がrootユーザーではないため。

gpg: WARNING: unsafe ownership on homedir '/home/xxxx/.gnupg'

リポジトリの設定

stableリポジトリを追加します。

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker Engineのインストール

先程リポジトリを追加したので、パッケージ情報を更新してからDocker Engineをインストールします。

$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io

次のコマンドで、インストールされたDockerのバージョンとDocker Daemonの実行状態を知ることができます。

$ docker version
$ service docker status

Dockerをrootユーザー以外で操作できるようにする

次のページを参考に、rootユーザー以外でもDockerを操作できるようにします。

docs.docker.com

dockerグループを作成し、ユーザーをdockerグループに追加します。

$ sudo groupadd docker
$ sudo usermod -aG docker $USER

usermodのオプションは次の通りです。

  • -a, --append: ユーザーをグループに追加する
  • -G, --groups: グループのリスト

Dockerの動作確認

動作確認用のコンテナ hello-world が用意されているので、実行してみます。

$ docker run hello-world

"Hello from Docker!"が表示されたら成功です。このメッセージの下にはDockerがどのようなステップを踏んで このメッセージが表示したかの説明があります。

Dockerイメージの情報を表示してみます。

$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   5 months ago   13.3kB

Dockerコンテナの情報を表示するには、次のコマンドを実行します。

$ docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED         STATUS                     PORTS     NAMES
183cd1c69ffd   hello-world   "/hello"   7 minutes ago   Exited (0) 7 minutes ago             inspiring_albattani

-a オプションは、停止しているものも含めてすべてのコンテナを表示します。
"ps -a"は"container ls -a"としても同じです。

不要なコンテナ/イメージの削除

コンテナは次のようにCONTAINER IDを指定して削除します。CONTAINER IDの指定は他のコンテナのCONTAINER IDと 曖昧さが残らない範囲の文字分の指定でも可能です。

$ docker rm 183cd1c69ffd

イメージの削除は次のようにIMAGE IDを指定します。こちらもコンテナと同じようにIMAGE IDの指定は曖昧さが 残らない範囲の指定で構いません。

$ docker rmi feb5d9fea6a5

Dockerのアンインストール

$ sudo apt purge docker-ce docker-ce-cli containerd.io
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd

Docker公式サイト

www.docker.com