UbuntuにDockerとDocker-Composeをインストールする【Ubuntu 18.04 LTS】

中々学習コストが高くて気が進まなかったのですが、やっと重い腰を上げてDockerを学ぶ事にして、早速Ubuntuにインストールしました。

Dockerとは

Dockerとは仮想化技術の1つで、Hyper-VやVMWare等の完全仮想化技術とは異なりホストOSとカーネルを共有するコンテナ仮想化技術です。

完全仮想化に比べ手軽に仮想環境を構築可能で、開発・テスト・実行環境の分離に役立ちます。

また、OSを丸ごとインストールするわけではないため効率的に資源を利用でき、失敗した時の破棄が容易です。

上記の機能に加えて、Dockerfileに環境に関する設定を記述する事でInfrastructure as Code(IaC)のメリットも受けられます。

DockerはLinux上で動作するのですが、それ以外のOS向けであるDocker for WindowsやDocker for Macも存在していて、主要なOSであればどれでも利用が可能です。

動作にLinuxカーネルを要するため、WindowsやMacでは内部的に仮想環境を作ってその上で動作しています。

環境

以下の環境で作業を行います。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu    
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"

作業内容

Docker公式のインストールガイドを参考に作業しました。

リポジトリを追加する

まずは前提となるパッケージをインストールします。

$ sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

リポジトリキーを追加します。追加した後、指紋が9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88と一致しているか確認します。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

ここまで終わったらリポジトリを追加できるので、以下のコマンドで追加します。

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

これで、apt-getでのDockerをインストールする事が出来るようになりました。

Docker CEのインストール

無料版のDocker Community Editionとcontainerdをインストールします。

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

インストール出来ました。

$ docker --version
Docker version 19.03.8, build afacb8b7f0

Docker-Composeのインストール

Docker-Composeは複数のDockerコンテナを取り扱うのに便利なツールです。

curlでGitHubから拾ってきて自分で配置して、実行可能にします。この時の最新バージョンは1.25.5でした。リリース情報はdocker/compose Releases | GitHubから確認できます。

$ export VERSION="1.25.5"
$ sudo curl -L "https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

インストール出来ました。

$ docker-compose --version
docker-compose version 1.25.5, build 8a1c60f6

Dockerを試す

DockerでのHello, World!としてdocker run --rm hello-worldをしてみます。

$ sudo docker run --rm hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

上手くインストール出来たようです。

一般ユーザーでも実行できるようにする

インストール直後の状態では、sudoを使わないとdockerコマンドは使用する事が出来ません。

一般ユーザーでdockerコマンドを使うためには、ユーザーをdockerグループに追加する必要があります。

$ sudo usermod -aG docker $USER
$ sudo reboot

再起動して変更を反映したら、sudo無しで実行出来るようになったはずです。

$ docker run --rm hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

これで、dockerグループに所属しているユーザーは自由にdockerコマンドが使えるようになりました。

まとめ

DockerとDocker-Composeをインストールしたので、様々な環境を依存を気にせず試せるようになりました。

Dockerに関しては覚える事が多いですが、かなり便利なので使えるようになりたいです。

また、一般ユーザーでもDockerを利用する方法として、Rootless Dockerという物もあります。これはまた後で触ろうと思います。

参考文献

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です