0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerのインストール手順

Posted at

はじめに

Dockerのインストール手順です。インストールは公式サイトをもとに行っています。

環境

Ubuntu20.4 (Windows10 + Vagrant)

公式サイト

手順

1.非公式の Docker パッケージの削除

ディストリビューションよっては、インストール済みのDockerパッケージが存在する場合があるようです。そのようなパッケージが、公式のDockerパッケージと競合する可能性があるため、公式のDocker Engineをインストールする前に削除します。

削除するDockerパッケージはつぎの6個です。

  • docker.io
  • docker-compose
  • docker-compose-v2
  • docker-doc
  • podman-docker
$for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

2.Dockerのインストール

インストール方法はいくつかありますが、aptでインストールします。普通はaptでインストールするものだと思います。

まずは、CA証明書をインストールします。こちらはDockerのHTTPS通信で必要になります。curlはインストール済であれば不要です。

$sudo apt-get update
$sudo apt-get install ca-certificates curl

インストールされたことを確認します。

$apt list --installed | grep ca-ccertificates

/etc/apt/keyringsディレクトリを作成します。

$sudo install -m 0755 -d /etc/apt/keyrings

keyringsディレクトリのパーミションが755で作成されていることを確認します。

$ls -l /etc/apt

公開鍵をダウンロードします。公開鍵はPGPによって生成されています。

$sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

etc/apt/sources.list.d/docker.list にDockerのリモートリポジトリのアドレスを追加します。

Dockerはaptのリポジトリには置いていおらず、Docker独自のリポジトリから取得するようになっています。

$echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新した内容を確認します。

$cat /etc/apt/sources.list.d/docker.list

パッケージの一覧を最新にします。

$sudo apt-get update

ここに来てようやく本番。Dockerをインストールします。aptを使ってインストールしていますが、Dockerのリモートリポジトリからインストールしています。

$sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Dockerがインストールされたことを確認します。

$apt list --installed | grep docker

Dockerイメージを実行してインストールが成功したことを確認します。

$sudo docker run hello-world

Dockerデーモンが起動されていることを確認します。

$service --status-all
$systemctl status docker

3.dockerグループの追加

プロセス間通信にTCPポートを使っているデーモンであれば、一般ユーザーでも利用できますが、UNIXソケットを使っている場合は、基本的にrootでないと利用できないようになっています。DockerデーモンはUNIXソケットを使っておりrootでないと利用できません。

つまり、dockerコマンドを利用するときは、先頭にsudoをつけて実行することになります。毎回sudoを付けなくてもいいようにするには、dockerグループを作成してdockerグループに自分のユーザーを追加すれば対応できます。dockerグループを用意しておくと、DockerデーモンがdockerグループからUNIXソケットにアクセスできるようになります。

ディストリビューションによっては、dockerグループを手動で作成しなくても、自動で作成されるようになっている場合があるようです。ちなみに、自分の環境では自動で作成されていました。

$cat /etc/group

ユーザーをdockerグループに追加します。ここに関しては自動で行われません。必ず、手動で行う必要があります。

sudo usermod -aG docker $USER

追加されたことを確認します。

$cat /etc/group
docker:x:996:   			# 変更前
docker:x:996:vagrant		# 変更後

グループへの追加を再ログインすることなく反映させます。

$newgrp docker

sudoを付けずにdockerコマンドが実行できることを確認します。

$docker run hello-world

dockerデーモンが自動起動になっているかどうかを確認します。インストール直後はデフォルトでは自動起動になっています。

$systemctl is-enabled docker.service
$systemctl is-enabled containerd.service
enabled

自動起動を止めたい場合はつぎのコマンドで止めます。

$systemctl disable docker.service
$systemctl disable containerd.service

4.デフォルトのログドライバーを構成する

Dockerはjson-fileというログドライバーを利用してログを収集します。json-fileの代わりに、OSが持っているjournald-systemd、rsyslogを利用することもできます。

json-fileを使う場合、ログローテを行う機能は自動で設定されていないため、デフォルトのままにしておくと、ログはどんどんと肥大化していくことになります。json-fileのログローテは自分で設定する必要があります。

次のファイルを新規作成します。デフォルトでは/etc/docker/daemon.jsonファイルは存在していません。

$vi /etc/docker/daemon.json

つぎのようにファイルを編集します。ログは10MBまでとして、履歴を5ファイルまで保持しますという例です。

daemon.json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "5"
  }
}

設定ファイルを有効にするためにデーモンを再起動します。

$sudo systemctl restart docker.service

これで、json-fileのログローテが有効になりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?