Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengonfigurasi instance ECS penampung Amazon untuk gambar Docker pribadi
Agen ECS kontainer Amazon dapat mengautentikasi dengan registri privat, menggunakan autentikasi dasar. Bila Anda mengaktifkan autentikasi registri privat, Anda dapat menggunakan citra Docker privat dalam ketentuan tugas Anda. Fitur ini hanya didukung oleh tugas yang menggunakan tipe EC2 peluncuran.
Metode lain mengaktifkan autentikasi registri privat digunakan AWS Secrets Manager untuk menyimpan kredenal registri privat Anda secara aman dan kemudian mereferensikannya dalam definisi kontainer Anda. Hal ini mengizinkan tugas Anda untuk menggunakan citra dari repositori privat. Metode ini mendukung tugas menggunakan jenis peluncuran EC2 atau Fargate. Untuk informasi selengkapnya, lihat Menggunakan gambar AWS non-kontainer di Amazon ECS.
Agen ECS kontainer Amazon mencari dua variabel lingkungan saat diluncurkan:
-
ECS_ENGINE_AUTH_TYPE
, yang menentukan tipe data autentikasi yang sedang dikirim. -
ECS_ENGINE_AUTH_DATA
, yang berisi kredensial autentikasi aktual.
Varian Linux dari Amazon ECS -optimized AMI memindai /etc/ecs/ecs.config
file untuk variabel-variabel ini ketika instance container diluncurkan, dan setiap kali layanan dimulai (dengan sudo start ecs perintah). AMIsyang tidak ECS dioptimalkan Amazon harus menyimpan variabel lingkungan ini dalam file dan meneruskannya dengan --env-file
opsi ke docker run perintah yang memulai agen penampung.path_to_env_file
penting
Kami tidak menyarankan Anda untuk memasukkan variabel lingkungan autentikasi ini pada peluncuran instans dengan data EC2 pengguna Amazon atau meneruskannya dengan --env
opsi ke perintah. docker run Metode ini tidak sesuai untuk data sensitif, seperti kredensial autentikasi. Untuk informasi tentang menambahkan kredensial autentikasi secara aman ke instans kontainer Anda, lihat Menyimpan konfigurasi instans ECS penampung Amazon di Amazon S3.
Format autentikasi
Ada dua format yang tersedia untuk autentikasi registri privat, dockercfg
dan docker
.
Format autentikasi dockercfg
Format dockercfg
menggunakan informasi autentikasi yang disimpan dalam file konfigurasi yang dibuat ketika Anda menjalankan perintah docker
login. Anda dapat membuat file ini dengan menjalankan docker
login di sistem lokal dan memasukkan nama pengguna registri, kata sandi, dan alamat email. Anda juga dapat masuk ke instans kontainer dan menjalankan perintah di sana. Tergantung pada versi Docker Anda, file ini disimpan sebagai ~/.dockercfg
atau ~/.docker/config.json
.
cat ~/.docker/config.json
Output:
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "zq212MzEXAMPLE7o6T25Dk0i
"
}
}
}
penting
Versi Docker yang lebih baru membuat file konfigurasi seperti yang ditunjukkan di atas dengan objek auths
. ECSAgen Amazon hanya mendukung data dockercfg
autentikasi yang dalam format di bawah ini, tanpa auths
objek. Jika Anda memiliki utilitas jq yang terinstal, Anda dapat mengekstrak data ini dengan perintah berikut: cat ~/.docker/config.json | jq
.auths
cat ~/.docker/config.json | jq .auths
Output:
{
"https://index.docker.io/v1/": {
"auth": "zq212MzEXAMPLE7o6T25Dk0i
",
"email": "email@example.com"
}
}
Dalam contoh di atas, variabel lingkungan berikut harus ditambahkan ke file variabel lingkungan (/etc/ecs/ecs.config
untuk Amazon yang ECS dioptimalkanAMI) yang merupakan beban agen ECS kontainer Amazon pada saat waktu aktif. Jika Anda tidak menggunakan Amazon ECS yang dioptimalkan AMI dan Anda memulai agen secara manualdocker
run, tentukan file variabel lingkungan dengan --env-file
opsi ketika Anda memulai agen.path_to_env_file
ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"
zq212MzEXAMPLE7o6T25Dk0i
","email":"email@example.com
"}}
Anda dapat mengonfigurasi beberapa registri privat dengan sintaksis berikut:
ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"
repo.example-01.com
":{"auth":"zq212MzEXAMPLE7o6T25Dk0i
","email":"email@example-01.com
"},"repo.example-02.com
":{"auth":"fQ172MzEXAMPLEoF7225DU0j
","email":"email@example-02.com
"}}
Format autentikasi dockercfg
docker
Format menggunakan JSON representasi server registri yang harus diautentikasi dengan agen. Hal ini juga mencakup parameter autentikasi yang diperlukan oleh registri tersebut (seperti nama pengguna, kata sandi, dan alamat email untuk akun tersebut). Untuk akun Docker Hub, JSON representasi terlihat seperti berikut ini:
{ "https://index.docker.io/v1/": { "username": "
my_name
", "password": "my_password
", "email": "email@example.com
" } }
Dalam contoh di ini, variabel lingkungan berikut harus ditambahkan ke file variabel lingkungan (/etc/ecs/ecs.config
untuk yang ECS dioptimalkan AmazonAMI) yang merupakan beban agen ECS kontainer Amazon pada saat waktu aktif. Jika Anda tidak menggunakan Amazon ECS yang dioptimalkanAMI, dan Anda memulai agen secara manualdocker
run, tentukan file variabel lingkungan dengan --env-file
opsi ketika Anda memulai agen.path_to_env_file
ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"
my_name
","password":"my_password
","email":"email@example.com
"}}
Anda dapat mengonfigurasi beberapa registri privat dengan sintaksis berikut:
ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"
repo.example-01.com
":{"username":"my_name
","password":"my_password
","email":"email@example-01.com
"},"repo.example-02.com
":{"username":"another_name
","password":"another_password
","email":"email@example-02.com
"}}
Prosedur
Gunakan prosedur berikut untuk mengaktifkan registri privat untuk instans kontainer Anda.
Untuk mengaktifkan pendaftar pribadi di Amazon yang dioptimalkan ECS AMI
-
Masuk ke instans kontainer Anda menggunakanSSH.
-
Buka file
/etc/ecs/ecs.config
dan tambahkan nilaiECS_ENGINE_AUTH_TYPE
danECS_ENGINE_AUTH_DATA
untuk registri dan akun Anda:sudo vi /etc/ecs/ecs.config
Contoh ini mengautentikasi akun pengguna Docker Hub:
ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"
my_name
","password":"my_password
","email":"email@example.com
"}} -
Lakukan pemeriksaan untuk melihat apakah agen Anda menggunakan variabel lingkungan
ECS_DATADIR
untuk menyimpan statusnya:docker inspect ecs-agent | grep ECS_DATADIR
Output:
"ECS_DATADIR=/data",
penting
Jika perintah sebelumnya tidak mengembalikan variabel lingkungan
ECS_DATADIR
, Anda harus menghentikan setiap tugas yang berjalan pada instans kontainer ini sebelum menghentikan agen. Agen yang lebih baru dengan variabel lingkunganECS_DATADIR
menyimpan statusnya dan Anda dapat menghentikannya saat tugas sedang berjalan tanpa masalah. Untuk informasi selengkapnya, lihat Memperbarui agen ECS penampung Amazon. -
Hentikan layanan
ecs
:sudo stop ecs
Output:
ecs stop/waiting
-
Mulai ulang layanan
ecs
.-
Untuk Amazon Linux 2 yang ECS dioptimalkan untuk Amazon Linux 2: AMI
sudo systemctl restart ecs
-
Untuk Amazon yang ECS dioptimalkan Amazon LinuxAMI:
sudo stop ecs && sudo start ecs
-
-
(Opsional) Anda dapat memastikan bahwa agen sedang berjalan dan melihat beberapa informasi tentang instans kontainer baru dengan melakukan kueri pada operasi introspeksi API agen. Untuk informasi selengkapnya, lihat Introspeksi ECS wadah Amazon.
curl http://localhost:51678/v1/metadata