

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# コンテナでの AL2023 の使用
<a name="container"></a>

**注記**  
 AL2023 を使用して Amazon ECS でコンテナ化されたワークロードをホストする方法の詳細については、「[Amazon ECS コンテナホスト用 AL2023](ecs.md)」を参照してください。

 ユースケースに応じて、コンテナ内で AL2023 を使用する方法はいくつかあります。[AL2023 ベースコンテナイメージ](base-container.md) は、Amazon Linux 2 コンテナイメージと AL2023 最小 AMI に最も似ています。

 上級ユーザー向けに、AL2023.2 リリースで導入された最小コンテナイメージと、[ベアボーンコンテナ](barebones-containers.md)の構築方法を説明するドキュメントを提供しています。

 AL2023 は、AL2023 ベースのコンテナイメージ、または他の Linux 配布に基づくコンテナのいずれかの、コンテナ化されたワークロードをホストするためにも使用できます。[Amazon ECS コンテナホスト用 AL2023](ecs.md) を使用することも、付属のコンテナランタイムパッケージを直接使用することもできます。`docker`、`containerd`、`nerdctl` パッケージは AL2023 にインストールして使用できます。

**Topics**
+ [AL2023 ベースコンテナイメージの使用](base-container.md)
+ [AL2023 最小コンテナイメージ](minimal-container.md)
+ [必要最低限の AL2023 コンテナイメージの構築](barebones-containers.md)
+ [Amazon Linux 2023 コンテナイメージにインストールされているパッケージの比較](al2023-container-image-types.md)
+ [Amazon Linux 2023 最小 AMI とコンテナイメージにインストールされているパッケージの比較](al2023-container-ami.md)

# AL2023 ベースコンテナイメージの使用
<a name="base-container"></a>

AL2023 コンテナイメージは、AL2023 AMI に含まれているのと同じソフトウェアコンポーネントから構築されています。これは、Docker ワークロードのベースイメージとして任意の環境で使用できます。[Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/) (Amazon EC2) 内のアプリケーション用にすでに Amazon Linux AMI を使用している場合、Amazon Linux コンテナイメージでアプリケーションをコンテナ化できます。

ローカル開発環境で Amazon Linux コンテナイメージを使用し、Amazon [Elastic Container Service (Amazon](https://docs.aws.amazon.com/AmazonECS/latest/userguide/) ECS) AWS を使用してアプリケーションを にプッシュします。詳細については、「*Amazon Elastic Container Registry ユーザーガイド*」の「[Amazon ECS で Amazon ECR イメージを使用する](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html)」を参照してください。

Amazon Linux コンテナイメージは、Amazon ECR Public で入手できます。AL2023 に関するフィードバックは、指定された AWS 担当者を通じて、または GitHub の [amazon-linux-2023 リポジトリ](https://github.com/amazonlinux/amazon-linux-2023/issues)に問題を提出することで提供できます。

****Amazon ECR Public から Amazon Linux コンテナイメージをプルする方法****

1. Amazon Linux Public レジストリに Docker クライアントを認証します。認証トークンは 12 時間有効です。詳細については、「*Amazon Elastic Container Registry ユーザーガイド*」の「[プライベートレジストリの認証](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html)」を参照してください。
**注記**  
**get-login-password** コマンドは、最新バージョンの AWS CLI バージョン 2 を使用してサポートされています。詳細については、「*AWS Command Line Interface ユーザーガイド*」の「[Installing the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

   ```
   $ aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
   ```

   出力は次のとおりです。

   ```
   Login succeeded
   ```

1. **docker pull** コマンドを起動して Amazon Linux コンテナイメージを取得します。Amazon ECR Public Gallery で Amazon Linux コンテナイメージを表示するには、「[Amazon ECR Public Gallery - amazonlinux](https://gallery.ecr.aws/amazonlinux/amazonlinux)」を参照してください。
**注記**  
AL2023 Docker コンテナイメージを取得する場合、以下のいずれかの形式でタグを使用できます。  
AL2023 コンテナイメージの最新バージョンを取得するには、`:2023` タグを使用します。
AL2023 の特定のバージョンを入手するには、以下の形式を使用できます。  
`:2023.[0-7 release quarter].[release date].[build number]`
以下の例では、タグ `:2023` を使用して AL2023 の入手可能な最新のコンテナイメージを取得しています。

   ```
   $ docker pull public.ecr.aws/amazonlinux/amazonlinux:2023
   ```

1. (オプション) コンテナをローカルに実行します。

   ```
   $ docker run -it --security-opt seccomp=unconfined public.ecr.aws/amazonlinux/amazonlinux:2023 /bin/bash
   ```

**Docker Hub から AL2023 コンテナイメージを取得する方法**

1. **docker pull** コマンドを使用して AL2023 コンテナイメージを取得します。

   ```
   $ docker pull amazonlinux:2023
   ```

1. (オプション) コンテナをローカルに実行します。

   ```
   $ docker run -it amazonlinux:2023 /bin/bash
   ```
**注記**  
AL2023 のコンテナイメージは、`dnf` パッケージマネージャーのみを使用してソフトウェアパッケージをインストールします。つまり、追加のソフトウェアに使用できる、`amazon-linux-extras` または同等のコマンドはありません。

# AL2023 最小コンテナイメージ
<a name="minimal-container"></a>

**注記**  
 標準 AL2023 コンテナイメージは、ほとんどのユースケースに適しており、最小コンテナイメージへの導入は、通常の AL2023 コンテナイメージへの導入よりも作業が増える可能性があります。

 AL2023.2 で導入された AL2023 最小コンテナイメージは、標準のベースコンテナイメージとは異なり、他のパッケージのインストールに必要な最低限のパッケージのみが含まれます。最小コンテナイメージは、便利なパッケージセットではなく、パッケージの最小限のセットとして設計されています。

 AL2023 の最小コンテナイメージは、AL2023 ですでに利用可能なソフトウェアコンポーネントから構築されています。最小コンテナイメージの主な違いは、フル機能の Python ベースの `dnf` パッケージマネージャーではなく、`microdnf` を使用して `dnf` パッケージマネージャーを提供している点です。これにより、AL2023 AMI とベースコンテナイメージに含まれる `dnf` パッケージマネージャーの完全な機能セットが提供されないというトレードオフがあるものの、最小コンテナイメージのサイズは小さくなります。

 AL2023 最小コンテナイメージは、`provided.al2023` AWS Lambda ランタイム環境のベースを形成します。

 最小コンテナイメージに含まれるパッケージの詳細なリストについては、「[Amazon Linux 2023 コンテナイメージにインストールされているパッケージの比較](al2023-container-image-types.md)」を参照してください。

## 最小コンテナイメージのサイズ
<a name="container-minimal-size"></a>

 AL2023 の最小コンテナイメージに含まれるパッケージ数は、AL2023 ベースコンテナイメージよりも少ないため、サイズも大幅に小さくなります。Amazon Linux の現在と過去のリリースのコンテナイメージオプションの比較は、以下の表のとおりです。

**注記**  
 イメージサイズは [Amazon ECR Public Gallery の Amazon Linux](https://gallery.ecr.aws/amazonlinux/amazonlinux) に表示されているとおりです。


| イメージ | バージョン | イメージのサイズ | メモ | 
| --- | --- | --- | --- | 
| Amazon Linux 1 (AL1) | 2018.03.0.20230918.0 | 62.3 MB | x86-64 のみ | 
| Amazon Linux 2 | 2.0.20230926.0 | 64.2 MB | aarch64 は x86-64 よりも 1.6 MB 大きくなります | 
| Amazon Linux 2023 コンテナイメージ | 2023 年 2 月 2 日 2023 年 1002.0 | 52.4 MB |  | 
| Amazon Linux 2023 最小コンテナイメージ | 2023.2.20231002.0-minimal | 35.2 MB |  | 

## AL2023 最小コンテナイメージの使用
<a name="using-container-minimal"></a>

 AL2023 最小コンテナイメージは、ECR で利用可能で、`2023-minimal` タグは常に最新の AL2023 ベースの最小コンテナイメージを指しますが、`minimal` タグは AL2023 よりも新しいバージョンの Amazon Linux に更新される可能性があります。

 これらのタグは、次の例のとおり、`docker` を使用してプルできます。

```
$ docker pull public.ecr.aws/amazonlinux/amazonlinux:minimal
```

```
$ docker pull public.ecr.aws/amazonlinux/amazonlinux:2023-minimal
```

次の例は、最小コンテナイメージを取得し、その上に GCC をインストールする `Dockerfile` を説明しています。

```
FROM public.ecr.aws/amazonlinux/amazonlinux:2023-minimal
RUN dnf install -y gcc && dnf clean all
```

# 必要最低限の AL2023 コンテナイメージの構築
<a name="barebones-containers"></a>

AL2023 コンテナイメージは、AL2023 AMI に含まれているのと同じソフトウェアコンポーネントから構築されています。これには、パッケージマネージャー `dnf` など、ベースコンテナレイヤーを Amazon EC2 インスタンス上で実行する場合と同様に動作させるソフトウェアが含まれています。このセクションでは、アプリケーションに必要な最小限の依存関係のみを含むコンテナをゼロから構築する方法について説明します。

**注記**  
標準 AL2023 コンテナイメージは、ほとんどのユースケースに適しています。標準のコンテナイメージを使用すると、イメージ上に簡単に構築できます。必要最低限のコンテナイメージの場合、既存のイメージ上に構築することがより困難になります。

**アプリケーションの依存関係を最低限に抑えたコンテナを作成する方法**

1. ランタイム依存関係を決定します。これはアプリケーションによって異なります。

1. `FROM scratch` をビルドする `Dockerfile` または `Containerfile` を作成します。次の `Dockerfile` の例では、`bash` シェルとその依存関係のみを含むコンテナを構築できます。

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:2023 as build
   RUN mkdir /sysroot
   RUN dnf --releasever=$(rpm -q system-release --qf '%{VERSION}') \
     --installroot /sysroot \
     -y \
     --setopt=install_weak_deps=False \
     install bash
   
   FROM scratch
   COPY --from=build /sysroot /
   WORKDIR /
   ENTRYPOINT ["/bin/bash"]
   ```

   1. この `Dockerfile` は以下のように機能します。

     1.  `build` という名前の AL2023 コンテナを起動します。このコンテナはべアボーンコンテナのブートストラップに使用されます。このコンテナ自体はデプロイされませんが、デプロイするコンテナが生成されます。

     1.  `/sysroot` ディレクトリを作成します。このディレクトリは、`build` コンテナがべアボーンコンテナに必要な依存関係をインストールする場所になります。以降のステップでは、`/sysroot` パスはベアボーンイメージのルートディレクトリとなるようにパッケージ化されます。

         この `--installroot` オプションをこのように `dnf` に使用して、他の AL2023 イメージを作成します。これは、インストーラーとイメージ作成ツールを動作させる `dnf` の機能です。

     1.  `dnf` を呼び出して、`/sysroot` にパッケージをインストールします。

         `rpm -q system-release --qf '%{VERSION}'` コマンドは `system-release` パッケージをクエリ (`-q`) し、クエリ対象のパッケージのバージョン (`%{VERSION}` 変数は `RPM` のバージョンに対応する `rpm` 変数) を出力するようにクエリ形式 (`--qf`) を設定します。

         `dnf` の `--releasever` 引数を `build` コンテナ内の `system-release` バージョンに設定すると、Amazon Linux の更新されたコンテナベースイメージがリリースされるたびに、この `Dockerfile` を使用してベアボーンコンテナを再構築できます。

         などの任意の Amazon Linux 2023 バージョン`--releasever`に を設定できます2023.10.20260325。これにより、`build`コンテナは最新の AL2023 バージョンとして実行されますが、現在の AL2023 リリースに関係なく、2023.10.20260325 からベアボーンコンテナを構築します。

         `--setopt=install_weak_deps=False` 設定オプションでは、推奨や提案ではなく、*必要な*依存関係のみをインストールするように `dnf` に指示します。

     1. インストールしたシステムを空の (`FROM scratch`) コンテナのルートにコピーします。

     1. この `/bin/bash` の場合は、`ENTRYPOINT` を目的のバイナリに設定します。

1. 空のディレクトリを作成し、ステップ 2 の例の内容を `Dockerfile` という名前のファイルに追加します。

   ```
   $ mkdir al2023-barebones-bash-example
   	$ cd al2023-barebones-bash-example
   	$ cat > Dockerfile <<EOF
   FROM public.ecr.aws/amazonlinux/amazonlinux:2023 as build
   RUN mkdir /sysroot
   RUN dnf --releasever=$(rpm -q system-release --qf '%{VERSION}') \
     --installroot /sysroot \
     -y \
     --setopt=install_weak_deps=False \
     install bash && dnf --installroot /sysroot clean all
   
   FROM scratch
   COPY --from=build /sysroot /
   WORKDIR /
   ENTRYPOINT ["/bin/bash"]
   EOF
   ```

1. 次のコマンドを実行してコンテナを構築します。

   ```
   $ docker build -t al2023-barebones-bash-example
   ```

1. 以下のコマンドを使用してコンテナを実行し、`bash` オンリーコンテナがどれほど最小限であるかを確認します。

   ```
   $ docker run -it --rm al2023-barebones-bash-example
   bash-5.2# rpm
   bash: rpm: command not found
   bash-5.2# du -sh /usr/
   bash: du: command not found
   bash-5.2# ls
   bash: ls: command not found
   bash-5.2# echo /bin/*
   /bin/alias /bin/bash /bin/bashbug /bin/bashbug-64 /bin/bg /bin/catchsegv /bin/cd /bin/command /bin/fc /bin/fg /bin/gencat /bin/getconf /bin/getent /bin/getopts /bin/hash /bin/iconv /bin/jobs /bin/ld.so /bin/ldd /bin/locale /bin/localedef /bin/pldd /bin/read /bin/sh /bin/sotruss /bin/sprof /bin/type /bin/tzselect /bin/ulimit /bin/umask /bin/unalias /bin/wait /bin/zdump
   ```

より実用的な例として、以下の手順では `Hello World!` を表示する C アプリケーション用のコンテナを構築します。

1. 空のディレクトリを作成し、C ソースコードおよび `Dockerfile` を追加します。

   ```
   $ mkdir al2023-barebones-c-hello-world-example
   $ cd al2023-barebones-c-hello-world-example
   $ cat > hello-world.c <<EOF
   #include <stdio.h>
   int main(void)
   {
     printf("Hello World!\n");
     return 0;
   }
   EOF
   
   $ cat > Dockerfile <<EOF
   FROM public.ecr.aws/amazonlinux/amazonlinux:2023 as build
   COPY hello-world.c /
   RUN dnf -y install gcc
   RUN gcc -o hello-world hello-world.c
   RUN mkdir /sysroot
   RUN mv hello-world /sysroot/
   RUN dnf --releasever=$(rpm -q system-release --qf '%{VERSION}') \
     --installroot /sysroot \
     -y \
     --setopt=install_weak_deps=False \
     install glibc && dnf --installroot /sysroot clean all
   
   FROM scratch
   COPY --from=build /sysroot /
   WORKDIR /
   ENTRYPOINT ["/hello-world"]
   EOF
   ```

1. 以下のコマンドを使用して、コンテナを構築します。

   ```
   $ docker build -t al2023-barebones-c-hello-world-example .
   ```

1. 以下のコマンドを実行して、コンテナを起動します。

   ```
   $ docker run -it --rm al2023-barebones-c-hello-world-example
   Hello World!
   ```

# Amazon Linux 2023 コンテナイメージにインストールされているパッケージの比較
<a name="al2023-container-image-types"></a>

AL2023 ベースコンテナイメージに存在する RPM と AL2023 最小コンテナイメージに存在する RPM の比較

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/linux/al2023/ug/al2023-container-image-types.html)

# Amazon Linux 2023 最小 AMI とコンテナイメージにインストールされているパッケージの比較
<a name="al2023-container-ami"></a>

AL2023 最小 AMI に存在する RPM と、AL2023 ベースコンテナイメージと最小コンテナイメージに存在する RPM の比較

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/linux/al2023/ug/al2023-container-ami.html)