

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

# Membuat Image Kontainer untuk Digunakan di Amazon ECS
<a name="create-container-image"></a>

Amazon ECS menggunakan gambar Docker dalam definisi tugas untuk meluncurkan kontainer. Docker adalah teknologi yang menyediakan alat bagi Anda untuk membangun, menjalankan, menguji, dan menyebarkan aplikasi terdistribusi dalam wadah. 

Amazon ECS menjadwalkan aplikasi kontainer ke instans kontainer atau ke Fargate. AWS Aplikasi kontainer dikemas sebagai gambar kontainer. Contoh ini membuat gambar kontainer untuk server web.

Anda dapat membuat gambar Docker pertama Anda, dan kemudian mendorong gambar itu ke Amazon ECR, yang merupakan registri penampung, untuk digunakan dalam definisi tugas Amazon ECS Anda. Panduan ini mengasumsikan bahwa Anda memiliki pemahaman dasar tentang apa itu Docker dan cara kerjanya. Untuk informasi selengkapnya tentang Docker, lihat [Apa itu Docker](https://aws.amazon.com/docker/)? dan [dokumentasi Docker](https://docs.docker.com/get-started/docker-overview/).

## Prasyarat
<a name="create-container-image-prerequisites"></a>

Sebelum Anda mulai, pastikan prasyarat berikut terpenuhi.
+ Pastikan Anda telah menyelesaikan langkah-langkah penyiapan Amazon ECR. Untuk informasi selengkapnya, lihat [Memindahkan gambar melalui siklus hidupnya di Amazon ECR di Panduan Pengguna Amazon Elastic](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html) *Container Registry*.
+ Pengguna Anda memiliki izin IAM yang diperlukan untuk mengakses dan menggunakan layanan Amazon ECR. Untuk informasi selengkapnya, lihat [kebijakan terkelola Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam-awsmanpol.html).
+ Anda telah menginstal Docker. Untuk langkah-langkah instalasi Docker untuk Amazon Linux 2023, lihat. [Menginstal Docker di AL2023](#create-container-image-install-docker) Untuk semua sistem operasi lainnya, lihat dokumentasi Docker di ikhtisar [Docker Desktop](https://docs.docker.com/desktop/).
+ Anda telah AWS CLI diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat [Menginstal atau memperbarui ke versi terbaru](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) dari *Panduan AWS Command Line Interface Pengguna*. AWS CLI

Jika Anda tidak memiliki atau memerlukan lingkungan pengembangan lokal dan Anda lebih suka menggunakan instans Amazon EC2 untuk menggunakan Docker, kami menyediakan langkah-langkah berikut untuk meluncurkan instans Amazon EC2 menggunakan Amazon Linux 2023 dan menginstal Docker Engine dan CLI Docker.

### Menginstal Docker di AL2023
<a name="create-container-image-install-docker"></a>

Docker tersedia dalam banyak sistem operasi yang berbeda, termasuk sebagian besar distribusi Linux modern, seperti Ubuntu, dan bahkan macOS dan Windows. Untuk informasi lebih lanjut tentang cara menginstal Docker pada sistem operasi tertentu Anda, kunjungi situs web[panduan penginstalan Docker](https://docs.docker.com/engine/installation/#installation).

Anda tidak memerlukan sistem pengembangan lokal untuk menggunakan Docker. Jika Anda sudah menggunakan Amazon EC2, Anda dapat meluncurkan instans Amazon Linux 2023 dan menginstal Docker untuk memulai.

Jika Anda sudah menginstal Docker, langsung ke [Membuat citra Docker](#create-container-image-create-image).

**Untuk menginstal Docker pada instans Amazon EC2 menggunakan Amazon Linux 2023 AMI**

1. Luncurkan instance dengan AMI Amazon Linux 2023 terbaru. Untuk informasi selengkapnya, lihat [Meluncurkan instans EC2 menggunakan wizard instans peluncuran di konsol](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) di Panduan *Pengguna Amazon EC2*.

1. Terhubung ke instans Anda. Untuk informasi selengkapnya, lihat [Connect ke instans EC2 Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html) di Panduan *Pengguna Amazon EC2*.

1. Perbarui paket yang diinstal dan paket cache pada instans Anda.

   ```
   sudo yum update -y
   ```

1. Instal paket Edisi Komunitas Docker terbaru.

   ```
   sudo yum install docker
   ```

1. Mulai layanan Docker.

   ```
   sudo service docker start
   ```

1. Tambahkan `ec2-user` ke grup `docker` sehingga Anda dapat menjalankan perintah Docker tanpa menggunakan `sudo`.

   ```
   sudo usermod -a -G docker ec2-user
   ```

1. Keluar dan masuk kembali untuk mengambil izin grup `docker` yang baru. Anda dapat melakukannya dengan menutup jendela terminal SSH Anda saat ini dan menghubungkan kembali ke instans Anda yang baru. Sesi SSH baru Anda akan memiliki izin grup `docker` yang sesuai.

1. Verifikasi bahwa `ec2-user` dapat menjalankan perintah Docker tanpa `sudo`.

   ```
   docker info
   ```
**catatan**  
Dalam beberapa kasus, Anda mungkin perlu melakukan booting ulang pada instans Anda untuk memberikan izin bagi `ec2-user` untuk mengakses daemon Docker. Coba booting ulang instans Anda jika Anda melihat kesalahan berikut ini:  

   ```
   Cannot connect to the Docker daemon. Is the docker daemon running on this host?
   ```

## Membuat citra Docker
<a name="create-container-image-create-image"></a>

Definisi tugas Amazon ECS menggunakan gambar kontainer untuk meluncurkan kontainer pada instance kontainer di cluster Anda. Di bagian ini, Anda membuat gambar Docker dari aplikasi web sederhana, dan mengujinya di sistem lokal Anda atau instans Amazon EC2, lalu mendorong gambar ke registri penampung Amazon ECR sehingga Anda dapat menggunakannya dalam definisi tugas Amazon ECS.

**Untuk membuat citra Docker dari aplikasi web sederhana**

1. Buat file bernama `Dockerfile`. Dockerfile adalah manifes yang menjelaskan citra dasar yang akan digunakan untuk citra Docker Anda dan apa yang ingin Anda instal dan jalankan di atasnya. Untuk informasi selengkapnya tentang Dockerfiles, buka [Referensi Dockerfile](https://docs.docker.com/reference/dockerfile/).

   ```
   touch Dockerfile
   ```

1. Edit `Dockerfile` yang baru saja Anda buat dan tambahkan konten berikut.

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:latest
   
   # Update installed packages and install Apache
   RUN yum update -y && \
    yum install -y httpd
   
   # Write hello world message
   RUN echo 'Hello World!' > /var/www/html/index.html
   
   # Configure Apache
   RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \
    echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \
    echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \
    chmod 755 /root/run_apache.sh
   
   EXPOSE 80
   
   CMD /root/run_apache.sh
   ```

   Dockerfile ini menggunakan gambar Amazon Linux 2023 publik yang dihosting di Amazon ECR Public. `RUN`Instruksi memperbarui cache paket, menginstal beberapa paket perangkat lunak untuk server web, dan kemudian menulis “Hello World\$1” konten ke root dokumen server web. `EXPOSE`Instruksi berarti bahwa port 80 pada wadah adalah yang mendengarkan, dan `CMD` instruksi memulai server web.

1. <a name="sample-docker-build-step"></a>Membangun citra Docker dari Dockerfile Anda.
**catatan**  
Beberapa versi Docker mungkin memerlukan jalur lengkap ke Dockerfile Anda dalam perintah berikut, bukan jalur relatif yang ditunjukkan di bawah ini.  
Jika Anda menjalankan perintah sistem berbasis ARM, seperti [Apple Silicon](https://support.apple.com/en-gb/116943), gunakan opsi --platform “--platform linux/amd64".

   ```
   docker build -t hello-world .
   ```

1. Buat daftar gambar kontainer Anda.

   ```
   docker images --filter reference=hello-world
   ```

   Output:

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       194MB
   ```

1. Jalankan citra yang baru dibuat. Opsi `-p 80:80` memetakan port 80 yang terbuka pada kontainer ke port 80 pada sistem host. 

   ```
   docker run -t -i -p 80:80 hello-world
   ```
**catatan**  
Output dari server web Apache ditampilkan di jendela terminal. Anda dapat mengabaikan pesan “`Could not reliably determine the fully qualified domain name`“.

1. Buka peramban dan arahkan ke server yang menjalankan Docker dan meng-host kontainer Anda.
   + Jika Anda menggunakan instans EC2, nilai ini adalah nilai **DNS Publik** untuk server, yang merupakan alamat yang sama yang Anda gunakan untuk terhubung ke instans dengan SSH. Pastikan bahwa grup keamanan untuk instans Anda mengizinkan lalu lintas masuk pada port 80.
   + Jika Anda menjalankan Docker secara lokal, arahkan peramban Anda ke [http://localhost/](http://localhost/).

   Anda akan melihat halaman web dengan pernyataan “Hello World\$1” .

1. Hentikan kontainer Docker dengan mengetik **Ctrl \$1 c**.

## Dorong gambar Anda ke Amazon Elastic Container Registry
<a name="create-container-image-push-ecr"></a>

Amazon ECR adalah layanan registri gambar terkelola yang AWS dikelola. Anda dapat menggunakan CLI Docker untuk mendorong, menarik, dan mengelola gambar di repositori Amazon ECR Anda. Untuk detail produk Amazon ECR, studi kasus pelanggan unggulan, dan FAQs, lihat [halaman detail produk Amazon Elastic Container Registry](https://aws.amazon.com/ecr).

**Untuk menandai gambar Anda dan mendorongnya ke Amazon ECR**

1. Buat repositori Amazon ECR untuk menyimpan gambar Anda. `hello-world` Perhatikan `repositoryUri` pada outputnya.

   Gantikan`region`, dengan Anda Wilayah AWS, misalnya,`us-east-1`.

   ```
   aws ecr create-repository --repository-name hello-repository --region region
   ```

   Output:

   ```
   {
       "repository": {
           "registryId": "aws_account_id",
           "repositoryName": "hello-repository",
           "repositoryArn": "arn:aws:ecr:region:aws_account_id:repository/hello-repository",
           "createdAt": 1505337806.0,
           "repositoryUri": "aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository"
       }
   }
   ```

1. Tandai citra `hello-world` dengan nilai `repositoryUri` dari langkah sebelumnya.

   ```
   docker tag hello-world aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
   ```

1. Jalankan perintah **aws ecr get-login-password**. Tentukan URI registri yang ingin Anda autentikasi. Untuk informasi selengkapnya, lihat [Autentikasi Registri](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth) dalam *Panduan Pengguna Amazon Elastic Container Registry*.

   ```
   aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
   ```

   Output:

   ```
   Login Succeeded
   ```
**penting**  
Jika Anda menerima kesalahan, instal atau perbarui ke versi terbaru AWS CLI. Untuk informasi selengkapnya, lihat [Menginstal atau memperbarui ke versi terbaru](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) dari *Panduan AWS Command Line Interface Pengguna*. AWS CLI

1. Dorong gambar ke Amazon ECR dengan `repositoryUri` nilai dari langkah sebelumnya.

   ```
   docker push aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
   ```

## Bersihkan
<a name="create-container-image-cleanup"></a>

Untuk melanjutkan dengan membuat definisi tugas Amazon ECS dan meluncurkan tugas dengan gambar penampung Anda, lewati ke file. [Langkah selanjutnya](#create-container-image-next-steps) Setelah selesai bereksperimen dengan gambar Amazon ECR Anda, Anda dapat menghapus repositori sehingga Anda tidak dikenakan biaya untuk penyimpanan gambar.

```
aws ecr delete-repository --repository-name hello-repository --region region --force
```

## Langkah selanjutnya
<a name="create-container-image-next-steps"></a>

Definisi tugas Anda memerlukan peran eksekusi tugas. Untuk informasi selengkapnya, lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md).

Setelah Anda membuat dan mendorong gambar penampung Anda ke Amazon ECR, Anda dapat menggunakan gambar itu dalam definisi tugas. Untuk informasi selengkapnya, lihat salah satu dari berikut ini:
+ [Pelajari cara membuat tugas Amazon ECS Linux untuk Fargate](getting-started-fargate.md)
+ [Pelajari cara membuat tugas Amazon ECS Windows untuk Fargate](Windows_fargate-getting_started.md)
+ [Membuat tugas Amazon ECS Linux untuk Fargate dengan AWS CLI](ECS_AWSCLI_Fargate.md)