Як встановити Docker на екземплярі AWS EC2 за допомогою AMI (оновлення CE / EE)


28

Який сучасний спосіб встановлення Docker на екземплярі AWS EC2, на якому працює AMI? Було оголошено про Docker Enterprise Edition, і тепер я хочу знати, чи змінилося щось. До цих пір я використовував yum install dockerі отримую 1.12.6, build 7392c3b/1.12.6докерську версію прямо зараз (3.03.2017). Однак сховище Docker на GitHub повідомляє мені, що вже є новіші випуски.

Я пам’ятаю, що офіційний сховище Docker (пакет) мав пакет із назвою, який docker-engineзамінюється dockerдеякий час тому, і тепер вони, схоже, розділили пакет на, docker-ceі docker-ee, наприклад, наприклад, «Red Dock Community Edition (Docker CE) не підтримується в Red Hat Enterprise Linux». [ Джерело ]

Так чи буде все-таки правильно використовувати вищезазначене, щоб отримати останню стабільну версію Докера в екземплярах EC2, на якій працює AMI, чи мені потрібно витягнути пакунок з іншого місця (і якщо так, то який, CE чи EE)?


2
Ви читали документацію AWS про те, як встановити стандарт Docker? Якщо так, то яка частина її не працювала, або які проблеми не стосувалися? docs.aws.amazon.com/AmazonECS/latest/developerguide/…
Тим

Питання в тому, чи можу я продовжувати робити це так. Як вже було сказано, він встановить мені Docker версією в 1.12, що вже є однією, якщо не більшою мірою оновленою версією за останнім стабільним випуском (1.13, до CE / EE), і мені цікаво, чи це пов’язано із звичайною затримкою оновлення репозиторію чи тому, що посібник і пакет просто застаріли, що вимагає виконаної мною певної роботи по заміні (наприклад, якось отримати Docker з власного сховища?). Також стосовно останнього оголошення EE, яке може щось змінити ...
mxscho

Що працює AMI?
Майкл Хемптон

@MichaelHampton - остання версія для HVM, Amazon Linux AMI 2016.09.1.
mxscho

1
Я думаю, Amazon оновить його, коли вони обійдуться. Хоча ви, звичайно, знаєте, що ніхто не повинен використовувати Amazon Linux ні для чого.
Майкл Хемптон

Відповіді:


44

Щоб запустити Docker на AWS AMI, слід дотримуватися наведених нижче кроків (всі вони припускають, що ви маєте ssh'd на екземпляр EC2).

  1. Оновіть пакети у своєму екземплярі

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

  2. Встановити Docker

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

  3. Запустіть службу Docker

    [ec2-user ~]$ sudo service docker start

  4. Додайте користувача ec2 до групи докерів, щоб ви могли виконувати команди Docker без використання sudo.

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

Тоді ви зможете запускати всі команди докер, не вимагаючи sudo. Після виконання четвертої команди мені потрібно було вийти з системи та увійти в систему, щоб зміни вступили в силу.


3
Як я вже згадував у питанні, це справді працює, але встановлює застарілу версію Docker (все ще версія 1.12.6 від 28.05.2017). Хоча я сам перейшов на зображення Ubuntu для моїх екземплярів EC2, я дійсно хотів знати, як встановити одну з поточних версій Docker на зображення AMI. Тому що там (принаймні, на момент запитання) не було очевидного способу отримати сучасний Docker CE або установку Docker EE. Саме про це йшлося в першу чергу, і саме тому я не можу прийняти його без вагань. Дякуємо все одно!
mxscho

@mxscho Так, це теж те, що я шукаю, тому, будь ласка, зачекайте, поки не буде опубліковано відповідь, що стосується питання.
користувач239558

1
Сьогодні yum install встановлює 17.03.1ce-1.50.amzn1
raarts

1
Не працювали для мене. Тому мені потрібно було це зробити. sudo yum встановити yum-utils, а потім sudo yum-config-manager --enable rhui-REGION-rhel-server-extras, а потім встановити
docker

5

Найскладнішою частиною для вирішення всього цього була вимога контейнер-selinux. Просто знайдіть останню версію на http://mirror.centos.org/centos/7/extras/x86_64/Packages/ та встановіть її першою. Крім того, екземпляри EC2 можуть не мати належного генератора ентропії, тому havegedможе знадобитися встановити.

Решта взята з https://docs.docker.com/install/linux/docker-ce/centos/ з додаванням теги та firewalld. Все це повинно бути виконано як корінь так sudoналежним чином.

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

Увімкніть SELinux , змінивши, /etc/sysconfig/selinuxщоб бути

SELINUX=enforcing
SELINUXTYPE=targeted

Потім перезавантажте свій примірник, видавши shutdown -r now

Виконання sudo docker versionповинно бути результатом на момент цієї публікації ...

Клієнт:
 Версія: 18.03.0-ce
 Версія API: 1,37
 Версія Go: go1.9.4
 Git комісія: 0520e24
 Побудовано: ср. 21 березня 23:09:15 2018
 OS / Arch: linux / amd64
 Експериментальний: хибний
 Оркестратор: рій

Сервер:
 Двигун:
  Версія: 18.03.0-ce
  Версія API: 1,37 (мінімальна версія 1,12)
  Версія Go: go1.9.4
  Git комісія: 0520e24
  Побудовано: ср. 21 березня 23:13:03 2018
  OS / Arch: linux / amd64
  Експериментальний: хибний

1
Ви спробували запустити Docker на будь-яких інших AMI, крім CentOS? Чи можете ви поділитися своїми знаннями?
Suncatcher

1
Я не використовував centos Ami. Я використовував AMI Linux 2. Linux 1 занадто старий.
Архімед Траяно

1
Добре, зрозумів. Чи повністю використані CentOS repos, які ви використовували, Amazon AMI?
Suncatcher

Правильно, я використовую центри VM для розробки за допомогою Vagrant, я просто повинен був адаптувати свої сценарії, щоб він працював з відсутніми пакетами.
Архімед Траяно

1
Проста параноїя
Архімед Траяно

2

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

Поточний AMI, оптимізований за допомогою ECS (amzn-ami-2017.09.j-amazon-ecs-optimized) складається з:

  • Остання мінімальна версія AMI Amazon Linux
  • Остання версія контейнера-агента Amazon ECS (1.17.2)
  • Рекомендована версія Docker для останнього контейнерного агента Amazon ECS (17.12.0-ce)
  • Остання версія пакета ecs-init для запуску та моніторингу агента Amazon ECS (1.17.2-1)

Ви можете переглянути історію на https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html


0

Окрім моєї попередньої відповіді. Якщо ви використовуєте Terraform, я також створив модуль Terraform, який можна використовувати для створення Docker Swarm

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

Різниця між підходом, який я раніше робив, від підходу, який я зараз роблю з модулем тераформи, полягає у використанні пакетів Docker, наданих AWS. Це не включає повний докер-композит і що ні, але вам ці пакети зазвичай не потрібні на сервері.

Оскільки я використовую той, який надав Amazon, це вже не остання версія 18.09, а версія 18.06. Однак налаштування простіше, і мені не доведеться грати доганяти контейнер-selinux.

Єдиною зовнішньою залежністю, яку я використовую, є EPEL, щоб отримати підробку, оскільки для деяких додатків вам все-таки потрібне хороше випадкове джерело.

Я також покладався на групи безпеки AWS, а не явно встановлював firewalld і використовував налаштування SELinux, за замовчуванням у зображенні AMI.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.