Bagaimana cara menginstal Docker pada contoh AWS EC2 dengan AMI (Pembaruan CE / EE)

28

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

Saya ingat repositori Docker (paket) resmi yang memiliki paket yang dinamai docker-enginemenggantikan dockerbeberapa waktu lalu dan sekarang mereka sepertinya membagi paket menjadi docker-cedan docker-ee, di mana mis. "Docker Community Edition (Docker CE) tidak didukung di Red Hat Enterprise Linux." [ Sumber ]

Jadi, apakah masih benar menggunakan di atas untuk mendapatkan versi Docker 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)?

mxscho
sumber
2
Apakah Anda membaca dokumentasi AWS tentang cara menginstal standar Docker? Jika demikian, bagian mana yang tidak berfungsi, atau masalah apa yang tidak diatasi? docs.aws.amazon.com/AmazonECS/latest/developerguide/…
Tim
Pertanyaannya adalah apakah saya bisa terus melakukannya seperti ini. Seperti yang sudah disebutkan itu akan menginstal saya Docker versi 1,12 yang sudah satu jika tidak lebih pembaruan versi kecil di belakang rilis stabil terbaru (1,13, sebelum CE / EE) dan saya bertanya-tanya apakah ini karena keterlambatan pembaruan repositori biasa atau karena panduan dan paket hanya menjadi usang yang membutuhkan beberapa pekerjaan pengganti yang dilakukan oleh saya (misalnya entah bagaimana mendapatkan Docker dari repositori mereka sendiri?). Juga tentang pengumuman EE terbaru yang mungkin mengubah sesuatu ...
mxscho
Menjalankan apa AMI?
Michael Hampton
@MichaelHampton yang terbaru untuk HVM, Amazon Linux AMI 2016.09.1.
mxscho
1
Saya kira Amazon akan memperbaruinya ketika mereka menyiasatinya. Meskipun Anda tahu tentu saja tidak ada yang harus menggunakan Amazon Linux untuk apa pun.
Michael Hampton

Jawaban:

44

Untuk menjalankan Docker pada AWS AMI Anda harus mengikuti langkah-langkah di bawah ini (ini semua dengan asumsi Anda telah beralih ke instance EC2).

  1. Perbarui paket pada contoh Anda

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

  2. Instal Docker

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

  3. Mulai Layanan Docker

    [ec2-user ~]$ sudo service docker start

  4. Tambahkan pengguna ec2 ke grup buruh pelabuhan 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 perlu sudo. Setelah menjalankan perintah ke-4, saya harus keluar dan masuk kembali agar perubahan diterapkan.

ajtrichards
sumber
3
Seperti yang sudah saya sebutkan dalam pertanyaan, ini memang berfungsi, tetapi menginstal Docker versi lama (masih versi 1.12.6 pada 05/28/2017). Sementara saya sendiri telah beralih ke gambar Ubuntu untuk instance EC2 saya, hal yang sebenarnya ingin saya ketahui adalah bagaimana menginstal salah satu versi Docker saat ini pada gambar AMI. Karena di sana (setidaknya pada saat pertanyaan) tidak ada cara yang jelas untuk mendapatkan pemasangan Docker CE atau EE Docker yang terbaru. Itulah pertanyaan pertama tentang ini dan itulah alasan mengapa saya tidak bisa menerimanya tanpa ragu-ragu. Bagaimanapun terima kasih!
mxscho
@ mxscho ya itu juga yang saya cari, jadi harap tunggu sampai jawaban yang membahas pertanyaan diposting.
user239558
1
Hari ini yum instal instal 17.03.1ce-1.50.amzn1
raarts
1
Tidak bekerja untuk saya. Jadi saya perlu melakukan ini. sudo yum instal yum-utils, lalu sudo yum-config-manager - aktifkan rhui-REGION-rhel-server-extras, lalu sudo yum instal docker
TheAshwaniK
5

Bagian tersulit untuk mengetahui semua ini adalah persyaratan wadah-selinux. Temukan saja versi terbaru di http://mirror.centos.org/centos/7/extras/x86_64/Packages/ dan instal terlebih dahulu. Selain itu instance EC2 mungkin tidak memiliki generator entropi yang tepat sehingga havegedmungkin perlu diinstal.

Sisanya diambil dari https://docs.docker.com/install/linux/docker-ce/centos/ dengan tambahan hasged and firewalld. Semua ini harus dilakukan sebagai root dengan sudotepat.

yum install -q -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.42-1.gitad8f0f7.el7.noarch.rpm
yum install -q -y http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/h/haveged-1.9.1-1.el7.x86_64.rpm
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -q -y firewalld docker-ce
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --add-port=2377/tcp --permanent
firewall-cmd --add-port=2376/tcp --permanent
firewall-cmd --add-port=7946/tcp --permanent
firewall-cmd --add-port=7946/udp --permanent
firewall-cmd --add-port=4789/udp --permanent
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload
systemctl enable haveged
systemctl start haveged
systemctl enable docker
systemctl start docker
setenforce 1

Aktifkan SELinux dengan memodifikasi /etc/sysconfig/selinuxmenjadi

SELINUX=enforcing
SELINUXTYPE=targeted

Kemudian reboot instans Anda dengan mengeluarkan shutdown -r now

Eksekusi sudo docker versionharus menghasilkan pada saat posting ini ...

Klien:
 Versi: 18.03.0-ce
 Versi API: 1.37
 Versi Go: go1.9.4
 Git melakukan: 0520e24
 Dibangun: Rabu 21 Maret 23:09:15 2018
 OS / Arch: linux / amd64
 Eksperimental: salah
 Orkestra: berkerumun

Server:
 Mesin:
  Versi: 18.03.0-ce
  Versi API: 1.37 (versi minimum 1.12)
  Versi Go: go1.9.4
  Git melakukan: 0520e24
  Dibangun: Rabu 21 Maret 23:13:03 2018
  OS / Arch: linux / amd64
  Eksperimental: salah
Archimedes Trajano
sumber
1
Sudahkah Anda mencoba menjalankan Docker pada AMI lain kecuali CentOS? Bisakah Anda berbagi pengalaman?
Suncatcher
1
Saya tidak menggunakan centos Ami saya menggunakan AMI Linux 2. Linux 1 terlalu tua.
Archimedes Trajano
1
OK mengerti. Apakah repos CentOS yang Anda gunakan sepenuhnya kompatibel dengan Amazon AMI?
Suncatcher
Benar saya menggunakan Centos VMs untuk pengembangan menggunakan Vagrant, saya hanya perlu mengadaptasi skrip saya sehingga berfungsi dengan paket yang hilang.
Archimedes Trajano
1
Simple paranoia
Archimedes Trajano
2

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

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

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

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

Plutext
sumber
0

Selain jawaban saya sebelumnya. Jika Anda menggunakan Terraform, saya juga telah membuat modul Terraform yang dapat digunakan untuk membuat Docker Swarm

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

Perbedaan antara pendekatan yang telah saya lakukan sebelumnya vs pendekatan yang saya lakukan saat ini dengan modul terraform adalah dengan memanfaatkan paket Docker yang disediakan AWS. Ini tidak termasuk komposisi buruh pelabuhan penuh dan apa yang tidak, tetapi Anda tidak memerlukan paket-paket itu secara normal di server.

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

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

Saya juga mengandalkan grup keamanan AWS daripada secara eksplisit mengatur firewalld dan menggunakan pengaturan SELinux yang default pada gambar AMI.

Archimedes Trajano
sumber