InfraAcademy

InfraAcademy Blog

LinuxにDockerをインストールする方法解説!【LinuxでDockerCLIを使ってみる】

| #Linux #Docker

こんにちは、フルスタックエンジニアのryuです。

今回の記事では、LinuxにDockerをインストールする方法を解説します。LinuxでDockerCLIを使えるようにして、コンテナを動かせる状態を目指しましょう。

結論から言うと、公式の導入スクリプトを1行実行すれば、Docker本体もCompose機能もまとめて入ります。この記事では、その手軽な方法と、本番でも使える正式なインストール手順の両方を解説します。

あわせて、sudoなしでdockerコマンドを使う設定や、つまずきやすいエラーの対処法まで紹介します。ぜひ手を動かしながら読み進めてみてください。

そもそもDockerを入れると何ができるのか

インストール手順に入る前に、Dockerを入れると何がうれしいのかを軽くおさえておきましょう。目的が分かっていると、この後の作業も迷いにくくなります。

Dockerとは、コンテナという技術を使って、アプリの実行環境を手軽に用意できるツールです。アプリ本体と必要な設定をひとつの箱にまとめて、すぐに動かせるのが特徴です。

たとえば、Webサーバーやデータベースを、自分のPCを汚さずに数秒で立ち上げられます。環境を作り直したくなっても、コンテナを削除するだけで元通りになります。

とくにLinuxは、Dockerと相性の良いOSです。仕組み上、WindowsやMacより軽量に動くため、サーバー用途ではLinux上でDockerを動かす構成が一般的です。

LinuxにDockerをインストールする2つの方法

Dockerのインストールと聞くと、身構えてしまう方もいるのではないでしょうか。実は、Linuxなら数コマンドで完了するので心配いりません。

まずは、代表的な2つのインストール方法を整理しておきましょう。目的に合わせて、どちらかを選べば大丈夫です。

方法 特徴 向いている人
公式スクリプト(get.docker.com) 1行で完了する最速の方法 まず動かして学習したい方
aptリポジトリから導入 手順は多いが更新管理がしやすい 本番サーバーで使う方

学習用に手早く試したいだけなら、公式スクリプトが便利です。一方で、長く運用するサーバーでは、正式なリポジトリ経由の導入が推奨されています。

なお、この記事ではUbuntuやDebianを想定して解説します。CentOSやRocky LinuxなどのRHEL系でも、パッケージ名やコマンドが変わるだけで流れは同じです。

インストール前に確認しておくこと

いきなりインストールする前に、環境を少しだけ整えておきましょう。ここを飛ばすと、後で原因の分かりにくいエラーに悩まされることがあります。

古いDockerが入っていないか確認する

まず、過去に入れた古いDockerが残っていないかを確認します。公式ではないパッケージが残っていると、新しいDockerと競合することがあるからです。

もしdocker.ioなどの古いパッケージが入っているなら、先に削除しておきましょう。次のコマンドで、競合しやすい古いパッケージをまとめて削除できます。

sudo apt-get remove docker docker-engine docker.io containerd runc

インストールされていない場合は、パッケージが無い旨のメッセージが出るだけです。エラーではないので、そのまま次へ進んで問題ありません。

root権限とcurlを準備する

Dockerのインストールには、管理者権限が必要です。以降のコマンドは、先頭にsudoを付けて実行してください。

公式スクリプトを使う場合は、ファイルをダウンロードするcurlコマンドも必要になります。which curlと実行してパスが表示されれば、準備は完了です。

which curl
→/usr/bin/curl

もしcurlが入っていなければ、sudo apt-get updateを実行してからsudo apt-get install curlでインストールしておきましょう。

方法1:公式スクリプトで手早くインストールする

それでは、実際にインストールしていきましょう。まずは、いちばん手軽な公式スクリプトを使う方法です。

Dockerが公式に用意している導入スクリプトを、curlでダウンロードして実行します。次の1行を入力するだけです。

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

このスクリプトが、お使いのディストリビューションを自動で判別し、必要な設定とインストールをまとめて行ってくれます。Docker本体だけでなく、後述するDocker Composeの機能も一緒に導入されるのがポイントです。

以前はcurl -fsSL https://get.docker.com/ | shのように、ダウンロードと実行を1行でつなぐ書き方もよく紹介されていました。動作は同じですが、いったんファイルに保存して中身を確認してから実行するほうが安全です。

手軽な反面、この方法は本番環境での利用が公式には推奨されていません。学習用や検証用の環境で使うのがおすすめです。

方法2:aptリポジトリから正式にインストールする

本番サーバーなど、きちんと運用したい環境ではこちらの方法を選びましょう。手順は少し増えますが、その後のアップデート管理が楽になります。

手順1:リポジトリを使う準備をする

まず、HTTPS経由でリポジトリを扱うためのパッケージを入れておきます。次のコマンドを実行してください。

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

これで、この後のリポジトリ登録に必要な土台がそろいます。

手順2:Docker公式のGPGキーを登録する

次に、パッケージが本物であることを確認するためのGPGキーを登録します。少し長いコマンドですが、公式ドキュメントに沿ったものです。

sudo install -m 0755 -d /etc/apt/keyrings
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

このキーによって、これから追加するリポジトリの正当性が保証されます。改ざんされたパッケージを誤って入れてしまう事故を防ぐ、大切な仕組みです。

手順3:Dockerをインストールする

キーの登録が終わったら、Dockerのリポジトリを追加してインストールします。リポジトリを登録したら、sudo apt-get updateでパッケージ一覧を更新しておきましょう。

その後、次のコマンドでDocker本体と関連パッケージをまとめて導入します。

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

末尾のdocker-compose-pluginは、Docker Composeを使うためのパッケージです。これを含めておくと、docker composeコマンドがそのまま使えるようになります。

Dockerが正しく入ったか確認する

インストールが終わったら、正しく動くかを確認しましょう。まずは、バージョン情報が表示されるかを見てみます。

docker --version
→Docker version 27.x.x, build xxxxxxx

バージョンが表示されれば、Docker本体のインストールは成功です。続いて、テスト用のコンテナを実行して、実際に動くところまで確認しましょう。

sudo docker run hello-world

このコマンドは、動作確認専用の小さなイメージをダウンロードして実行します。Hello from Docker!というメッセージが表示されれば、Dockerは正常に動作しています。

sudoなしでdockerコマンドを使えるようにする

ここまでの手順では、dockerコマンドのたびにsudoを付けていました。毎回入力するのは、正直なところ面倒ですよね。

実は、自分のユーザーをdockerというグループに追加すると、sudoなしでdockerコマンドを実行できるようになります。次のコマンドで、今ログインしているユーザーをグループへ追加しましょう。

sudo usermod -aG docker $USER

$USERの部分には、今のユーザー名が自動で入ります。設定を反映させるには、一度ログアウトして入り直すか、サーバーを再起動してください。

反映後は、docker run hello-worldのようにsudoなしで実行できます。ただし、dockerグループへの追加は実質的に管理者権限を与えるのと同じなので、共用サーバーでは誰を追加するか慎重に判断しましょう。

Docker Composeは別途インストール不要

複数のコンテナをまとめて扱うDocker Composeも、多くの方が気になるところではないでしょうか。以前は、Composeを別途インストールする必要がありました。

しかし、現在のDocker Composeは、Docker本体に統合されています。この記事の手順でDockerを入れていれば、追加のインストールなしで使えます。

新旧の違いを、表で整理しておきます。

項目 旧世代(v1) 現在(v2)
コマンド docker-compose(ハイフン) docker compose(スペース)
導入方法 単体で別途インストール Docker本体に同梱
実装 Python製 Docker CLIのプラグイン

ハイフン区切りのdocker-composeを単体でインストールする手順は、今では旧式です。これから学ぶなら、スペース区切りのdocker composeを使いましょう。

Composeが使えるかどうかは、docker compose versionで確認できます。Composeの役割そのものを知りたい方は、docker-composeとは何かを解説した記事もあわせてどうぞ。

LinuxへのDockerインストールでよくある疑問

最後に、インストール時に初心者の方がつまずきやすい疑問へ答えておきます。同じところで悩んでいないか、確認してみてください。

permission deniedというエラーが出るときは?

docker run実行時にpermission deniedと表示されるのは、権限が足りていないサインです。sudoを付けて実行するか、先ほど紹介したdockerグループへの追加を行いましょう。

グループへ追加したのにエラーが続く場合は、設定の反映がまだの可能性があります。一度ログアウトして入り直すと、たいてい解決しますよ。

Docker Desktopは必要?

WindowsやMacと違い、LinuxではDocker Desktopは必須ではありません。今回のようにコマンドで入れるDocker Engineだけで、コンテナは問題なく動きます。

GUIで操作したい場合や、開発機として使いたい場合にDocker Desktopを検討すれば十分です。サーバー用途なら、Docker Engineのほうが軽量で扱いやすいです。

CentOSやRocky Linuxでも同じ手順?

流れは同じですが、パッケージ管理コマンドが変わります。RHEL系ではapt-getの代わりにdnfを使い、リポジトリの登録方法も少し異なります。

正確な手順は、Docker公式ドキュメントのディストリビューション別ページを確認するのが確実です。基本の考え方は、この記事と共通しています。

インストールしたDockerを削除するには?

不要になったDockerは、パッケージを指定してアンインストールできます。aptリポジトリから入れた場合は、次のコマンドでまとめて削除しましょう。

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin

ただし、このコマンドだけではイメージやコンテナのデータが残ります。ディスクの中身まで完全に消したい場合は、/var/lib/dockerディレクトリも削除してください。

大切なデータが入っていないかを確認してから消すのが安全です。作り直す前提の学習環境なら、思い切って消してしまっても問題ありません。

練習用のLinux環境が手元にない場合は?

自分のPCにLinux環境が無い方は、仮想マシンを使うのが定番です。導入手順はVirtualBoxでLinuxをインストールする方法で解説しています。

環境構築の前にDockerの感覚だけつかみたいなら、ブラウザだけで試せる学習サイトも便利です。Dockerを学習できるサイトを紹介した記事で詳しく紹介しています。

まとめ

今回の記事では、LinuxにDockerをインストールする方法を解説しました。

学習用なら公式スクリプトで手早く、本番用ならaptリポジトリから正式に入れるのが基本でしたね。インストール後は、docker run hello-worldで動作を確認しておきましょう。

sudoなしで使いたいときはdockerグループへの追加、Composeは本体に同梱という2点も、あわせて覚えておくと便利です。Dockerが入ったら、次はDockerとは何かを初心者向けに解説した記事Dockerfileの書き方を解説した記事へ進んでみてください。

コマンドを打ちながらインフラを学びたい方は、ブラウザで実践できるサーバー学習サイトInfraAcademyもぜひ活用してくださいね。

さらにDockerを勉強したい方はこちらの参考書がオススメです。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る