Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Jalankan kontainer Docker
Anda dapat mengonfigurasi AWS IoT Greengrass komponen untuk menjalankan wadah Docker
-
Repositori gambar publik dan pribadi di Amazon Elastic Container Registry (Amazon) ECR
-
Repositori Hub Docker publik
-
Registri Terpercaya Docker publik
-
Bucket S3
Dalam komponen kustom Anda, sertakan image Docker URI sebagai artefak untuk mengambil gambar dan menjalankannya di perangkat inti. Untuk gambar Amazon ECR dan Docker Hub, Anda dapat menggunakan komponen pengelola aplikasi Docker untuk mengunduh gambar dan mengelola kredensional untuk repositori Amazon pribadi. ECR
Topik
- Persyaratan
- Jalankan wadah Docker dari citra publik di Amazon ECR atau Docker Hub
- Jalankan wadah Docker dari gambar pribadi di Amazon ECR
- Jalankan kontainer Docker dari gambar di Amazon S3
- Gunakan interprocess communication dalam komponen kontainer Docker
- Gunakan AWS kredensil dalam komponen wadah Docker (Linux)
- Gunakan pengelola aliran di komponen wadah Docker (Linux)
Persyaratan
Untuk menjalankan kontainer Docker dalam komponen, Anda memerlukan hal berikut:
-
Sebuah perangkat inti Greengrass. Jika Anda tidak memilikinya, lihat Tutorial: Memulai dengan AWS IoT Greengrass V2.
-
Docker Engine
1.9.1 atau yang lebih baru diinstal pada perangkat inti Greengrass. Versi 20.10 adalah versi terbaru yang diverifikasi untuk bekerja dengan perangkat lunak AWS IoT Greengrass Core. Anda harus menginstal Docker langsung pada perangkat inti sebelum Anda menyebarkan komponen yang menjalankan kontainer Docker. Tip
Anda juga dapat mengonfigurasi perangkat inti untuk menginstal Docker Engine saat komponen diinstal. Sebagai contoh, script install berikut menginstal Docker Engine sebelum memuat gambar Docker. Skrip install ini bekerja pada distribusi Linux berbasis Debian, seperti Ubuntu. Jika Anda mengonfigurasi komponen untuk menginstal Docker Engine dengan perintah ini, Anda mungkin perlu mengatur
RequiresPrivilege
ketrue
dalam skrip siklus hidup untuk menjalankan instalasi dan perintah.docker
Untuk informasi selengkapnya, lihat AWS IoT Greengrass referensi resep komponen.apt-get install docker-ce docker-ce-cli containerd.io && docker load -i {artifacts:path}/
hello-world.tar
-
Pengguna sistem yang menjalankan komponen kontainer Docker harus memiliki izin root atau administrator, atau Anda harus mengonfigurasi Docker untuk menjalankannya sebagai pengguna non-root atau non-admistrator.
-
Pada perangkat Linux, Anda dapat menambahkan pengguna ke
docker
grup untuk memanggildocker
perintah tanpasudo
. -
Pada perangkat Windows, Anda dapat menambahkan pengguna ke
docker-users
grup untuk memanggildocker
perintah tanpa hak istimewa adminstrator.
-
-
File diakses oleh komponen kontainer Docker yang dipasang sebagai volume
dalam kontainer Docker. -
Jika Anda mengkonfigurasi perangkat lunak AWS IoT Greengrass Core untuk menggunakan proxy jaringan, Anda harus mengkonfigurasi Docker untuk menggunakan server proxy yang sama
.
Selain persyaratan ini, Anda juga harus memenuhi persyaratan berikut jika hal itu berlaku pada lingkungan Anda:
-
Untuk menggunakan Docker Compose
untuk membuat dan memulai kontainer Docker Anda, instal Docker Compose pada perangkat inti Greengrass Anda, dan upload file Docker Compose ke bucket S3. Anda harus menyimpan file Compose Anda dalam bucket S3 yang sama Akun AWS dan Wilayah AWS sebagai komponen. Untuk contoh yang menggunakan perintah docker-compose up
dalam komponen kustom, lihat Jalankan wadah Docker dari citra publik di Amazon ECR atau Docker Hub. -
Jika image Docker Anda disimpan di Amazon ECR atau Docker Hub, sertakan komponen manajer komponen Docker sebagai dependensi dalam komponen container Docker Anda. Anda harus memulai daemon Docker pada perangkat inti sebelum Anda men-deploy komponen Anda.
Juga, sertakan gambar URIs sebagai artefak komponen. Gambar URIs harus dalam format
docker:
seperti yang ditunjukkan pada contoh berikut:registry
/image
[:tag|@digest
]-
ECRGambar Amazon pribadi:
docker:
account-id
.dkr.ecr.region
.amazonaws.com/repository
/image
[:tag|@digest
] -
ECRGambar Amazon publik:
docker:public.ecr.aws/
repository
/image
[:tag|@digest
] -
Citra Hub Docker publik:
docker:
name
[:tag|@digest
]
Untuk informasi selengkapnya tentang menjalankan kontainer Docker dari gambar yang disimpan di repositori publik, lihat. Jalankan wadah Docker dari citra publik di Amazon ECR atau Docker Hub
-
-
Jika image Docker Anda disimpan dalam repositori ECR pribadi Amazon, maka Anda harus menyertakan komponen layanan pertukaran token sebagai dependensi dalam komponen kontainer Docker. Selain itu, peran perangkat Greengrass harus mengizinkan,,
ecr:GetDownloadUrlForLayer
dan tindakanecr:BatchGetImage
, sepertiecr:GetAuthorizationToken
yang ditunjukkan dalam kebijakan contoh berikut. IAM{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": [ "*" ], "Effect": "Allow" } ] }
Untuk informasi tentang menjalankan kontainer Docker dari gambar yang disimpan di repositori ECR pribadi Amazon, lihat. Jalankan wadah Docker dari gambar pribadi di Amazon ECR
-
Untuk menggunakan gambar Docker yang disimpan dalam repositori ECR pribadi Amazon, repositori pribadi harus sama Wilayah AWS dengan perangkat inti.
-
Jika image Docker atau file Compose disimpan dalam bucket S3, peran perangkat Greengrass harus mengizinkan s3:GetObject izin untuk mengizinkan perangkat inti mengunduh gambar sebagai artefak komponen, seperti yang ditunjukkan dalam contoh kebijakan berikut. IAM
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Resource": [ "*" ], "Effect": "Allow" } ] }
Untuk informasi tentang cara menjalankan kontainer Docker dari gambar yang disimpan dalam Amazon S3, lihat Jalankan kontainer Docker dari gambar di Amazon S3.
-
Untuk menggunakan interprocess communication (IPC), AWS credentials, atau stream manager dalam komponen container Docker Anda, Anda harus menentukan opsi tambahan saat menjalankan container Docker. Untuk informasi selengkapnya, lihat berikut ini:
Jalankan wadah Docker dari citra publik di Amazon ECR atau Docker Hub
Bagian ini menjelaskan cara membuat komponen kustom yang menggunakan Docker Compose untuk menjalankan container Docker dari image Docker yang disimpan Amazon ECR dan Docker Hub.
Untuk menjalankan kontainer Docker menggunakan Docker Compose
-
Buat dan unggah file Docker Compose ke bucket Amazon S3. Pastikan bahwa peran perangkat Greengrass memungkinkan izin
s3:GetObject
untuk mengaktifkan perangkat untuk mengakses file Compose. Contoh file Compose yang ditampilkan dalam contoh berikut mencakup image CloudWatch Agen Amazon dari Amazon ECR dan SQL gambar Saya dari Docker Hub.version: "3" services: cloudwatchagent: image: "public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest" mysql: image: "mysql:8.0"
-
Buat komponen khusus di perangkat AWS IoT Greengrass inti Anda. Contoh resep yang ditunjukkan dalam contoh berikut memiliki sifat berikut:
-
Komponen manajer aplikasi Docker sebagai dependensi. Komponen ini memungkinkan AWS IoT Greengrass untuk mengunduh gambar dari repositori Amazon ECR dan Docker Hub publik.
-
Artefak komponen yang menentukan image Docker di repositori Amazon publik. ECR
-
Artefak komponen yang menentukan gambar Docker dalam repositori Docker Hub publik.
-
Komponen artefak yang menentukan file Docker Compose yang mencakup kontainer untuk gambar Docker yang ingin Anda jalankan.
-
Skrip lifecycle run yang menggunakan docker-compose up
untuk membuat dan memulai sebuah kontainer dari citra yang ditentukan.
catatan
Untuk menggunakan interprocess communication (IPC), AWS credentials, atau stream manager dalam komponen container Docker Anda, Anda harus menentukan opsi tambahan saat menjalankan container Docker. Untuk informasi selengkapnya, lihat berikut ini:
-
-
Uji komponen untuk memverifikasi bahwa ia bekerja seperti yang diharapkan.
penting
Anda harus memulai daemon Docker sebelum Anda men-deploy komponen.
Setelah Anda men-deploy komponen lokal, Anda dapat menjalankan perintah kontainer docker ls
untuk memverifikasi bahwa kontainer Anda berjalan. docker container ls
-
Saat komponen sudah siap, unggah komponen untuk digunakan AWS IoT Greengrass ke perangkat inti lainnya. Untuk informasi selengkapnya, lihat Publikasikan komponen untuk diterapkan ke perangkat inti Anda.
Jalankan wadah Docker dari gambar pribadi di Amazon ECR
Bagian ini menjelaskan cara membuat komponen kustom yang menjalankan container Docker dari image Docker yang disimpan di repositori pribadi di Amazon. ECR
Untuk menjalankan kontainer Docker
-
Buat komponen khusus di perangkat AWS IoT Greengrass inti Anda. Gunakan contoh berikut resep, yang memiliki properti berikut:
-
Komponen manajer aplikasi Docker sebagai dependensi. Komponen ini memungkinkan AWS IoT Greengrass untuk mengelola kredensial untuk mengunduh gambar dari repositori privat.
-
Komponen layanan pertukaran token sebagai dependensi. Komponen ini memungkinkan AWS IoT Greengrass untuk mengambil AWS kredensil untuk berinteraksi dengan Amazon. ECR
-
Artefak komponen yang menentukan image Docker di repositori Amazon pribadi. ECR
-
Skrip lifecycle run yang menggunakan docker run
untuk membuat dan memulai sebuah kontainer dari gambar.
catatan
Untuk menggunakan interprocess communication (IPC), AWS credentials, atau stream manager dalam komponen container Docker Anda, Anda harus menentukan opsi tambahan saat menjalankan container Docker. Untuk informasi selengkapnya, lihat berikut ini:
-
-
Uji komponen untuk memverifikasi bahwa ia bekerja seperti yang diharapkan.
penting
Anda harus memulai daemon Docker sebelum Anda men-deploy komponen.
Setelah Anda men-deploy komponen lokal, Anda dapat menjalankan perintah kontainer docker ls
untuk memverifikasi bahwa kontainer Anda berjalan. docker container ls
-
Unggah komponen AWS IoT Greengrass untuk digunakan ke perangkat inti lainnya. Untuk informasi selengkapnya, lihat Publikasikan komponen untuk diterapkan ke perangkat inti Anda.
Jalankan kontainer Docker dari gambar di Amazon S3
Bagian ini menjelaskan bagaimana Anda dapat menjalankan kontainer Docker dalam komponen dari gambar Docker yang disimpan di Amazon S3.
Jalankan kontainer Docker dalam komponen dari gambar di Amazon S3
-
Jalankan perintah docker save
untuk membuat cadangan kontainer Docker. Anda menyediakan cadangan ini sebagai artefak komponen untuk menjalankan kontainer pada AWS IoT Greengrass. Ganti hello-world
dengan nama gambar, dan gantihello-world.tar
dengan nama file arsip yang akan dibuat.docker save
hello-world
>artifacts/com.example.MyDockerComponent/1.0.0/hello-world.tar
-
Buat komponen khusus di perangkat AWS IoT Greengrass inti Anda. Gunakan contoh resep berikut, yang memiliki properti berikut:
-
Skrip lifecycle install yang menggunakan docker load
untuk memuat gambar Docker dari arsip. -
Skrip lifecycle run yang menggunakan docker run
untuk membuat dan memulai sebuah kontainer dari gambar. Opsi --rm
membersihkan kontainer ketika keluar.
catatan
Untuk menggunakan interprocess communication (IPC), AWS credentials, atau stream manager dalam komponen container Docker Anda, Anda harus menentukan opsi tambahan saat menjalankan container Docker. Untuk informasi selengkapnya, lihat berikut ini:
-
-
Uji komponen untuk memverifikasi bahwa ia bekerja seperti yang diharapkan.
Setelah Anda men-deploy komponen lokal, Anda dapat menjalankan perintah kontainer docker ls
untuk memverifikasi bahwa kontainer Anda berjalan. docker container ls
-
Saat komponen sudah siap, unggah arsip gambar Docker ke bucket S3, dan tambahkan URI ke resep komponen. Kemudian, Anda dapat mengunggah komponen AWS IoT Greengrass untuk menyebarkan ke perangkat inti lainnya. Untuk informasi selengkapnya, lihat Publikasikan komponen untuk diterapkan ke perangkat inti Anda.
Setelah selesai, resep komponen akan terlihat seperti contoh berikut.
Gunakan interprocess communication dalam komponen kontainer Docker
Anda dapat menggunakan perpustakaan komunikasi interproses Greengrass IPC () AWS IoT Device SDK untuk berkomunikasi dengan inti Greengrass, komponen Greengrass lainnya, dan. AWS IoT Core Untuk informasi selengkapnya, lihat Gunakan AWS IoT Device SDK untuk berkomunikasi dengan inti Greengrass, komponen lain, dan AWS IoT Core.
Untuk digunakan IPC dalam komponen kontainer Docker, Anda harus menjalankan wadah Docker dengan parameter berikut:
-
Pasang IPC soket di wadah. Inti Greengrass menyediakan jalur file soket IPC dalam variabel lingkungan.
AWS_GG_NUCLEUS_DOMAIN_SOCKET_FILEPATH_FOR_COMPONENT
-
Atur variabel
SVCUID
danAWS_GG_NUCLEUS_DOMAIN_SOCKET_FILEPATH_FOR_COMPONENT
lingkungan ke nilai yang disediakan oleh inti Greengrass ke komponen. Komponen Anda menggunakan variabel lingkungan ini untuk mengautentikasi koneksi ke inti Greengrass.
contoh Contoh resep: Publikasikan MQTT pesan ke AWS IoT Core (Python)
Resep berikut mendefinisikan contoh komponen kontainer Docker yang menerbitkan pesan ke. MQTT AWS IoT Core Resep ini memiliki sifat-sifat berikut:
-
Kebijakan otorisasi (
accessControl
) yang memungkinkan komponen untuk mempublikasikan MQTT pesan AWS IoT Core pada semua topik. Untuk informasi lebih lanjut, lihat Otorisasi komponen untuk melakukan operasi IPC dan AWS IoT Core MQTTIPCotorisasi. -
Artefak komponen yang menentukan image Docker sebagai TAR arsip di Amazon S3.
-
Skrip penginstalan siklus hidup yang memuat gambar Docker dari arsip. TAR
-
Skrip proses siklus hidup yang menjalankan wadah Docker dari gambar. Perintah Docker run
memiliki argumen berikut: -
-v
Argumen memasang soket IPC Greengrass di wadah. -
Dua
-e
argumen pertama mengatur variabel lingkungan yang diperlukan dalam wadah Docker. -
-e
Argumen tambahan mengatur variabel lingkungan yang digunakan oleh contoh ini. -
--rm
Argumen membersihkan wadah saat keluar.
-
Gunakan AWS kredensil dalam komponen wadah Docker (Linux)
Anda dapat menggunakan komponen layanan pertukaran token untuk berinteraksi dengan AWS layanan di komponen Greengrass. Komponen ini menyediakan AWS kredensil dari peran pertukaran token perangkat inti menggunakan server kontainer lokal. Untuk informasi selengkapnya, lihat Berinteraksilah dengan layanan AWS.
catatan
Contoh di bagian ini hanya berfungsi pada perangkat inti Linux.
Untuk menggunakan AWS kredensil dari layanan pertukaran token dalam komponen kontainer Docker, Anda harus menjalankan container Docker dengan parameter berikut:
-
Berikan akses ke jaringan host menggunakan
--network=host
argumen. Opsi ini memungkinkan kontainer Docker untuk terhubung ke layanan pertukaran token lokal untuk mengambil kredensil AWS . Argumen ini hanya berfungsi pada Docker untuk Linux.Awas
Opsi ini memberikan akses kontainer ke semua antarmuka jaringan lokal pada host, jadi opsi ini kurang aman daripada jika Anda menjalankan kontainer Docker tanpa akses ini ke jaringan host. Pertimbangkan ini saat Anda mengembangkan dan menjalankan komponen kontainer Docker yang menggunakan opsi ini. Untuk informasi selengkapnya, lihat Jaringan: host
di Dokumentasi Docker. -
Atur variabel
AWS_CONTAINER_CREDENTIALS_FULL_URI
danAWS_CONTAINER_AUTHORIZATION_TOKEN
lingkungan ke nilai yang disediakan oleh inti Greengrass ke komponen. AWS SDKsgunakan variabel lingkungan ini untuk mengambil AWS kredensil.
contoh Contoh resep: Daftar bucket S3 dalam komponen wadah Docker (Python)
Resep berikut mendefinisikan contoh komponen kontainer Docker yang mencantumkan bucket S3 di bucket Anda. Akun AWS Resep ini memiliki sifat-sifat berikut:
-
Komponen layanan pertukaran token sebagai dependensi. Ketergantungan ini memungkinkan komponen untuk mengambil AWS kredensi untuk berinteraksi dengan layanan lain. AWS
-
Artefak komponen yang menentukan image Docker sebagai arsip tar di Amazon S3.
-
Skrip penginstalan siklus hidup yang memuat gambar Docker dari arsip. TAR
-
Skrip proses siklus hidup yang menjalankan wadah Docker dari gambar. Perintah Docker run
memiliki argumen berikut: -
--network=host
Argumen menyediakan akses kontainer ke jaringan host, sehingga wadah dapat terhubung ke layanan pertukaran token. -
-e
Argumen menetapkan variabel lingkungan yang diperlukan dalam wadah Docker. -
--rm
Argumen membersihkan wadah saat keluar.
-
Gunakan pengelola aliran di komponen wadah Docker (Linux)
Anda dapat menggunakan komponen pengelola aliran untuk mengelola aliran data di komponen Greengrass. Komponen ini memungkinkan Anda untuk memproses aliran data dan mentransfer data IoT volume tinggi ke file. AWS Cloud AWS IoT Greengrass menyediakan pengelola aliran SDK yang Anda gunakan untuk berinteraksi dengan komponen pengelola aliran. Untuk informasi selengkapnya, lihat Kelola aliran data di perangkat inti Greengrass.
catatan
Contoh di bagian ini hanya berfungsi pada perangkat inti Linux.
Untuk menggunakan pengelola aliran SDK dalam komponen kontainer Docker, Anda harus menjalankan wadah Docker dengan parameter berikut:
-
Berikan akses ke jaringan host menggunakan
--network=host
argumen. Opsi ini memungkinkan wadah Docker untuk berinteraksi dengan komponen pengelola aliran melalui TLS koneksi lokal. Argumen ini hanya berfungsi pada Docker untuk LinuxAwas
Opsi ini memberikan akses kontainer ke semua antarmuka jaringan lokal pada host, jadi opsi ini kurang aman daripada jika Anda menjalankan kontainer Docker tanpa akses ini ke jaringan host. Pertimbangkan ini saat Anda mengembangkan dan menjalankan komponen kontainer Docker yang menggunakan opsi ini. Untuk informasi selengkapnya, lihat Jaringan: host
di Dokumentasi Docker. -
Jika Anda mengonfigurasi komponen pengelola aliran agar memerlukan otentikasi, yang merupakan perilaku default, setel variabel
AWS_CONTAINER_CREDENTIALS_FULL_URI
lingkungan ke nilai yang disediakan inti Greengrass ke komponen. Untuk informasi selengkapnya, lihat konfigurasi manajer aliran. -
Jika Anda mengonfigurasi komponen pengelola aliran untuk menggunakan port non-default, gunakan interprocess communication (IPC) untuk mendapatkan port dari konfigurasi komponen manajer aliran. Anda harus menjalankan wadah Docker dengan opsi tambahan untuk digunakanIPC. Untuk informasi selengkapnya, lihat berikut ini:
contoh Contoh resep: Streaming file ke bucket S3 dalam komponen wadah Docker (Python)
Resep berikut mendefinisikan contoh komponen kontainer Docker yang membuat file dan mengalirkannya ke bucket S3. Resep ini memiliki sifat-sifat berikut:
-
Komponen stream manager sebagai dependensi. Ketergantungan ini memungkinkan komponen untuk menggunakan manajer aliran SDK untuk berinteraksi dengan komponen manajer aliran.
-
Artefak komponen yang menentukan image Docker sebagai TAR arsip di Amazon S3.
-
Skrip penginstalan siklus hidup yang memuat gambar Docker dari arsip. TAR
-
Skrip proses siklus hidup yang menjalankan wadah Docker dari gambar. Perintah Docker run
memiliki argumen berikut: -
--network=host
Argumen menyediakan akses kontainer ke jaringan host, sehingga kontainer dapat terhubung ke komponen manajer aliran. -
-e
Argumen pertama menetapkan variabelAWS_CONTAINER_AUTHORIZATION_TOKEN
lingkungan yang diperlukan dalam wadah Docker. -
-e
Argumen tambahan mengatur variabel lingkungan yang digunakan oleh contoh ini. -
-v
Argumen memasang folder kerja komponen di wadah. Contoh ini membuat file di folder kerja untuk mengunggah file itu ke Amazon S3 menggunakan pengelola aliran. -
--rm
Argumen membersihkan wadah saat keluar.
-