Cara menginstal Docker pada instans AWS EC2 dengan AMI (pembaruan CE / Ee)

Apa cara menginstal Docker saat ini pada instance AWS EC2 yang menjalankan AMI?Telah ada Pengumuman Docker Enterprise Edition dan sekarang saya ingin tahu apakah ada yang berubah.Sampai saat ini, saya telah menggunakan yum install docker dan dapatkan versi Docker di 1.12.6, build 7392c3b/1.12.6 sekarang (3/3/2017). Namun, repositori Docker di GitHub memberitahu saya bahwa sudah ada rilis yang lebih baru.

Saya ingat repositori Docker (paket) resmi yang memiliki paket bernama docker-engine mengganti docker beberapa waktu lalu dan sekarang mereka tampaknya membagi paket menjadi docker-ce dan docker-ee, di mana misalnya "Docker Community Edition (Docker CE) tidak didukung di Red Hat Enterprise Linux." [Sumber]

Jadi, apakah atau apakah masih benar menggunakan yang di atas untuk mendapatkan versi buruh pelabuhan stabil terbaru pada instance EC2 yang menjalankan AMI atau apakah saya perlu menarik paket dari tempat lain (dan jika demikian yang mana, CE atau EE)?

Untuk menjalankan Docker di AWS AMI, Anda harus mengikuti langkah-langkah di bawah ini (ini semua dengan asumsi Anda memiliki ssh ke instance EC2).

  1. Perbarui paket pada instans Anda

    [ec2-user ~]$ sudo yum update -y

  2. Instal Docker

    [ec2-user ~]$ sudo yum install docker -y

  3. Memulai layanan Docker

    [ec2-user ~]$ sudo service docker start

  4. Tambahkan ec2-user ke grup docker sehingga anda dapat menjalankan perintah Docker tanpa menggunakan sudo.

    [ec2-user ~]$ sudo usermod -a -G docker ec2-user

Anda kemudian harus dapat menjalankan semua perintah buruh pelabuhan tanpa memerlukan sudo. Setelah menjalankan perintah ke-4, saya perlu keluar dan masuk kembali agar perubahan diterapkan.

Bagian tersulit untuk mengetahui semua ini adalah persyaratan container-selinux. Hanya menemukan versi terbaru di http://mirror.centos.org/centos/7/extras/x86_64/Packages/ dan menginstal yang pertama. Selain itu, instans EC2 mungkin tidak memiliki generator entropi yang tepat sehingga haveged mungkin perlu diinstal.

Sisanya diambil dari https://docs.docker.com/install/linux/docker-ce/centos/ dengan penambahan haveged dan firewalld. Semua ini harus dilakukan sebagai root sehingga sudo tepat.

yum install -q -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.42-1.gitad8f0f7.el7.noarch.rpmyum install -q -y http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/h/haveged-1.9.1-1.el7.x86_64.rpmyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum install -q -y firewalld docker-cesystemctl enable firewalldsystemctl start firewalldfirewall-cmd --add-port=2377/tcp --permanentfirewall-cmd --add-port=2376/tcp --permanentfirewall-cmd --add-port=7946/tcp --permanentfirewall-cmd --add-port=7946/udp --permanentfirewall-cmd --add-port=4789/udp --permanentfirewall-cmd --zone=public --permanent --add-masqueradefirewall-cmd --reloadsystemctl enable havegedsystemctl start havegedsystemctl enable dockersystemctl start dockersetenforce 1

Aktifkan SELinux dengan memodifikasi /etc/sysconfig/selinux menjadi

SELINUX=enforcingSELINUXTYPE=targeted

Kemudian reboot instance Anda dengan mengeluarkan shutdown -r now

Mengeksekusi sudo docker version harus menghasilkan pada saat posting ini...

Klien: versi: 18.03.0-ce versi API: 1.37 versi Go: go1.9.4 Git commit: 0520e24 dibangun: Rabu 21 Maret 23:09:15 2018 OS/Arch: linux/amd64 eksperimental: salah Orchestrator: swarmServer: Mesin: versi: 18.03.0-ce versi API: 1.37 (versi minimum 1.12) versi Go: go1.9.4 Git commit: 0520e24 dibangun: Rabu 21 Maret 23:13:03 2018 os/lengkungan: Linux/amd64 eksperimental: salah

Per https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html

AMI yang dioptimalkan Amazon ECS saat ini (amzn-ami-2017.09.J-amazon-ECS-optimized) terdiri dari:

  • Versi minimal terbaru dari AMI Amazon Linux
  • Versi terbaru dari agen kontainer Amazon ECS (1.17.2)
  • Versi Docker yang direkomendasikan untuk agen kontainer Amazon ECS terbaru (17.12.0-ce)
  • Versi terbaru dari paket ecs-init untuk menjalankan dan memantau Agen Amazon ECS (1.17.2-1)

Anda dapat melihat sejarah di https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html

Selain jawaban saya sebelumnya. Jika Anda menggunakan Terraform, saya juga telah membuat modul Terraform yang dapat digunakan untuk membuat kawanan buruh pelabuhan

https://registry.terraform.io/modules/trajano/swarm-aws/docker

Perbedaan antara pendekatan yang telah saya lakukan sebelumnya vs pendekatan saya saat ini lakukan dengan modul terraform adalah memanfaatkan paket Docker yang disediakan AWS. Ini tidak termasuk docker-compose lengkap dan yang tidak, tetapi Anda tidak memerlukan paket tersebut secara normal di server.

Karena saya menggunakan yang disediakan Amazon, Ini bukan lagi versi 18.09 terbaru tetapi versi 18.06. Namun, pengaturannya lebih sederhana dan saya tidak harus bermain mengejar container-selinux.

Satu-satunya ketergantungan eksternal yang saya gunakan adalah EPEL untuk mendapatkan haveged karena Anda masih memerlukan sumber acak yang baik untuk beberapa aplikasi.

Saya juga mengandalkan Grup Keamanan AWS daripada secara eksplisit menyiapkan firewalld dan menggunakan pengaturan SELinux yang gagal dalam gambar AMI.

Apakah Anda membaca dokumentasi AWS tentang cara menginstal Docker standard? Jika demikian, bagian mana yang tidak berfungsi, atau masalah apa yang tidak ditangani? Creating a container image for use on Amazon ECS - Amazon Elastic Container Service

Saya kira Amazon akan memperbaruinya ketika mereka menyiasatinya. Meskipun Anda tahu tentu saja bahwa tidak ada yang harus menggunakan Amazon Linux untuk apa pun.

Pertanyaannya adalah apakah saya bisa terus melakukannya seperti ini. Seperti yang telah disebutkan, itu akan menginstal saya Docker berversi pada 1.12 yang sudah satu jika tidak lebih pembaruan versi minor di belakang rilis stabil terbaru (1.13, sebelum CE/EE) dan saya bertanya-tanya apakah ini karena penundaan pembaruan repositori yang biasa atau karena panduan dan paket sudah ketinggalan zaman yang memerlukan beberapa pekerjaan pengganti yang dilakukan oleh saya (misalnya entah bagaimana mendapatkan Docker dari repositori mereka sendiri?). Juga mengenai pengumuman ee terbaru yang mungkin mengubah sesuatu…

Menjalankan apa AMI?

@ MichaelHampton yang terbaru untuk HVM, Amazon Linux AMI 2016.09.1.

Jika itu adalah solusi nyata untuk masalah ini, ini membuat saya sedikit sedih. Namun terima kasih atas petunjuknya, saya belum memiliki terlalu banyak pengalaman dengan EC2 untuk sampai pada kesimpulan ini sendiri. Saya selalu berpikir itu yang terbaik untuk menggunakan AMI karena (seharusnya) adalah gambar yang paling diperbarui dan diadaptasi mengenai virtualisasi EC2.

Semua paket diperbarui, kernel. Namun saya menemukan Ubuntu jauh lebih mudah untuk instalasi perangkat lunak dan dukungan umum, ada beberapa sumber daya Amazon Linux sehingga hal-hal sulit menjadi lebih sulit.

@ MichaelHampton Amazon Linux baik-baik saja untuk penggunaan ECS. Ini sudah dikonfigurasi sebelumnya untuk penggunaan ECS, dan OS yang mendasarinya tidak terlalu menjadi masalah dalam kasus itu.

@ MichaelHampton ` ‘tidak ada yang harus menggunakan Amazon Linux untuk apa pun’ jadi AMI apa yang Anda usulkan, Pak?