AlmaLinux9にdockerをインストールします。
dockerとはLinuxOS上に仮想のコンテナを作成し、その中で他と干渉しないライブラリやミドルウェをインストールして動かすことが可能になります。以下のサイトが非常に詳しくわかりやすかったです。
https://zenn.dev/koduki/articles/b4cb0551523919
以下のコマンドでdockerリポジトリを追加します。
# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo |
docker本体をインストールします。
# dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin <省略> # docker --version Docker version 28.5.0, build 887030f |
dockerバージョンが28.5.0がインストールできましたのでdockerを有効にして起動します。
# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
# systemctl start docker
# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
Active: active (running) since Tue 2025-10-07 11:24:27 JST; 8s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 2220 (dockerd)
Tasks: 19
Memory: 33.1M
CPU: 115ms
CGroup: /system.slice/docker.service
mq2220 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
|
■Ubuntuのインストール
dockerコンテナについてはDocker HUB(レジストリ)からあらかじめ作成されたコンテナをpullしてくることが可能です。配布元サイトは以下となります。
サイト見ればわかりますが非常に多数のイメージがアップロードされています。これをコマンドから以下のように検索することも可能です。
# docker search ubuntu NAME DESCRIPTION STARS OFFICIAL ubuntu Ubuntu is a Debian-based Linux operating sys… 17700 [OK] ubuntu/squid Squid is a caching proxy for the Web. Long-t… 119 ubuntu/nginx Nginx, a high-performance reverse proxy & we… 133 ubuntu/cortex Cortex provides storage for Prometheus. Long… 4 ubuntu/kafka Apache Kafka, a distributed event streaming … 55 ubuntu/apache2 Apache, a secure & extensible open-source HT… 97 ubuntu/prometheus Prometheus is a systems and service monitori… 75 ubuntu/bind9 BIND 9 is a very flexible, full-featured DNS… 114 ubuntu/zookeeper ZooKeeper maintains configuration informatio… 13 ubuntu/jre Distroless Java runtime based on Ubuntu. Lon… 21 ubuntu/postgres PostgreSQL is an open source object-relation… 41 ubuntu/mysql MySQL open source fast, stable, multi-thread… 70 ubuntu/dotnet-aspnet Chiselled Ubuntu runtime image for ASP.NET a… 25 ubuntu/redis Redis, an open source key-value store. Long-… 23 ubuntu/python A chiselled Ubuntu rock with the Python runt… 27 ubuntu/dotnet-deps Chiselled Ubuntu for self-contained .NET & A… 15 ubuntu/grafana Grafana, a feature rich metrics dashboard & … 12 ubuntu/dotnet-runtime Chiselled Ubuntu runtime image for .NET apps… 21 ubuntu/memcached Memcached, in-memory keyvalue store for smal… 5 ubuntu/prometheus-alertmanager Alertmanager handles client alerts from Prom… 10 ubuntu/cassandra Cassandra, an open source NoSQL distributed … 2 ubuntu/mlflow MLFlow: for managing the machine learning li… 6 ubuntu/telegraf Telegraf collects, processes, aggregates & w… 4 ubuntu/chiselled-jre [MOVED TO ubuntu/jre] Chiselled JRE: distrol… 3 ubuntu/grafana-agent Ubuntu ROCK for Grafana Agent, an open-sourc… 0 |
ホストOSはAlmaLinuxなので系統が異なるubuntuを入れてみることにします。まず以下のコマンドでubuntuイメージをダウンロードします。
# docker pull ubuntu # docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest ce8f79aecc43 6 days ago 78.1MB |
リポジトリーにubuntuが登録されましたのでこれを実行してみます。docker runコマンドでコンテナを起動しますが、オプションは下記の通りです。
| オプション | 意味 |
| -it | 対話モードで起動 |
| -d | バックグラウンドで実行 |
| –privileged | システムデバイスにアクセス可能 |
| –name ubuntu-container | コンテナ名を指定 |
| ubuntu | 使用するイメージを指定 |
# docker run -it -d --privileged --name ubuntu-container ubuntu # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9857d8846152 ubuntu "/bin/bash" 13 seconds ago Up 13 seconds ubuntu-container |
次のコマンドでubuntuのコンソールにアクセスが可能です。
# docker exec -it ubuntu-container /bin/bash root@ae0d966f4bf9:/# |
コンテナを停止、開始するときには以下のコマンドを実行します。
# docker stop ubuntu-container # docker start ubuntu-container |
コンテナが不要になって削除する場合は下記のコマンドです。
# docker rm ubuntu-container [コンテナ削除] # docker rmi ubuntu-container [イメージ削除] |
※コンテナを停止してもデータは消えません。削除すると中のデータも消えます。
■httpdのインストール
次に簡易的なWebサーバコンテナをインストールしてみます。
# docker pull httpd # docker images REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest 2416cb32cb59 8 weeks ago 117MB |
これは対話モードではなくデーモンモードで起動し、ポート番号も合わせて指定します。少しややこしいですが、ポート8888の中で80を動かすことになり、外部の端末から見るとポート8888にアクセスすればWebサーバが表示されることになります。
# docker run -d -p 8888:80 --name httpd-container httpd # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cb448b879757 httpd "httpd-foreground" 11 seconds ago Up 10 seconds 0.0.0.0:8888->80/tcp, [::]:8888->80/tcp httpd-container |