UbuntuにDocker(docker-compose)をインストールしてみる
以前からローカル環境にいろいろ入れていましたが、環境を仕切ってちょっとした検証ができたり、その環境を使い捨てにできたり、構成をコード化したりして管理がもっと楽になるようなメリットがありすごくいいと思ったので、今回は「Docker」をインストールしてみようと思います。
以下の手順は、公式サイトを参考にしていきます。
はじめに: OS情報
以下の条件でインストールをしていきます。
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.4 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
古いDockerパッケージ群を削除
$ sudo apt remove docker docker-engine docker.io containerd runc
前提パッケージのインストール
以下のパッケージ群を一気に入れていきます。
$ sudo apt update
$ sudo apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
まず
- aptインデックスを更新(apt update)
- aptでHTTPS通信でセキュアにリポジトリを使用できるようにするパッケージをインストール
します。
Dockerの公式GPGキーを追加
以下のコマンドで、aptコマンドを使ってインターネット上から入手できるDockerパッケージが正しい配布先からのものかどうかチェックするため、鍵を入手・追加します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
フィンガープリントの確認
以下のコマンドで先程インストールしたGPG鍵のフィンガープリント(指紋のようなもの)の最後の8文字を検索して、「9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88」の指紋を持った正しい鍵であることを確認します。
$ 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]
安定版Dockerリポジトリをローカルマシンに登録
add-apt-repositoryコマンドを使って、安定版のDockerリポジトリからDockerパッケージのインストールができるよう設定していきます。
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
上記コマンドに含まれる
lsb_release -cs
は、Ubuntuディストリビューションの名前を返します。
例: 「bionic」「xenial」など。バージョンに対応した名前のことです。
さらにこのコマンドを
$()
で囲み引数内で使用することで、上記のadd-apt-repositoryコマンドの引数で書き込む文字列に含めています。
Docker Engineのインストール
aptインデックスを最新状態に更新し、Dockerの使用に必要なパッケージ群をインストールします。
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
※複数のDockerリポジトリをローカルマシンに登録している場合、Dockerバージョン指定なしでapt install(またはupdate)すると、「安定版」ではなく「最新版」がインストールされ、安定性が保証されない場合があるので注意。
以上で、インストールは完了です。
特定のDockerバージョンをインストールしたい場合
以下のコマンドで利用可能なバージョンの一覧を表示し、インストールしたいバージョンがあるか確認します。
$ apt-cache madison docker-ce
docker-ce | 5:19.03.12~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
docker-ce | 5:19.03.11~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
docker-ce | 5:19.03.10~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
(以下略)
例えば1行目のバージョンなら
$ sudo apt install docker-ce=5:19.03.12~3-0~ubuntu-bionic docker-ce-cli=5:19.03.12~3-0~ubuntu-bionic containerd.io
のようにインストールすればOK。
Hello, worldしてみる
dockerコマンドでイメージを持ってきてコンテナを作成し実行してみます。
$ sudo docker run hello-world
以下のように表示されれば成功です!
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
(以下略)
Dockerパッケージのアップグレード
以下のコマンドで可能です。
//古いDockerパッケージ群を削除
$ sudo apt remove docker docker-engine docker.io containerd runc
//aptインデックスの更新
$ sudo apt update
//安定版の最新バージョンをインストール
$ sudo apt install docker-ce docker-ce-cli containerd.io
//or
//安定版の中からバージョン指定してインストール
$ sudo apt install docker-ce=5:19.03.12~3-0~ubuntu-bionic docker-ce-cli=5:19.03.12~3-0~ubuntu-bionic containerd.io
「sudo」なしで実行したい場合
インストールしたてのDockerコマンドは、ログインユーザーがdockerのユーザーグループに属していないので、コマンドの先頭に「sudo」付きで実行を要求されます。
そのため、以下の手順でsudo不要になるよう環境を整えます。
//dockerグループの存在を確認(存在していれば以下のように表示される)
$ cat /etc/group | grep docker
docker: x: 999:
//存在していなければ、dockerグループを新たに作成
$ sudo groupadd docker
//現在ログイン中のユーザーを先程のdockerグループに仲間入りさせます
$ sudo usermod -aG docker $USER
//or
$ sudo gpasswd -a $USER docker
一旦再ログインして、先程のコマンドをsudoなしで
$ docker run hello-world
と実行すると、できるようになっているはずです。
docker-composeをインストール
以上でDockerのインストールは完了ですが、
さらに「docker-compose」があれば、複数のコンテナをコードで管理しやすくなります。
Dockerイメージ(コンテナの元)から自分好みの仮想コンテナ環境を立ち上げる「Dockerfile」をベースに、より細かく、複数のコンテナ構築を定義することができる優れものです。
せっかくなので、こちらもインストールしていきましょう。
docker-composeの最新のバージョン番号を、GitHubのリリース情報ページで確認します。
2020/07/06現在の最新は1.26.2のようなので、下記のようにバージョン指定してインストールしていきましょう。
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
※$(uname -s)と$(uname -m)の部分で、現在のコンピュータの「カーネル名」と「ハードウェア名」を指定し、インストール環境に最適なものを落としてきます。
無事インストールされると「/usr/local/bin/」にdocker-composeが配置されるので、以下のコマンドでコマンドを実行できる権限を与えます。
$ sudo chmod +x /usr/local/bin/docker-compose
ここまで操作すると、docker-composeコマンドが使用できるようになっているはずです。
//出力例
$ docker-compose --version
docker-compose version 1.24.0, build 0aa59064
今回はDockerの環境整備について書かせていただきましたが、次回以降はこのDockerを使って何かやってみようと思います。
では、また会いましょう!