😀

【初心者】DebianへDockerインストール

2023/10/12に公開

はじめに

この記事はDebianへDocker Engine、containerd、Docker Composeをインストールします。

Dockerとは

Dockerとは軽量で高速に動作するコンテナ型仮想環境用のプラットフォームです。

DockerにはDocker CE(無料版)とDocker EE(有料版)があります。他にも、Docker Desktop for MacやDocker Desktop for WindowsのようなDocker CEをGUIで操作可能にした製品もあります。

DockerのインストールにはDebianの64ビットバージョンが必要です。

Dockerの仕組み


https://www.kagoya.jp/howto/cloud/container/docker/

ハイパーバイザー型はゲストOSをインストールする必要がありますが、DockerではホストOSのカーネルを共有することでゲストOSを必要としません。その分だけDockerは軽快に動作します。このような技術をコンテナ型と呼びます。

図にもあるDocker Engineとはアプリケーションを構築しコンテナ化するDockerのコアとなるコンポーネントです。containerdというコンテナランタイムとセットで動作します。

Docker Engineの構成要素は3つです。

https://docs.docker.jp/v1.12/engine/understanding-docker.html

Docker CLIを使ってREST APIが動作し、ネットワーク上のDocker Hubから取得したイメージをもとにDockerデーモンがコンテナを立てたり、イメージビルド等の処理を行います。

Dockerについて、多少理解ができたと思うのでインストールまでの流れを説明します。今回はリポジトリを利用したインストールを行います。

step1 aptのパッケージを更新し、HTTPS経由でDockerの公式GPG鍵を追加します。
step2 リポジトリのセットアップ
step3 パッケージのインストール

Dockerの公式GPG鍵を取得

Dockerの以前バージョンがインストールされている場合はアンインストールしてください。

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

必要なパッケージ、更新を行います。

# パッケージの更新
$ sudo apt update

# パッケージの取得
$ sudo apt install ca-certificates curl gnupg lsb-release

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

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

リポジトリのセットアップ

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

Dockerのインストール

$ apt update

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

Docker Composeもインストールしています。
Docker Composeとは複数のDockerコンテナを扱う際に、効率的な操作ができるツールです。

Docker Engineがインストールできているかどうか確認するため、hello-worldイメージを実行します。

sudo docker run hello-world

よく使われるdockerのコマンドです。

# DockerfileをもとにDockerイメージを作成
$ docker image build [option] <Dockerfile Path>

# Dockerイメージを使ってDockerコンテナを起動
$ docker container run [option] <Image Name>

# 作成済(停止中)のコンテナを起動
$ docker container start [option] <Container Name>

# 起動中のDockerコンテナを停止
$ docker container stop [option] <Container Name>

# 停止中のコンテナを削除
$ docker container rm [option] <Container Name>

# 起動中のコンテナ内で、コマンドを実行
$ docker container exec [option] <Container Name> <Command>

さいごに

この記事に関する間違いなどありましたらコメントください。
最後まで読んでいただきありがとうございました。

Discussion