

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengonfigurasi instans kontainer Amazon ECS untuk gambar Docker pribadi
<a name="private-auth-container-instances"></a>

Agen kontainer Amazon ECS dapat melakukan otentikasi dengan registri pribadi, menggunakan otentikasi dasar. Bila Anda mengaktifkan autentikasi registri privat, Anda dapat menggunakan citra Docker privat dalam ketentuan tugas Anda. Fitur ini hanya didukung oleh tugas yang menggunakan EC2.

Metode lain untuk mengaktifkan otentikasi registri pribadi digunakan AWS Secrets Manager untuk menyimpan kredentif registri pribadi Anda dengan aman dan kemudian merujuknya dalam definisi wadah Anda. Hal ini mengizinkan tugas Anda untuk menggunakan citra dari repositori privat. Metode ini mendukung tugas menggunakan EC2 atau Fargate. Untuk informasi selengkapnya, lihat [Menggunakan non-AWS gambar kontainer di Amazon ECS](private-auth.md).

Agen kontainer Amazon ECS mencari dua variabel lingkungan saat diluncurkan:
+ `ECS_ENGINE_AUTH_TYPE`, yang menentukan tipe data autentikasi yang sedang dikirim.
+ `ECS_ENGINE_AUTH_DATA`, yang berisi kredensial autentikasi aktual.

Varian Linux dari Amazon ECS-optimized AMI memindai `/etc/ecs/ecs.config` file untuk variabel-variabel ini ketika instance container diluncurkan, dan setiap kali layanan dimulai (dengan **sudo start ecs** perintah). AMI yang bukan Amazon ECS-optimized harus menyimpan variabel lingkungan ini dalam file dan meneruskannya dengan `--env-file {{path_to_env_file}}` opsi ke **docker run** perintah yang memulai agen kontainer.

**penting**  
Kami tidak menyarankan Anda menyuntikkan variabel lingkungan otentikasi ini saat peluncuran instance dengan data pengguna Amazon EC2 atau meneruskannya dengan `--env` opsi ke **docker run** perintah. Metode ini tidak sesuai untuk data sensitif, seperti kredensial autentikasi. Untuk informasi tentang menambahkan kredensial autentikasi secara aman ke instans kontainer Anda, lihat [Menyimpan konfigurasi instance kontainer Amazon ECS di Amazon S3](ecs-config-s3.md).

## Format autentikasi
<a name="docker-auth-formats"></a>

Ada dua format yang tersedia untuk autentikasi registri privat, `dockercfg` dan `docker`.

**Format autentikasi dockercfg**  
Format `dockercfg` menggunakan informasi autentikasi yang disimpan dalam file konfigurasi yang dibuat ketika Anda menjalankan perintah **docker login**. Anda dapat membuat file ini dengan menjalankan **docker login** di sistem lokal dan memasukkan nama pengguna registri, kata sandi, dan alamat email. Anda juga dapat masuk ke instans kontainer dan menjalankan perintah di sana. Tergantung pada versi Docker Anda, file ini disimpan sebagai `~/.dockercfg` atau `~/.docker/config.json`.

```
cat ~/.docker/config.json
```

Output:

```
{
  "auths": {
    "https://index.docker.io/v1/": {
      "auth": "{{zq212MzEXAMPLE7o6T25Dk0i}}"
    }
  }
}
```

**penting**  
Versi Docker yang lebih baru membuat file konfigurasi seperti yang ditunjukkan pada contoh sebelumnya dengan `auths` objek luar. Agen Amazon ECS hanya mendukung data `dockercfg` otentikasi dalam format berikut, tanpa `auths` objek. Jika Anda memiliki utilitas **jq** yang terinstal, Anda dapat mengekstrak data ini dengan perintah berikut: **cat \~/.docker/config.json \| jq .auths**

```
cat ~/.docker/config.json | jq .auths
```

Output:

```
{
  "https://index.docker.io/v1/": {
    "auth": "{{zq212MzEXAMPLE7o6T25Dk0i}}",
    "email": "email@example.com"
  }
}
```

Dalam contoh sebelumnya, variabel lingkungan berikut harus ditambahkan ke file variabel lingkungan (`/etc/ecs/ecs.config`untuk Amazon ECS-optimized AMI) yang dimuat oleh agen kontainer Amazon ECS saat runtime. Jika Anda tidak menggunakan Amazon ECS-optimized AMI dan Anda memulai agen secara manual**docker run**, tentukan file variabel lingkungan dengan `--env-file {{path_to_env_file}}` opsi saat Anda memulai agen.

```
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"{{zq212MzEXAMPLE7o6T25Dk0i}}","email":"{{email@example.com}}"}}
```

Anda dapat mengonfigurasi beberapa registri privat dengan sintaksis berikut:

```
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"{{repo.example-01.com}}":{"auth":"{{zq212MzEXAMPLE7o6T25Dk0i}}","email":"{{email@example-01.com}}"},"{{repo.example-02.com}}":{"auth":"{{fQ172MzEXAMPLEoF7225DU0j}}","email":"{{email@example-02.com}}"}}
```

**Format autentikasi dockercfg**  
Format `docker` menggunakan representasi server registri JSON yang harus diautentikasi dengan agen. Hal ini juga mencakup parameter autentikasi yang diperlukan oleh registri tersebut (seperti nama pengguna, kata sandi, dan alamat email untuk akun tersebut). Untuk akun Docker Hub, representasi JSON terlihat seperti berikut ini:

```
{
  "https://index.docker.io/v1/": {
    "username": "{{my_name}}",
    "password": "{{my_password}}",
    "email": "{{email@example.com}}"
  }
}
```

Dalam contoh ini, variabel lingkungan berikut harus ditambahkan ke file variabel lingkungan (`/etc/ecs/ecs.config`untuk Amazon ECS-optimized AMI) yang dimuat oleh agen kontainer Amazon ECS saat runtime. Jika Anda tidak menggunakan Amazon ECS-optimized AMI, dan Anda memulai agen secara manual**docker run**, tentukan file variabel lingkungan dengan `--env-file {{path_to_env_file}}` opsi saat Anda memulai agen.

```
ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"{{my_name}}","password":"{{my_password}}","email":"{{email@example.com}}"}}
```

Anda dapat mengonfigurasi beberapa registri privat dengan sintaksis berikut:

```
ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA={"{{repo.example-01.com}}":{"username":"{{my_name}}","password":"{{my_password}}","email":"{{email@example-01.com}}"},"{{repo.example-02.com}}":{"username":"{{another_name}}","password":"{{another_password}}","email":"{{email@example-02.com}}"}}
```

## Prosedur
<a name="enabling-private-registry"></a>

Gunakan prosedur berikut untuk mengaktifkan registri pribadi untuk instans kontainer Anda.

**Untuk mengaktifkan pendaftaran pribadi di Amazon AMI ECS-optimized**

1. Masuk ke instans kontainer Anda menggunakan SSH.

1. Buka file `/etc/ecs/ecs.config` dan tambahkan nilai `ECS_ENGINE_AUTH_TYPE` dan `ECS_ENGINE_AUTH_DATA` untuk registri dan akun Anda:

   ```
   sudo vi /etc/ecs/ecs.config
   ```

   Contoh ini mengautentikasi akun pengguna Docker Hub:

   ```
   ECS_ENGINE_AUTH_TYPE=docker
   ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"{{my_name}}","password":"{{my_password}}","email":"{{email@example.com}}"}}
   ```

1. Lakukan pemeriksaan untuk melihat apakah agen Anda menggunakan variabel lingkungan `ECS_DATADIR` untuk menyimpan statusnya:

   ```
   docker inspect ecs-agent | grep ECS_DATADIR
   ```

   Output:

   ```
   "ECS_DATADIR=/data",
   ```
**penting**  
Jika perintah sebelumnya tidak mengembalikan variabel lingkungan `ECS_DATADIR`, Anda harus menghentikan setiap tugas yang berjalan pada instans kontainer ini sebelum menghentikan agen. Agen yang lebih baru dengan variabel lingkungan `ECS_DATADIR` menyimpan statusnya dan Anda dapat menghentikannya saat tugas sedang berjalan tanpa masalah. Untuk informasi selengkapnya, lihat [Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).

1. Hentikan layanan `ecs`:

   ```
   sudo stop ecs
   ```

   Output:

   ```
   ecs stop/waiting
   ```

1. Mulai ulang layanan `ecs`.
   + Untuk Amazon ECS-optimized Amazon Linux 2 AMI:

     ```
     sudo systemctl restart ecs
     ```
   + Untuk AMI ECS-optimized Amazon Amazon Linux:

     ```
     sudo stop ecs && sudo start ecs
     ```

1. (Opsional) Anda dapat memastikan bahwa agen sedang berjalan dan melihat beberapa informasi tentang instans kontainer baru dengan melakukan kueri pada operasi API introspeksi agen. Untuk informasi selengkapnya, lihat [Introspeksi wadah Amazon ECS](ecs-agent-introspection.md).

   ```
   curl http://localhost:51678/v1/metadata
   ```