Как установить 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версию Docker прямо сейчас (3/3/2017). Тем не менее, репозиторий Docker на GitHub сообщает мне, что уже есть более новые выпуски.

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

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

mxscho
источник
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 Linux ни для чего.
Майкл Хэмптон

Ответы:

44

Чтобы запустить Docker на AWS AMI, вы должны выполнить следующие шаги (все они предполагают, что вы подключили ssh к экземпляру EC2).

  1. Обновите пакеты на вашем экземпляре

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

  2. Установить докер

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

  3. Запустите сервис Docker

    [ec2-user ~]$ sudo service docker start

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

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

После этого вы сможете запускать все команды Docker без необходимости sudo. После выполнения 4-й команды мне нужно было выйти и снова войти в систему, чтобы изменения вступили в силу.

ajtrichards
источник
3
Как я уже упоминал в этом вопросе, это действительно работает, но устанавливает устаревшую версию Docker (все еще версия 1.12.6 от 28.05.2017). Хотя я сам переключился на образ Ubuntu для своих экземпляров EC2, реальная вещь, которую я хотел знать, - это как установить одну из текущих версий Docker на образ AMI. Потому что там (по крайней мере, на момент вопроса) не было очевидного способа получить либо современную версию Docker CE, либо систему Docker EE. Вот о чем этот вопрос был в первую очередь, и именно поэтому я не могу принять его без колебаний. В любом случае, спасибо!
mxscho
@mxscho да, это тоже то, что я ищу, поэтому, пожалуйста, подождите, пока не будет опубликован ответ на этот вопрос.
user239558
1
Сегодня ни установить Установки 17.03.1ce-1.50.amzn1
raarts
1
Не работал для меня. Так что мне нужно было сделать это. sudo yum установить yum-utils, а затем sudo yum-config-manager --enable rhui-REGION-rhel-server-extras, а затем sudo yum установить докер
TheAshwaniK
5

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

Остальное взято с https://docs.docker.com/install/linux/docker-ce/centos/ с добавлением hasged и firewalld. Все это должно быть сделано с правами root 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-й
 Версия API: 1.37
 Версия Go: go1.9.4
 Git commit: 0520e24
 Построен: ср 21 мар 23:09:15 2018
 OS / Arch: linux / amd64
 Экспериментальный: ложный
 Оркестр: Рой

Сервер:
 Двигатель:
  Версия: 18.03.0-й
  Версия API: 1.37 (минимальная версия 1.12)
  Версия Go: go1.9.4
  Git commit: 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, которые вы использовали, полностью совместимы с Amazon AMI?
Suncatcher
Правильно я использую виртуальные машины Centos для разработки с использованием Vagrant, мне просто нужно было адаптировать свои скрипты, чтобы они работали с отсутствующими пакетами.
Архимед Траяно
1
Простая паранойя
Архимед Траяно
2

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

Текущий AMI, оптимизированный для Amazon ECS (amzn-ami-2017.09.j-amazon-ecs-optimized) состоит из:

  • Последняя минимальная версия Amazon Linux AMI
  • Последняя версия контейнерного агента 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

Plutext
источник
0

В дополнение к моему предыдущему ответу. Если вы используете Terraform, я также создал модуль Terraform, который можно использовать для создания Docker Swarm.

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

Разница между подходом, который я использовал ранее, и подходом, которым я являюсь в настоящее время с модулем terraform, заключается в использовании пакетов Docker, предоставляемых AWS. Это не включает в себя полный docker-compose и что нет, но вам обычно не нужны эти пакеты на сервере.

Поскольку я использую ту, которую предоставил Amazon, это уже не последняя версия 18.09, а версия 18.06. Однако настройка проще, и мне не нужно играть в догонялки в контейнере selinux.

Единственная внешняя зависимость, которую я использую - это EPEL, чтобы получить хэдж, потому что вам все еще нужен хороший случайный источник для некоторых приложений.

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

Архимед Траяно
источник