Amazon ECR Docker Credential Helper adalah pembantu kredensial untuk daemon Docker yang memudahkan penggunaan Amazon Elastic Container Registry.
Prasyarat
Menginstal
Amazon Linux 2023 (AL2023)
Amazon Linux 2 (AL2)
MacOS
Debian Buster (dan versi mendatang)
Ubuntu 19.04 Disco Dingo dan yang lebih baru
Lengkungan Linux
Alpine Linux
jendela
Dari Sumber
Konfigurasi
Buruh pelabuhan
Kredensial AWS
Pembantu Kredensial Docker Amazon ECR
Penggunaan
Pemecahan masalah
Pengungkapan keamanan
Lisensi
Anda harus menginstal setidaknya Docker 1.11 di sistem Anda.
Anda juga harus memiliki kredensial AWS. Lihat bagian Kredensial AWS untuk detail tentang cara menggunakan kredensial AWS yang berbeda.
Anda dapat menginstal Amazon ECR Credential Helper dari repositori Amazon Linux 2023.
$ sudo dnf install -y amazon-ecr-kredensial-helper
Setelah Anda menginstal pembantu kredensial, lihat bagian Konfigurasi untuk instruksi tentang cara mengonfigurasi Docker agar berfungsi dengan pembantu tersebut.
Anda dapat menginstal Amazon ECR Credential Helper dari docker
atau ekstra ecs
.
$ sudo amazon-linux-extras aktifkan buruh pelabuhan $ sudo yum install amazon-ecr-kredensial-helper
Setelah Anda menginstal pembantu kredensial, lihat bagian Konfigurasi untuk instruksi tentang cara mengonfigurasi Docker agar berfungsi dengan pembantu tersebut.
Formula Homebrew yang dikelola komunitas tersedia di keran inti.
$ buatan instal docker-credential-helper-ecr
Di macOS, metode instalasi lain yang dikelola komunitas adalah dengan menggunakan MacPorts.
$ sudo port instal docker-credential-helper-ecr
Setelah Anda menginstal pembantu kredensial, lihat bagian Konfigurasi untuk instruksi tentang cara mengonfigurasi Docker agar berfungsi dengan pembantu tersebut.
Anda dapat menginstal Amazon ECR Credential Helper dari arsip Debian Buster. Paket ini juga akan disertakan dalam rilis Debian mendatang.
$ sudo pembaruan yang tepat $ sudo tepat install amazon-ecr-kredensial-helper
Setelah Anda menginstal pembantu kredensial, lihat bagian Konfigurasi untuk instruksi tentang cara mengonfigurasi Docker agar berfungsi dengan pembantu tersebut.
Anda dapat menginstal Amazon ECR Credential Helper dari arsip Ubuntu 19.04 Disco Dingo (dan yang lebih baru).
$ sudo pembaruan yang tepat $ sudo tepat install amazon-ecr-kredensial-helper
Setelah Anda menginstal pembantu kredensial, lihat bagian Konfigurasi untuk instruksi tentang cara mengonfigurasi Docker agar berfungsi dengan pembantu tersebut.
Paket yang dikelola komunitas tersedia di Arch User Repository.
$ git clone https://aur.archlinux.org/amazon-ecr-credential-helper.git $ cd amazon-ecr-kredensial-helper $makepkg-si
Setelah Anda menginstal pembantu kredensial, lihat bagian Konfigurasi untuk instruksi tentang cara mengonfigurasi Docker agar berfungsi dengan pembantu tersebut.
Paket yang dikelola komunitas tersedia di Repositori aports Alpine Linux.
$ apk tambahkan docker-credential-ecr-login
Catatan
Lencana hanya menunjukkan edge, periksa repositori untuk rilis stabil atau tambahkan --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
Setelah Anda menginstal pembantu kredensial, lihat bagian Konfigurasi untuk instruksi tentang cara mengonfigurasi Docker agar berfungsi dengan pembantu tersebut.
Eksekusi Windows tersedia melalui rilis GitHub.
Catatan
Dukungan Windows ARM dianggap eksperimental.
Lihat #795
Untuk membangun dan menginstal Pembantu Kredensial Docker Amazon ECR, kami menyarankan Go 1.19 atau lebih baru, git
dan make
diinstal pada sistem Anda.
Jika Anda baru saja menginstal Go, pastikan Anda juga telah menambahkannya ke PATH atau Environment Vars (Windows). Misalnya:
$ export GOPATH=$HOME/go $ export PATH=$PATH:$GOPATH/bin
Atau di Windows:
setx GOPATH %USERPROFILE%go <your existing PATH definitions>;%USERPROFILE%gobin
Jika Anda belum menentukan PATH, perintah di bawah ini akan gagal secara diam-diam, dan menjalankan docker-credential-ecr-login
akan menampilkan: command not found
Anda dapat menginstalnya melalui alat baris perintah go
.
Untuk menginstal jalankan:
go install github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cli/docker-credential-ecr-login@latest
Peringatan
Penafian: Dockerfile dalam repositori ini digunakan untuk menguji kompilasi silang biner pembantu kredensial Amazon ECR di GitHub Actions CI dan sebagai utilitas pengembang untuk membangun secara lokal dari sumber. Ini adalah implementasi referensi dan bukan keamanan yang diperketat untuk membangun dan menjalankan kontainer produksi.
Jika Anda sudah memiliki lingkungan Docker, klon saja repositori ini di mana saja dan jalankan make build-in-docker
. Perintah ini membangun biner dengan Go di dalam wadah Docker dan mengeluarkannya ke direktori lokal.
Dengan variabel lingkungan TARGET_GOOS
, Anda juga dapat melakukan kompilasi silang biner.
Setelah Anda menginstal pembantu kredensial, lihat bagian Konfigurasi untuk instruksi tentang cara mengonfigurasi Docker agar berfungsi dengan pembantu tersebut.
Tidak perlu menggunakan docker login
atau docker logout
.
Tempatkan biner docker-credential-ecr-login
di PATH
Anda dan atur konten file ~/.docker/config.json
Anda menjadi:
{ "credsStore": "ecr-login"}
Ini mengonfigurasi daemon Docker untuk menggunakan pembantu kredensial untuk semua registri Amazon ECR.
Pembantu Kredensial Docker Amazon ECR dapat digunakan bersama token autentikasi login buruh pelabuhan Anda yang sudah ada:
{ "credsStore": "ecr-login", "auths": { "https://index.docker.io/v1/": { "auth": [docker.io-auth-token] }, "registry.gitlab.com": { "auth": [gitlab-auth-token] }, } }
Dengan Docker 1.13.0 atau lebih tinggi, Anda dapat mengonfigurasi Docker untuk menggunakan pembantu kredensial yang berbeda untuk registri ECR yang berbeda. Untuk menggunakan pembantu kredensial ini untuk registri ECR tertentu, buat bagian credHelpers
dengan URI registri ECR Anda:
{ "credHelpers": { "public.ecr.aws": "ecr-login", "<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login" } }
Ini berguna jika Anda menggunakan docker
untuk beroperasi pada registri yang menggunakan kredensial autentikasi berbeda.
Pembantu Kredensial Docker Amazon ECR memungkinkan Anda menggunakan kredensial AWS yang disimpan di lokasi berbeda. Yang standar meliputi:
File kredensial bersama ( ~/.aws/credentials
)
Variabel lingkungan AWS_ACCESS_KEY_ID
dan AWS_SECRET_ACCESS_KEY
IAM role untuk tugas Amazon ECS
Peran IAM untuk Amazon EC2
Untuk menggunakan kredensial yang terkait dengan profil bernama berbeda dalam file kredensial bersama ( ~/.aws/credentials
), Anda dapat mengatur variabel lingkungan AWS_PROFILE
.
Pembantu Kredensial Docker Amazon ECR membaca dan mendukung beberapa opsi konfigurasi yang ditentukan dalam file konfigurasi bersama AWS ( ~/.aws/config
). Untuk menonaktifkan opsi ini, Anda harus mengatur variabel lingkungan AWS_SDK_LOAD_CONFIG
ke false
. Opsi yang didukung meliputi:
Peran yang diasumsikan ditentukan dengan role_arn
dan source_profile
Proses kredensial eksternal ditentukan dengan credential_process
Identitas Web seperti Peran IAM untuk Akun Layanan di Kubernetes ( Catatan: Pengguna Kubernetes yang menggunakan container dengan pengguna non-root mungkin mengalami masalah izin yang dijelaskan dalam bug ini dan mungkin perlu menggunakan solusi penyesuaian securityContext
Kubernetes. )
Pembantu Kredensial Docker Amazon ECR menggunakan kredensial yang sama dengan AWS CLI dan SDK AWS. Untuk informasi lebih lanjut tentang konfigurasi kredensial AWS, lihat File Konfigurasi dan Kredensial di Panduan Pengguna AWS Command Line Interface .
Kredensial harus menerapkan kebijakan yang mengizinkan akses ke Amazon ECR.
Variabel Lingkungan | Nilai Sampel | Keterangan |
---|---|---|
AWS_ECR_DISABLE_CACHE | BENAR | Menonaktifkan cache autentikasi file lokal jika disetel ke nilai yang tidak kosong |
AWS_ECR_CACHE_DIR | ~/.ecr | Menentukan lokasi direktori cache autentikasi file lokal |
AWS_ECR_IGNORE_CREDS_STORAGE | BENAR | Abaikan panggilan untuk login atau logout buruh pelabuhan dan berpura-pura berhasil |
docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker push 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker pull public.ecr.aws/amazonlinux/amazonlinux:latest
Jika Anda telah mengonfigurasi profil tambahan untuk digunakan dengan AWS CLI, Anda dapat menggunakan profil tersebut dengan menentukan variabel lingkungan AWS_PROFILE
saat memanggil docker
. Misalnya:
AWS_PROFILE=myprofile docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
Tidak perlu menggunakan docker login
atau docker logout
.
Jika sebelumnya Anda telah mengautentikasi dengan repositori ECR dengan menggunakan perintah docker login
secara manual, maka Docker mungkin telah menyimpan token autentikasi yang telah kedaluwarsa. Docker akan terus mencoba menggunakan token autentikasi yang di-cache tersebut alih-alih menggunakan bantuan kredensial. Anda harus secara eksplisit menghapus token kedaluwarsa yang di-cache sebelumnya menggunakan docker logout 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository
. Setelah itu Docker akan mulai menggunakan pembantu kredensial ECR untuk mengambil kredensial baru, dan Anda tidak perlu lagi menggunakan docker login
atau docker logout
.
Log dari Pembantu Kredensial Docker Amazon ECR disimpan di ~/.ecr/log
.
Untuk informasi selengkapnya tentang Amazon ECR, lihat Panduan Pengguna Amazon Elastic Container Registry.
Fitur yang ditandai sebagai eksperimental secara opsional disediakan bagi pengguna untuk menguji dan memberikan masukan.
Jika Anda menguji fitur eksperimental apa pun, Anda dapat memberikan masukan melalui masalah pelacakan fitur mengenai:
Pengalaman Anda dengan fitur tersebut
Isu atau masalah
Perbaikan yang disarankan
Fitur eksperimental tidak lengkap dalam desain dan implementasi. Perubahan yang tidak kompatibel dapat terjadi kapan saja atau dukungan dihentikan seluruhnya. Oleh karena itu fitur eksperimental tidak disarankan untuk digunakan di lingkungan produksi.
Jika Anda merasa menemukan potensi masalah keamanan, mohon jangan mempostingnya di Masalah. Sebagai gantinya, silakan ikuti petunjuk di sini atau kirim email langsung ke keamanan AWS.
Pembantu Kredensial Docker Amazon ECR dilisensikan di bawah Lisensi Apache 2.0.