Dockerfileでlinux2コンテナを作成起動するには?

Amazon Linux 2(もしくは一般にlinux2と呼ばれる場合が多いOS)のDockerイメージを使用してコンテナを作成・起動するには、次のような手順を考慮できます。

まず、適当なディレクトリを作成し、その中にDockerfileを作成します。

1. **Dockerfileを作成**

# 基本イメージとしてAmazon Linux 2を指定
FROM amazonlinux:2

# イメージに対する追加の設定やソフトウェアのインストール
RUN yum update -y && \
yum install -y httpd

# コンテナが公開するポート番号
EXPOSE 80

# コンテナ起動時に実行されるコマンド
CMD ["httpd", "-D", "FOREGROUND"]

この例では、Amazon Linux 2をベースとして、Apache HTTP Server(httpd)をインストールしています。コンテナが起動した際にはApacheが前景で実行されます。

2. **Dockerイメージをビルド**

ターミナルで、上で作成したDockerfileが存在するディレクトリに移動し、以下のコマンドを実行します。

docker build -t my-amazonlinux2-image .

これでmy-amazonlinux2-imageという名前のDockerイメージがビルドされます。

3. **Dockerコンテナを起動**

ビルドが成功したら、新しいイメージからコンテナを起動します。

docker run -d -p 8080:80 my-amazonlinux2-image

これで、ローカルマシンの8080番ポートがコンテナ内の80番ポートにフォワードされます。

Webブラウザでhttp://localhost:8080にアクセスすると、Apache HTTP Serverのデフォルトページが表示されるはずです。

これが基本的な例ですが、具体的な用途や必要なソフトウェアに応じてDockerfileはカスタマイズできます。

 

コンテナにログインするには?

Dockerコンテナにログイン(シェルへのアクセス)を行うには、docker execコマンドを使用します。このコマンドを使って、既に起動しているコンテナの中でコマンドを実行することができます。

具体的な手順は以下の通りです。

1. **コンテナIDまたはコンテナ名を確認**

まず、ログインしたいコンテナのIDまたは名前を知る必要があります。これは以下のコマンドでリスト形式で確認できます。

docker ps

このコマンドの出力から、ログインしたいコンテナのCONTAINER IDまたはNAMEをメモします。

2. **コンテナにログイン**

シェルへのアクセスを行いたい場合、以下のようなdocker execコマンドを使用します。

docker exec -it [コンテナIDまたはコンテナ名] /bin/bash

または、/bin/shを使用する場合:

docker exec -it [コンテナIDまたはコンテナ名] /bin/sh

これでコンテナ内のシェルにアクセスできます。

例:

- コンテナIDが1234567890abであれば、以下のように実行します。

docker exec -it 1234567890ab /bin/bash

- コンテナ名がmy_containerであれば、以下のように実行します。

docker exec -it my_container /bin/bash

この手順によって、コンテナ内部でコマンドを実行するためのシェルにアクセスできます。これはデバッグ、設定変更、ファイルの編集など、多くの用途で有用です。

記事タイトル検索