Dockerは、任意のアプリケーションからコンテナーと呼ばれる分離された環境でアプリケーションを簡単に作成して実行するためのオープンソースソフトウェアです。これは、アプリケーションとそのライブラリおよびその他の依存関係をソフトウェア開発用の標準化されたユニットにパッケージ化する効率的な方法を提供します。
Dockerコンテナーは、オペレーティングシステム全体を実行する必要がなく、アプリケーションにサービスを提供する実行可能ファイルのみを実行する必要があるため、仮想マシンよりもはるかに高速で効率的です。
ここでは、Debian11にDockerComunity Edition(CE)をインストールする方法を説明します。
注: Dockerには64ビットバージョンのDebianOSが必要です。
Debian11にDockerをインストールする
古いバージョンを削除する
まず、システムからの依存関係とともに、dockerまたはdocker-engineと呼ばれる古いバージョンのDockerパッケージをアンインストールします。ただし、このアンインストールでは、/ var / lib / docker /ディレクトリにある既存のDockerボリューム、イメージ、およびネットワークは削除されません。
sudo apt remove -y docker docker-engine docker.io containerd runc
Dockerリポジトリのセットアップ
以下のパッケージをインストールして、aptがHTTPS方式をサポートできるようにします。
sudo apt update sudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
DockerのGPGキーをシステムに追加します。
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
以下のコマンドを実行して、Dockerリポジトリをシステムに追加します。
echo "deb [arch=amd64 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
リポジトリインデックスを更新します。
sudo apt update
Dockerエンジンのインストール
aptコマンドを使用してDockerEngineをインストールします。
sudo apt install -y docker-ce docker-ce-cli containerd.io
インストール後のDockerのバージョンを確認してください。
docker -v
出力:
Docker version 20.10.8, build 3967b7d
これで、Dockerサービスが稼働しているはずです。
sudo systemctl status docker
出力:
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-08-21 12:31:37 CDT; 1min 39s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 18894 (dockerd) Tasks: 8 Memory: 31.3M CPU: 448ms CGroup: /system.slice/docker.service └─18894 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Aug 21 12:31:37 debian11.itzgeek.local dockerd[18894]: time="2021-08-21T12:31:37.192715381-05:00" level=info msg="scheme \"unix\" not registered, fallback to default s> Aug 21 12:31:37 debian11.itzgeek.local dockerd[18894]: time="2021-08-21T12:31:37.192736530-05:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///r> Aug 21 12:31:37 debian11.itzgeek.local dockerd[18894]: time="2021-08-21T12:31:37.192749042-05:00" level=info msg="ClientConn switching balancer to \"pick_first\"" modu> Aug 21 12:31:37 debian11.itzgeek.local dockerd[18894]: time="2021-08-21T12:31:37.429344966-05:00" level=info msg="Loading containers: start."
Dockerのインストールを確認する
Dockerのインストールをテストするために、hello-worldコンテナーを実行します。
sudo docker run hello-world
以下の出力は、DockerEngineがDebianOSに正しくインストールされていることを確認しています。
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world b8dfde127a29: Pull complete Digest: sha256:0fe98d7debd9049c50b597ef1f85b7c1e8cc81f59c8d623fcb2250e8bec85b38 Status: Downloaded newer image for hello-world:latest 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/にアクセスしてください。
root以外のユーザーにDockerコマンドの実行を許可する
デフォルトでは、Dockerデーモンはユーザーrootが所有するUnixソケットを使用するため、通常のユーザーにはDockerコマンドを実行する権限がありません。
docker run hello-world
出力:
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
通常のLinuxユーザーがsudoのプレフィックスを付けずにDockerコンテナーを実行できるようにするには、以下の手順に従います。
dockerというグループが存在しない場合は作成します。
sudo groupadd docker
必要に応じてユーザーを作成します。 itzgeekを自分のユーザー名に置き換えます。
sudo useradd -m -s /bin/bash itzgeek
ユーザーをDockerグループに追加します。
sudo usermod -aG docker itzgeek
ログアウトして再度ログインし、sudoのプレフィックスを付けずにDockerコマンドを実行します。
docker run hello-world
興味深いトピック
Dockerの基本トピック
1:重要なDockerコマンド–Dockerコンテナの操作
2:Dockerイメージの操作–Dockerイメージの構築
3:DockerFileを使用してDockerイメージを構築する方法
Dockerの高度なトピック
1:CentOS7でDockerプライベートレジストリを設定する方法
2:CentOS7にDockerSwarmをインストールして構成する方法
結論
それで全部です。 DockerEngineをDebian11にインストールする方法を学んだことを願っています。