# Docker Hardened Images 向けの Container AutoFix

Container AutoFix は、`dhi.io` 上の Docker Hardened Images (DHI) のベースイメージをアップグレードできます。`dhi.io` からのプルには Docker ログインが必要なため、Aikido で Docker Hub レジストリを接続してください。AutoFix はその認証情報を使ってイメージをプルします。

## 前提条件

* Docker Hardened Images にアクセスできる Docker アカウント。
* `dhi.io` のベースイメージを使用する Dockerfile。例:

{% code title="Dockerfile" %}
```dockerfile
FROM dhi.io/node:24-alpine3.23-dev AS build-base
# ...

FROM dhi.io/node:24-alpine3.23 AS runner
# ...
```
{% endcode %}

## 仕組み

Container AutoFix は、より新しいベースイメージタグでイメージを再ビルドし、各アップグレードでどの問題が修正されるかを確認します。ベースイメージが `dhi.io/` で始まる場合、Aikido はワークスペースに接続された Docker Hub レジストリの認証情報を使って `dhi.io` にログインします。

Docker Hub レジストリが接続されていない場合、Container AutoFix は次のエラーで失敗します:

```text
The registry for the private base image could not be found, container autofix is not available.
```

## Docker Hardened Images 用に Docker Hub を接続する

{% stepper %}
{% step %}
### Docker アクセストークンを作成する

[Docker Home](https://app.docker.com/) で **Account settings** → **Personal access tokens** に移動し、**Generate new token** をクリックします。説明を入力し、**Repository permissions** を **Repo Public Read-only** に設定して、**Generate** をクリックします。トークンをコピーします。

<figure><img src="https://help.aikido.dev/_assets/fbddda8a9570/docker-hub-personal-access-token-repo-public-read-only.png" alt="Repository permissions が Repo Public Read-only に設定された Docker のアクセストークン作成ページ"><figcaption></figcaption></figure>

代わりに組織アクセストークンを使用する場合は、**Read public repositories** 権限を付与してください。次のステップでは、ユーザー名として Docker の組織名を使用します。
{% endstep %}

{% step %}
### Aikido で Docker Hub を接続する

[**Settings** → **Containers**](https://app.aikido.dev/settings/container-image-registry) に移動し、**Connect Registry** をクリックして **Docker Hub** を選択します。

<figure><img src="https://help.aikido.dev/_assets/5fe2ffa47099/connect-container-registry-docker-hub.png" alt="AWS Elastic Container Registry と Azure Container Registry の隣に Docker Hub が表示された Scan Your Container Images モーダル"><figcaption></figcaption></figure>
{% endstep %}

{% step %}
### 認証情報を入力する

フォームに入力し、**Save** をクリックします:

* **Username:** Docker のユーザー名。組織アクセストークンの場合は Docker の組織名。
* **Access token:** 最初のステップで作成したトークン。
* **Organization name:** 任意。Docker Hardened Images では不要です。
{% endstep %}

{% step %}
### Container AutoFix を再実行する

[**AutoFix** → **Cloud** → **Containers**](https://app.aikido.dev/issues/fix/container) に移動し、コンテナのアクションメニューで **Regenerate AutoFix** をクリックします。まだ AutoFix がない場合は **Create AutoFix** をクリックします。これで AutoFix が `dhi.io` のベースイメージをプルし、アップグレードを提案します。
{% endstep %}
{% endstepper %}

## トラブルシューティング

### AutoFix がまだレジストリを見つけられない

[**Settings** → **Containers**](https://app.aikido.dev/settings/container-image-registry) で、Docker Hub レジストリが接続され、有効になっていることを確認してください。

### AutoFix が `dhi.io` イメージをプルできない

Aikido はワークスペース内で最初に有効な Docker Hub レジストリを使用します。そのトークンがまだ有効であること、およびアカウントが Docker Hardened Images にアクセスできることを確認してください。トークンが期限切れまたは失効している場合は、新しいトークンを生成してレジストリを更新してください。

## 関連情報

{% content-ref url="setting-up-container-autofix.md" %}
[setting-up-container-autofix.md](https://help.aikido.dev/docs/docs-ja/autofix-and-remediation/configure/setting-up-container-autofix)
{% endcontent-ref %}

{% content-ref url="../scope/ai-autofix-for-containers.md" %}
[ai-autofix-for-containers.md](https://help.aikido.dev/docs/docs-ja/autofix-and-remediation/scope/ai-autofix-for-containers)
{% endcontent-ref %}

{% content-ref url="../../container-image-scanning/standalone-registries/docker-hub-images.md" %}
[docker-hub-images.md](https://help.aikido.dev/docs/docs-ja/container-image-scanning/standalone-registries/docker-hub-images)
{% endcontent-ref %}
