Membuat gambar kontainer untuk digunakan di Amazon ECS - Amazon Elastic Container Service

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

Membuat gambar kontainer untuk digunakan di Amazon ECS

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.

Tujuan dari langkah-langkah yang diuraikan di sini adalah untuk memandu Anda membuat gambar Docker pertama Anda dan mendorong gambar itu ke AmazonECR, yang merupakan registri wadah, untuk digunakan dalam definisi ECS tugas Amazon 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? dan Gambaran umum Docker.

Prasyarat

Sebelum Anda mulai, pastikan prasyarat berikut terpenuhi.

  • Pastikan Anda telah menyelesaikan langkah-langkah ECR penyiapan Amazon. Untuk informasi selengkapnya, lihat Menyiapkan Amazon ECR di Panduan Pengguna Amazon Elastic Container Registry.

  • Pengguna Anda memiliki IAM izin yang diperlukan untuk mengakses dan menggunakan ECR layanan Amazon. Untuk informasi selengkapnya, lihat Kebijakan ECR terkelola Amazon.

  • Anda telah menginstal Docker. Untuk langkah-langkah instalasi Docker untuk Amazon Linux 2, lihatMenginstal Docker pada 023 AL2. Untuk semua sistem operasi lainnya, lihat dokumentasi Docker di ikhtisar Docker Desktop.

  • Anda telah AWS CLI diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Menginstal AWS Command Line Interface dalam Panduan Pengguna AWS Command Line Interface .

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

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 webpanduan penginstalan Docker.

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

Jika Anda sudah menginstal Docker, langsung ke Membuat citra Docker.

Untuk menginstal Docker di EC2 instans Amazon menggunakan Amazon Linux 2023 AMI
  1. Luncurkan instance dengan Amazon Linux 2023 AMI terbaru. Untuk informasi selengkapnya, lihat Meluncurkan instance di Panduan EC2 Pengguna Amazon.

  2. Terhubung ke instans Anda. Untuk informasi selengkapnya, lihat Connect to Your Linux Instance di Panduan EC2 Pengguna Amazon.

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

    sudo yum update -y
  4. Instal paket Edisi Komunitas Docker terbaru.

    sudo yum install docker
  5. Mulai layanan Docker.

    sudo service docker start
  6. Tambahkan ec2-user ke grup docker sehingga Anda dapat menjalankan perintah Docker tanpa menggunakan sudo.

    sudo usermod -a -G docker ec2-user
  7. Keluar dan masuk kembali untuk mengambil izin grup docker yang baru. Anda dapat melakukannya dengan menutup jendela SSH terminal Anda saat ini dan menghubungkan kembali ke instans Anda di yang baru. SSHSesi baru Anda akan memiliki izin docker grup yang sesuai.

  8. 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

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

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.

    touch Dockerfile
  2. 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 2 publik yang dihosting di Amazon ECR Public. RUNInstruksi memperbarui cache paket, menginstal beberapa paket perangkat lunak untuk server web, dan kemudian menulis “Hello World!” konten ke root dokumen server web. EXPOSEInstruksi berarti bahwa port 80 pada wadah adalah yang mendengarkan, dan CMD instruksi memulai server web.

  3. 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 .
  4. 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
  5. 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“.

  6. Buka peramban dan arahkan ke server yang menjalankan Docker dan meng-host kontainer Anda.

    • Jika Anda menggunakan EC2 instance, ini adalah DNS nilai Publik untuk server, yang merupakan alamat yang sama yang Anda gunakan untuk terhubung ke instanceSSH. 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/.

    • Jika Anda menggunakan docker-machine pada komputer Windows atau Mac, temukan alamat IP VirtualBox VM yang menghosting Docker dengan docker-machine ip perintah, menggantikan machine-name dengan nama mesin docker yang Anda gunakan.

      docker-machine ip machine-name

    Anda akan melihat halaman web dengan pernyataan “Hello World!” .

  7. Hentikan kontainer Docker dengan mengetik Ctrl + c.

Dorong gambar Anda ke Amazon Elastic Container Registry

Amazon ECR adalah layanan registri AWS Docker terkelola. Anda dapat menggunakan Docker CLI untuk mendorong, menarik, dan mengelola gambar di ECR repositori Amazon Anda. Untuk detail ECR produk Amazon, studi kasus pelanggan unggulan, danFAQs, lihat halaman detail produk Amazon Elastic Container Registry.

Untuk menandai gambar Anda dan mendorongnya ke Amazon ECR
  1. Buat ECR repositori Amazon untuk menyimpan gambar Andahello-world. Perhatikan repositoryUri pada outputnya.

    Gantikanregion, 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"
        }
    }
  2. Tandai citra hello-world dengan nilai repositoryUri dari langkah sebelumnya.

    docker tag hello-world aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
  3. Jalankan perintah aws ecr get-login-password. Tentukan registri yang ingin URI Anda autentikasi. Untuk informasi selengkapnya, lihat Autentikasi Registri 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 AWS Command Line Interface dalam Panduan Pengguna Amazon EKS AWS Command Line Interface .

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

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

Bersihkan

Untuk melanjutkan dengan membuat definisi ECS tugas Amazon dan meluncurkan tugas dengan gambar penampung Anda, lewati ke fileLangkah selanjutnya. Setelah selesai bereksperimen dengan ECR gambar Amazon 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

Definisi tugas Anda memerlukan peran eksekusi tugas. Untuk informasi selengkapnya, lihat IAMPeran eksekusi ECS tugas Amazon.

Setelah Anda membuat dan mendorong gambar kontainer Anda ke AmazonECR, Anda dapat menggunakan gambar itu dalam definisi tugas. Untuk informasi selengkapnya, lihat salah satu dari berikut ini: