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

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 diAWS Cloud9

Anda dapat mengakses layanan Amazon Elastic Container Registry (Amazon ECR) langsung dariAWSExplorer diAWS Cloud9IDE. Anda dapat menggunakan Amazon ECR untuk mendorong gambar program ke repositori Amazon ECR. Untuk memulai, ikuti langkah-langkah berikut:

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

  2. Buat gambar dari Dockerfile tersebut dan beri tag pada 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 dariAWSToolkit untukAWS Cloud9, pastikan bahwa Anda memenuhi iniprasyaratpertama. Prasyarat ini sudah diinstal sebelumnya diAWS Cloud9IDE untukAWS Cloud9Lingkungan Amazon EC2 dan diperlukan untuk mengakses Amazon ECR.

1. Membuat Dockerfile

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

Membuat Dockerfile
  1. Untuk menavigasi ke direktori tempat Anda ingin menyimpan Dockerfile Anda, pilihToggle Pohonpilihan di bar navigasi kiri dalam AndaAWS Cloud9IDE.

  2. Buat file baru bernamaDockerfile.

    catatan

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

Mengedit Dockerfile Anda menggunakanAWS Cloud9IDE

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

Setelah ekstensi file dihapus dari Dockerfile Anda:

  1. Buka Dockerfile kosong langsung diAWS Cloud9IDE.

  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. YangMENJALANKANpetunjuk memperbarui cache paket. Menginstal paket perangkat lunak untuk web server, dan kemudian menulis “Hello World!” konten ke akar dokumen server web. YangMEMBONGKARinstruksi mengekspos port 80 pada wadah, danCMDinstruksi dimulai server web.

  3. Simpan Dockerfile Anda.

2. Membangun gambar Anda dari Dockerfile Anda

Dockerfile yang Anda buat berisi informasi yang diperlukan untuk membangun gambar untuk sebuah program. Sebelum Anda dapat mendorong gambar tersebut ke instans Amazon ECR, buat gambar terlebih dahulu.

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

  2. Untuk membangun gambar yang didefinisikan dalam Dockerfile Anda, jalankanDocker membangunperintah dari direktori yang sama dengan Dockerfile.

    docker build -t hello-world .
  3. Untuk memverifikasi bahwa gambar telah dibuat dengan benar, jalankanGambar Dockerperintah.

    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, gunakangemaperintah.

    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 lebih lanjut tentangDocker menjalankanperintah, lihatDocker menjalankan referensidi situs web Docker.

3. Membuat repositori baru

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

Membuat repositori Amazon ECR baru
  1. DariAWS Cloud9IDE bar navigasi, pilihAWSikon Toolkit.

  2. PerluasAWSMenu penjelajah.

  3. Temukan defaultWilayah AWSyang terkait denganAkun AWS. Kemudian, pilih untuk melihat daftar layanan yang melaluiAWS Cloud9IDE.

  4. Buka menu konteks (klik kanan) untukECRpilihan untuk memulaiBuat repositori baruproses. Kemudian, pilihBuat Repositori.

  5. Untuk menyelesaikan proses, ikuti prompt.

  6. Setelah proses selesai, Anda dapat mengakses repositori baru Anda dariECRbagian dariAWSMenu penjelajah.

4. Mendorong, menarik, dan menghapus gambar

Setelah membuat gambar dari Dockerfile dan membuat repositori, Anda dapat mendorong gambar Anda ke repositori Amazon ECR Anda. Selain itu, menggunakanAWSExplorer dengan Docker danAWSCLI, 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 dalamAWS Cloud9IDE.

  2. Gunakanget-login-passwordmetode untuk mengotentikasi ke registri ECR pribadi Anda dan masukkan wilayah Anda danAkun AWSID.

    aws ecr get-login-password
    penting

    Dalam perintah sebelumnya, gantiregiondan yangAWS_account_iddengan informasi yang spesifik untuk AndaAkun AWS. Validregionnilai adalahkami-timur-1.

Menandai dan mendorong gambar ke repositori Anda

Setelah Anda mengautentikasi Docker dengan instanceAWS, mendorong gambar ke repositori Anda.

  1. Gunakangambar buruh pelabuhanperintah untuk melihat gambar yang Anda simpan secara lokal dan mengidentifikasi 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. Tag gambar Anda denganTag buruh pelabuhanperintah.

    docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  3. Dorong gambar yang ditandai ke repositori Anda denganDocker mendorongperintah.

    penting

    Pastikan bahwa nama repositori lokal Anda sama dengan AndaAWSRepositori Amazon EC2. Dalam contoh ini, kedua repositori harus dipanggilhello-world. Untuk informasi selengkapnya tentang mendorong gambar dengan buruh pelabuhan, lihatMendorong image 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 Anda berhasil diunggah ke repositori Anda, segarkanAWSToolkit dengan memilihSegarkan PenjelajahdariAWSTab penjelajah. Hal ini kemudian terlihat diAWSMenu Explorer diAWS Cloud9IDE.

Menarik gambar dari Amazon ECR
  • Anda dapat menarik gambar ke instance lokal AndaTag buruh pelabuhanperintah.

    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 dariAWS Cloud9IDE. Metode pertama adalah menggunakanAWSPenjelajah.

  1. DariAWSExplorer, memperluasECRmenu.

  2. Perluas repositori yang ingin Anda hapus dari gambar.

  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 tersebut, pilihHapus Tag....

Menghapus gambar menggunakanAWSCLI
  • Anda juga dapat menghapus gambar dari repositori Anda denganAWSecrbatch-delete-imageperintah.

    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 Anda

Ada dua metode untuk menghapus repositori dariAWS Cloud9IDE. Metode pertama adalah menggunakanAWSPenjelajah:

  1. DariAWSExplorer, memperluasECRmenu.

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

  3. PilihHapus Repositori....

Menghapus repositori Amazon ECR dariAWSCLI
  • Anda dapat menghapus repositori denganAWSecr menghapus-repositoriperintah.

    catatan

    Anda biasanya tidak dapat menghapus repositori tanpa terlebih dahulu menghapus gambar yang terkandung di dalamnya. Namun, jika Anda menambahkan--kekuatanbendera, Anda dapat menghapus repositori dan semua gambar 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 } }