Bekerja dengan layanan Amazon Elastic Container Registry di AWS Cloud9 - AWS Cloud9

AWS Cloud9 tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Cloud9 dapat terus menggunakan layanan seperti biasa. Pelajari lebih lanjut”

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

Bekerja dengan layanan Amazon Elastic Container Registry di AWS Cloud9

Anda dapat mengakses layanan Amazon Elastic Container Registry (Amazon ECR) langsung dari Explorer AWS di IDE. AWS Cloud9 Anda dapat menggunakan Amazon ECR untuk mendorong gambar program ke repositori Amazon ECR. Untuk memulai, ikuti langkah-langkah ini:

  1. Buat Dockerfile yang berisi informasi yang diperlukan untuk membangun gambar.

  2. Buat gambar dari Dockerfile itu dan beri tag gambar untuk diproses.

  3. Buat repositori yang ada di dalam instans Amazon ECR Anda.

  4. Dorong gambar yang ditandai ke repositori Anda.

Prasyarat

Sebelum Anda dapat menggunakan fitur Amazon ECR dari AWS Toolkit untuk AWS Cloud9, pastikan Anda memenuhi prasyarat ini terlebih dahulu. Prasyarat ini sudah diinstal sebelumnya di IDE untuk lingkungan AWS Cloud9 Amazon EC2 dan diperlukan untuk mengakses AWS Cloud9 Amazon ECR.

1. Membuat Dockerfile

Docker menggunakan file yang disebut Dockerfile untuk menentukan gambar yang dapat didorong dan disimpan di repositori jarak jauh. Sebelum Anda dapat mengunggah gambar ke repositori ECR, buat Dockerfile dan kemudian buat gambar dari Dockerfile itu.

Membuat Dockerfile
  1. Untuk menavigasi ke direktori tempat Anda ingin menyimpan Dockerfile Anda, pilih opsi Toggle Tree di bilah navigasi kiri dalam IDE Anda. AWS Cloud9

  2. Buat file baru bernama Dockerfile.

    catatan

    AWS Cloud9 IDE mungkin meminta Anda untuk memilih jenis file atau ekstensi file. Jika ini terjadi, pilih plaintext. AWS Cloud9 IDE memiliki ekstensi “dockerfile”. Namun, kami tidak menyarankan Anda menggunakannya. Ini karena ekstensi dapat menyebabkan konflik dengan versi tertentu dari Docker atau aplikasi terkait lainnya.

Mengedit Dockerfile Anda menggunakan IDE AWS Cloud9

Jika Dockerfile Anda memiliki ekstensi file, buka menu konteks (klik kanan) untuk file tersebut dan hapus ekstensi file. Sebuah Dockerfile dengan ekstensi dapat menyebabkan konflik dengan versi tertentu dari Docker atau aplikasi terkait lainnya.

Setelah ekstensi file dihapus dari Dockerfile Anda:

  1. Buka Dockerfile kosong langsung di AWS Cloud9 IDE.

  2. Salin isi contoh berikut ke Dockerfile Anda.

    contoh Templat gambar Dockerfile
    FROM ubuntu:22.04 # Install dependencies RUN apt-get update && \ apt-get -y install apache2 # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \ echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh

    Ini adalah Dockerfile yang menggunakan gambar Ubuntu 22.04. Petunjuk RUN memperbarui cache paket. Instal paket perangkat lunak untuk server web, lalu tulis “Hello World!” konten ke root dokumen server web. Instruksi EXPOSE mengekspos port 80 pada wadah, dan instruksi CMD memulai server web.

  3. Simpan Dockerfile Anda.

2. Membangun gambar Anda dari Dockerfile

Dockerfile yang Anda buat berisi informasi yang diperlukan untuk membangun gambar untuk suatu program. Sebelum Anda dapat mendorong gambar itu ke instans Amazon ECR Anda, buat dulu gambarnya.

Membangun gambar dari Dockerfile Anda
  1. Untuk menavigasi ke direktori yang berisi Dockerfile Anda, gunakan CLI Docker atau CLI yang terintegrasi dengan instance Docker Anda.

  2. Untuk membuat gambar yang ditentukan di Dockerfile Anda, jalankan perintah build Docker dari direktori yang sama dengan Dockerfile.

    docker build -t hello-world .
  3. Untuk memverifikasi bahwa gambar telah dibuat dengan benar, jalankan perintah gambar Docker.

    docker images --filter reference=hello-world

    Outputnya adalah sebagai berikut.

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  4. Untuk menjalankan gambar yang baru dibangun berdasarkan Ubuntu 22.04, gunakan perintah echo.

    catatan

    Langkah ini tidak diperlukan untuk membuat atau mendorong gambar Anda. Namun, Anda dapat melihat bagaimana gambar program bekerja saat dijalankan.

    FROM ubuntu:22.04 CMD ["echo", "Hello from Docker in Cloud9"]

    Kemudian, jalankan dan bangun dockerfile. Anda harus menjalankan perintah ini dari direktori yang sama dengan dockerfile.

    docker build -t hello-world . docker run --rm hello-world

    Outputnya adalah sebagai berikut.

    Hello from Docker in Cloud9

    Untuk informasi selengkapnya tentang perintah Docker run, lihat referensi Docker run di situs web Docker.

3. Membuat repositori baru

Untuk mengunggah gambar Anda ke instans Amazon ECR Anda, buat repositori baru tempat gambar tersebut dapat disimpan.

Membuat repositori Amazon ECR baru
  1. Dari bilah navigasi AWS Cloud9 IDE, pilih ikon AWS Toolkit.

  2. Perluas menu AWS Explorer.

  3. Temukan default Wilayah AWS yang terkait dengan Anda Akun AWS. Kemudian, pilih untuk melihat daftar layanan yang melalui AWS Cloud9 IDE.

  4. Buka menu konteks (klik kanan) untuk opsi ECR untuk memulai proses Create new repository. Kemudian, pilih Create Repository.

  5. Untuk menyelesaikan proses, ikuti prompt.

  6. Setelah proses selesai, Anda dapat mengakses repositori baru Anda dari bagian ECR pada menu Explorer. AWS

4. Mendorong, menarik, dan menghapus gambar

Setelah Anda membuat gambar dari Dockerfile dan membuat repositori, Anda dapat mendorong gambar Anda ke repositori Amazon ECR Anda. Selain itu, menggunakan AWS Explorer dengan Docker dan AWS CLI, Anda dapat melakukan hal berikut:

  • Tarik gambar dari repositori Anda.

  • Hapus gambar yang disimpan di repositori Anda.

  • Hapus repositori Anda.

Mengautentikasi Docker dengan registri default Anda

Otentikasi diperlukan untuk bertukar data antara instans Amazon ECR dan Docker. Untuk mengautentikasi Docker dengan registri Anda:

  1. Buka terminal di dalam AWS Cloud9 IDE Anda.

  2. Gunakan get-login-passwordmetode ini untuk mengautentikasi ke registri ECR pribadi Anda dan masukkan wilayah dan Akun AWS ID Anda.

    aws ecr get-login-password \ --region <region> \ | docker login \ --username AWS \ --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
    penting

    Dalam perintah sebelumnya, ganti region dan AWS_account_id dengan informasi yang spesifik untuk Anda. Akun AWSregionNilai yang valid adalah us-east-1.

Menandai dan mendorong gambar ke repositori Anda

Setelah Anda mengautentikasi Docker dengan instance Anda AWS, dorong gambar ke repositori Anda.

  1. Gunakan perintah docker images untuk melihat gambar yang Anda simpan secara lokal dan mengidentifikasi gambar yang ingin Anda tag.

    docker images

    Outputnya adalah sebagai berikut.

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  2. Tandai gambar Anda dengan perintah tag Docker.

    docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  3. Dorong gambar yang ditandai ke repositori Anda dengan perintah push Docker.

    penting

    Pastikan bahwa nama repositori lokal Anda sama dengan repositori Amazon AWS EC2 Anda. Dalam contoh ini, kedua repositori harus dipanggil. hello-world Untuk informasi selengkapnya tentang mendorong gambar dengan docker, lihat Mendorong gambar Docker.

    docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest

    Outputnya adalah sebagai berikut.

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

Setelah gambar yang ditandai berhasil diunggah ke repositori, segarkan AWS Toolkit dengan memilih Refresh Explorer dari tab Explorer. AWS Ini kemudian terlihat di menu AWS Explorer di AWS Cloud9 IDE.

Menarik gambar dari Amazon ECR
  • Anda dapat menarik gambar ke instance lokal Anda dari perintah tag Docker.

    docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest

    Outputnya adalah sebagai berikut.

    azonaws.com/hello-world:latest latest: Pulling from hello-world Digest: sha256:e02c521fd65eae4ef1acb746883df48de85d55fc85a4172a09a124b11b339f5e Status: Image is up to date for 922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world.latest
Menghapus gambar dari repositori Amazon ECR Anda

Ada dua metode untuk menghapus gambar dari AWS Cloud9 IDE. Metode pertama adalah menggunakan AWS Explorer.

  1. Dari AWS Explorer, perluas menu ECR.

  2. Perluas repositori yang ingin Anda hapus gambarnya.

  3. Buka menu konteks (klik kanan) untuk tag gambar yang terkait dengan gambar yang ingin Anda hapus.

  4. Untuk menghapus semua gambar yang disimpan yang terkait dengan tag itu, pilih Hapus Tag... .

Menghapus gambar menggunakan CLI AWS
  • Anda juga dapat menghapus gambar dari repositori Anda dengan perintah AWS batch-delete-imageecr.

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

    Outputnya adalah sebagai berikut.

    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }
Menghapus repositori dari instans Amazon ECR

Ada dua metode untuk menghapus repositori dari IDE. AWS Cloud9 Metode pertama adalah menggunakan AWS Explorer:

  1. Dari AWS Explorer, perluas menu ECR.

  2. Buka menu konteks (klik kanan) untuk repositori yang ingin Anda hapus.

  3. Pilih Hapus Repositori... .

Menghapus repositori Amazon ECR dari CLI AWS
  • Anda dapat menghapus repositori dengan perintah AWS ecr delete-repository.

    catatan

    Anda biasanya tidak dapat menghapus repositori tanpa terlebih dahulu menghapus gambar yang terkandung di dalamnya. Namun, jika Anda menambahkan flag --force, Anda dapat menghapus repositori dan semua gambarnya dalam satu langkah.

    aws ecr delete-repository \ --repository-name hello-world \ --force

    Outputnya adalah sebagai berikut.

    --repository-name hello-world --force { "repository": { "repositoryUri": "922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world", "registryId": "922327013870", "imageTagMutability": "MUTABLE", "repositoryArn": "arn:aws:ecr:us-west-2:922327013870:repository/hello-world", "repositoryName": "hello-world", "createdAt": 1664469874.0 } }