Almalinux9にdockerをインストールしてサイト表示させてみた。

D
2023-09-29
2023-09-29

 

おつかれさまです。Dです。

dockerってよく聞くんですが、実際に触ったことが無かったので
EC2で立てたAlmaLinux9にdockerをインストールして触ってみたいと思います。

内容

サーバー環境は新しめの「AlmaLinux9」で実施します。

# cat /etc/os-release 
NAME="AlmaLinux"
VERSION="9.2 (Turquoise Kodkod)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.2"
PLATFORM_ID="platform:el9"
PRETTY_NAME="AlmaLinux 9.2 (Turquoise Kodkod)"
ANSI_COLOR="0;34"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:almalinux:almalinux:9::baseos"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"

ALMALINUX_MANTISBT_PROJECT="AlmaLinux-9"
ALMALINUX_MANTISBT_PROJECT_VERSION="9.2"
REDHAT_SUPPORT_PRODUCT="AlmaLinux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.2"

まずはdockerのリポジトリを追加します。

# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repodnf 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-ce」ってやつがdockerを動かすみたいです。
インストールしていきます。

実行結果については長いので省略します。
問題無く完了すれば以下のように「Complete!」が出るはずです。

# dnf -y install docker-ce

~~

Installed:
  container-selinux-3:2.205.0-1.el9_2.noarch     containerd.io-1.6.24-3.1.el9.x86_64               docker-buildx-plugin-0.11.2-1.el9.x86_64      docker-ce-3:24.0.6-1.el9.x86_64                  
  docker-ce-cli-1:24.0.6-1.el9.x86_64            docker-ce-rootless-extras-24.0.6-1.el9.x86_64     docker-compose-plugin-2.21.0-1.el9.x86_64     fuse-common-3.10.2-5.el9.x86_64                  
  fuse-overlayfs-1.11-1.el9_2.x86_64             fuse3-3.10.2-5.el9.x86_64                         fuse3-libs-3.10.2-5.el9.x86_64                iptables-libs-1.8.8-6.el9_1.x86_64               
  iptables-nft-1.8.8-6.el9_1.x86_64              libibverbs-44.0-2.el9.x86_64                      libnetfilter_conntrack-1.0.9-1.el9.x86_64     libnfnetlink-1.0.1-21.el9.x86_64                 
  libnftnl-1.2.2-1.el9.x86_64                    libpcap-14:1.10.0-4.el9.x86_64                    libslirp-4.4.0-7.el9.x86_64                   policycoreutils-python-utils-3.5-1.el9.noarch    
  slirp4netns-1.2.0-3.el9.x86_64                

Complete!

dockerのバージョンを確認してインストールされているか確認します。
ばっちり入ってますね。

# docker --version
Docker version 24.0.6, build ed223bc

何はともあれとりあえずdockerサービスを起動します。

# systemctl start docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
     Active: active (running) since Tue 2023-09-19 11:19:38 UTC; 8s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 12236 (dockerd)
      Tasks: 9
     Memory: 30.0M
        CPU: 350ms
     CGroup: /system.slice/docker.service
             mq12236 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

起動したらdockerコマンドが使えるので、試しに打ってみます。
以下のコマンドで実行中のコンテナが確認出来ますが、何も作っとらんので真っ白です。

# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

ということで、コンテナを作ってブラウザから簡単なページを表示させていきます。
まずはコンテナ実行に必要なイメージをダウンロードしていきます。

以下のコマンドでイメージがあるか確認出来ますが、まだ何もダウンロードしていないので表示無しです。

# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

今回はWebサーバーの機能が欲しいので、Apacheがインストールされているイメージをダウンロードします。
以下のコマンドでダウンロードが可能です。

※イメージ名に:タグ名を付けることで、任意のソフトウェアバージョンをダウンロードすることが可能なようです。
 省略すると最新版を自動的にダウンロードしてくれます。

# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd

360eba32fa65: Pulling fs layer 
2832a695827e: Pulling fs layer 
b57c1299d233: Pulling fs layer 
45a0ea29816d: Pulling fs layer 
8c226ac2053e: Pulling fs layer 
45a0ea29816d: Waiting 
8c226ac2053e: Waiting 
2832a695827e: Downloading [==================================================>]     176B/176B
2832a695827e: Verifying Checksum 
2832a695827e: Download complete 
360eba32fa65: Downloading [>                                                  ]  294.2kB/29.12MB
b57c1299d233: Downloading [>                                                  ]  42.35kB/4.194MB
b57c1299d233: Verifying Checksum 
b57c1299d233: Download complete 
360eba32fa65: Downloading [======================>                            ]  13.12MB/29.12MB
360eba32fa65: Downloading [==========================================>        ]  25.02MB/29.12MB
360eba32fa65: Verifying Checksum 
360eba32fa65: Download complete 
360eba32fa65: Extracting [>                                                  ]  294.9kB/29.12MB
360eba32fa65: Extracting [=====>                                             ]  3.244MB/29.12MB
360eba32fa65: Extracting [===========>                                       ]  6.783MB/29.12MB
45a0ea29816d: Downloading [>                                                  ]    327kB/31.36MB
360eba32fa65: Extracting [================>                                  ]  9.437MB/29.12MB
8c226ac2053e: Downloading [==================================================>]     294B/294B
8c226ac2053e: Verifying Checksum 
8c226ac2053e: Download complete 
45a0ea29816d: Downloading [===============>                                   ]  10.03MB/31.36MB
360eba32fa65: Extracting [==================>                                ]  10.62MB/29.12MB
45a0ea29816d: Downloading [================================>                  ]  20.08MB/31.36MB
360eba32fa65: Extracting [=====================>                             ]  12.39MB/29.12MB
45a0ea29816d: Downloading [=================================================> ]  31.07MB/31.36MB
45a0ea29816d: Verifying Checksum 
45a0ea29816d: Download complete 
360eba32fa65: Extracting [===========================>                       ]  16.22MB/29.12MB
360eba32fa65: Extracting [====================================>              ]  21.23MB/29.12MB
360eba32fa65: Extracting [==========================================>        ]  24.48MB/29.12MB
360eba32fa65: Extracting [==========================================>        ]  24.77MB/29.12MB
360eba32fa65: Extracting [===============================================>   ]  27.72MB/29.12MB
360eba32fa65: Extracting [================================================>  ]  28.31MB/29.12MB
360eba32fa65: Extracting [==================================================>]  29.12MB/29.12MB
360eba32fa65: Pull complete 
2832a695827e: Extracting [==================================================>]     176B/176B
2832a695827e: Extracting [==================================================>]     176B/176B
2832a695827e: Pull complete 
b57c1299d233: Extracting [>                                                  ]  65.54kB/4.194MB
b57c1299d233: Extracting [===================>                               ]  1.638MB/4.194MB
b57c1299d233: Extracting [=============================================>     ]  3.801MB/4.194MB
b57c1299d233: Extracting [==================================================>]  4.194MB/4.194MB
b57c1299d233: Pull complete 
45a0ea29816d: Extracting [>                                                  ]  327.7kB/31.36MB
45a0ea29816d: Extracting [=>                                                 ]    983kB/31.36MB
45a0ea29816d: Extracting [==>                                                ]  1.638MB/31.36MB
45a0ea29816d: Extracting [===>                                               ]  2.294MB/31.36MB
45a0ea29816d: Extracting [========>                                          ]  5.571MB/31.36MB
45a0ea29816d: Extracting [================>                                  ]  10.16MB/31.36MB
45a0ea29816d: Extracting [======================>                            ]  14.42MB/31.36MB
45a0ea29816d: Extracting [============================>                      ]  18.02MB/31.36MB
45a0ea29816d: Extracting [===================================>               ]  21.95MB/31.36MB
45a0ea29816d: Extracting [=======================================>           ]   24.9MB/31.36MB
45a0ea29816d: Extracting [========================================>          ]  25.23MB/31.36MB
45a0ea29816d: Extracting [============================================>      ]  28.18MB/31.36MB
45a0ea29816d: Extracting [==================================================>]  31.36MB/31.36MB
45a0ea29816d: Pull complete 
8c226ac2053e: Extracting [==================================================>]     294B/294B
8c226ac2053e: Extracting [==================================================>]     294B/294B
8c226ac2053e: Pull complete Digest: sha256:0adbefbee65176b93e4135f5c133072e2fb963187b00df565e6c73814894af5c
Status: Downloaded newer image for httpd:latest
docker.io/library/httpd:latest

先ほどのコマンドで確認すると、問題無くダウンロード出来ていますね。

# docker images
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
httpd                 latest    7860e7628717   2 weeks ago    168MB

ダウンロードしたイメージを使って、コンテナを立ち上げていきます。

コンテナを立ち上げるコマンドは「docker run」コマンドです。

# docker run -d -p 1234:80 httpd
aaf711f12ae74bb04d5442db17eaa8d9f344b932d308334bb98adc3293309097

オプションについての説明ですが、「-d」を付けることで、バックグラウンド実行になります。
「-d」を付けないと、その他のコマンド操作が出来なくなるので付与しています。

また、dockerコンテナでは待ち受けているポートとdockerソフトウェア自体がインストールされているベースサーバーのポートを紐づけてやる必要があります。
「-p」で紐づけのポート指定が出来ます。

今回はWebサーバーの機能を試すので、dockerコンテナ内で待ち受けている
Apacheのデフォルト待ち受けポート80番をベースサーバーのポート1234に紐づけて起動させています。

問題無く起動がされているかは、以下のコマンドで確認が可能です。
起動されていなければ表示がされません。

# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS          PORTS                                   NAMES
ad2fa9db4a3a   httpd     "httpd-foreground"   14 minutes ago   Up 14 minutes   0.0.0.0:1234->80/tcp, :::1234->80/tcp   agitated_hopper

起動した後は、以下のようなURLでポート指定してやればデフォルトサイトが表示されるはずだったのですが
「このサイトにアクセスできません」と表示されました。

http://[EC2のパブリック IPv4 DNS]:1234
※EC2で立てたのでドメイン名は「パブリック IPv4 DNS」を指定しています。念のためDNS名は伏せています。

 

これはEC2側のポート1234をdockerコンテナの80番に紐づけしているので
外部からのアクセスはEC2の1234ポートを経由してdocker内の80番ポートにアクセスされるので
EC2側のセキュリティグループで1234ポートを解放しておく必要があります。

1234ポートをセキュリティグループで解放すればサイトが問題無く閲覧出来ました。

コンテナを停止する際は以下のコマンドで可能です。
「docker ps」コマンドで「CONTAINER ID」を確認して指定してやれば停止できます。

# docker stop ad2fa9db4a3a
ad2fa9db4a3a

再度、実行中コンテナを確認すると無くなっています。

# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

【まとめ】

dockerって結構とっかかるのに難しそうなイメージだったのですが
既に作成されているイメージを利用する場合はそこまで難しくありませんでした。

dockerファイルから自分のイメージをビルドして作成も出来るので
またの機会に試してみたいと思います。