

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

# Memindahkan gambar melalui siklus hidupnya di Amazon ECR
<a name="getting-started-cli"></a>

Jika Anda menggunakan Amazon ECR untuk pertama kalinya, gunakan langkah-langkah berikut dengan CLI Docker dan AWS CLI untuk membuat gambar sampel, mengautentikasi ke registri default, dan membuat repositori pribadi. Kemudian dorong gambar ke dan tarik gambar dari repositori pribadi. Setelah selesai dengan gambar sampel, hapus gambar sampel dan repositori.

Untuk menggunakan Konsol Manajemen AWS alih-alih AWS CLI, lihat[Membuat repositori pribadi Amazon ECR untuk menyimpan gambar](repository-create.md).

[Untuk informasi selengkapnya tentang alat lain yang tersedia untuk mengelola AWS sumber daya Anda, termasuk toolkit IDE yang berbeda AWS SDKs, dan alat baris PowerShell perintah Windows, lihat http://aws.amazon.com/tools/.](https://aws.amazon.com/tools/)

## Prasyarat
<a name="getting-started-cli-prereqs"></a>

Jika Anda tidak memiliki yang terbaru AWS CLI dan Docker diinstal dan siap digunakan, gunakan langkah-langkah berikut untuk menginstal kedua alat ini.

### Instal AWS CLI
<a name="cli-install"></a>

Untuk menggunakan AWS CLI dengan Amazon ECR, instal AWS CLI versi terbaru. Untuk selengkapnya, lihat [Menginstal AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) di *Panduan AWS Command Line Interface Pengguna*.

### Instal Docker
<a name="cli-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 [Langkah 1: Buat citra Docker](#cli-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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-instance.html) di *Panduan Pengguna Amazon EC2*.

1. Terhubung ke instans Anda. Untuk informasi selengkapnya, lihat [Connect to Linux Instance Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.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 me-reboot instans Anda jika Anda melihat kesalahan berikut:  

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

## Langkah 1: Buat citra Docker
<a name="cli-create-image"></a>

Pada langkah ini, Anda membuat gambar Docker dari aplikasi web sederhana, dan mengujinya di sistem lokal Anda atau instans Amazon EC2.

**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/engine/reference/builder/).

   ```
   touch Dockerfile
   ```

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

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:latest
   
   # Install dependencies
   RUN yum update -y && \
    yum install -y httpd
   
   # Install apache and 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 2 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. Instruksi `EXPOSE` mengekspos port 80 pada kontainer, dan instruksi `CMD` 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.

   ```
   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. Untuk informasi lebih lanjut tentang **docker run**, buka [Referensi menjalankan Docker](https://docs.docker.com/engine/reference/run/).

   ```
   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/).
   + Jika Anda menggunakan **docker-machine** di komputer Windows atau Mac, temukan alamat IP VirtualBox VM yang menghosting Docker dengan **docker-machine ip** perintah, ganti *machine-name* dengan nama mesin docker yang Anda gunakan.

     ```
     docker-machine ip machine-name
     ```

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

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

## Langkah 2: Buat repositori
<a name="cli-create-repository"></a>

Kini Anda memiliki citra yang akan didorong ke Amazon ECR, Anda harus membuat repositori untuk menahannya. Dalam contoh ini, Anda membuat repositori yang disebut `hello-repository` yang kemudian Anda mendorong citra `hello-world:latest`. Untuk membuat repositori, jalankan perintah berikut:

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

## Langkah 3: Otentikasi ke registri default Anda
<a name="cli-authenticate-registry"></a>

Setelah Anda menginstal dan mengkonfigurasi AWS CLI, otentikasi CLI Docker ke registri default Anda. Dengan cara tersebut, perintah **docker** dapat mendorong dan menarik citra dengan Amazon ECR. AWS CLI Ini menyediakan **get-login-password** perintah untuk menyederhanakan proses otentikasi.

Untuk mengautentikasi Docker ke registri Amazon ECR dengan get-login-password, jalankan perintah. **aws ecr get-login-password** Ketika meneruskan token otorisasi ke perintah **docker login**, gunakan nilai `AWS` untuk nama pengguna dan tentukan URI registri Amazon ECR yang ingin Anda autentikasi. Jika melakukan autentikasi untuk beberapa registri, Anda harus mengulangi perintah tersebut untuk setiap registri.
**penting**  
Jika Anda menerima pesan kesalahan, instal atau upgrade ke versi terbaru AWS CLI. Untuk informasi selengkapnya, lihat [Menginstal AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) dalam *Panduan Pengguna Amazon EKS AWS Command Line Interface *.
+ [get-login-password](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login-password.html) (AWS CLI)

  ```
  aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  ```
+ [Dapatkan- ECRLogin Perintah](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-ECRLoginCommand.html) (AWS Tools for Windows PowerShell)

  ```
  (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  ```

## Langkah 4: Dorong citra ke Amazon ECR
<a name="cli-push-image"></a>

Sekarang Anda dapat mendorong citra Anda ke repositori Amazon ECR yang Anda buat di bagian sebelumnya. Gunakan **docker** CLI untuk mendorong gambar setelah prasyarat berikut terpenuhi:
+ Versi minimum diinstal: 1.7. **docker**
+ Token otorisasi Amazon ECR telah dikonfigurasi dengan. **docker login**
+ Amazon ECR repositori tersedia dan pengguna memiliki akses untuk mendorong ke repositori.

Setelah persyaratan tersebut terpenuhi, Anda dapat mendorong citra Anda ke repositori yang baru dibuat di registrasi default untuk akun Anda.

**Untuk membuat tanda dan mendorong citra ke Amazon ECR**

1. Cantumkan citra yang telah Anda simpan secara lokal untuk mengidentifikasi citra yang akan di-tanda dan didorong.

   ```
   docker images
   ```

   Output:

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

1. Tandai citra untuk mendorongnya ke repositori Anda.

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

1. Mendorong citra

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

   Output:

   ```
   The push refers to a repository [aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository] (len: 1)
   e9ae3c220b23: Pushed
   a6785352b25c: Pushed
   0998bf8fb9e9: Pushed
   0a85502c06c9: Pushed
   latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636EXAMPLE size: 6774
   ```

## Langkah 5: Menarik citra dari Amazon ECR
<a name="cli-pull-image"></a>

Setelah gambar Anda didorong ke repositori Amazon ECR Anda, Anda dapat menariknya dari lokasi lain. Gunakan **docker** CLI untuk menarik gambar setelah prasyarat berikut terpenuhi:
+ Versi minimum diinstal: 1.7. **docker**
+ Token otorisasi Amazon ECR telah dikonfigurasi dengan. **docker login**
+ Amazon ECR repositori tersedia dan pengguna memiliki akses untuk melakukan penarikan dari repositori.

Setelah prasyarat tersebut terpenuhi, Anda bisa menarik citra Anda. Untuk menarik citra contoh Anda dari Amazon ECR, jalankan perintah berikut:

```
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository:latest
```

Output:

```
latest: Pulling from hello-repository
0a85502c06c9: Pull complete
0998bf8fb9e9: Pull complete
a6785352b25c: Pull complete
e9ae3c220b23: Pull complete
Digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636EXAMPLE
Status: Downloaded newer image for aws_account_id.dkr.region.amazonaws.com/hello-repository:latest
```

## Langkah 6: Menghapus citra
<a name="cli-delete-image"></a>

Jika Anda tidak lagi membutuhkan gambar di salah satu repositori Anda, Anda dapat menghapus gambar tersebut. Untuk menghapus gambar, tentukan repositori yang ada di dalamnya dan `imageDigest` nilai `imageTag` atau untuk gambar tersebut. Contoh berikut menghapus gambar di `hello-repository` repositori dengan tag gambar. `latest` Untuk menghapus gambar contoh Anda dari repositori, jalankan perintah berikut:

```
aws ecr batch-delete-image \
      --repository-name hello-repository \
      --image-ids imageTag=latest \
      --region region
```

## Langkah 7: Menghapus repositori
<a name="cli-delete-repository"></a>

Jika Anda tidak lagi membutuhkan seluruh repositori gambar, Anda dapat menghapus repositori. Contoh berikut menggunakan `--force` bendera untuk menghapus repositori yang berisi gambar. Untuk menghapus repositori yang berisi gambar (dan semua gambar di dalamnya), jalankan perintah berikut:

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