Как установить Docker на экземпляр AWS EC2 с помощью AMI (обновление CE/EE)

Каков текущий способ установки Docker на экземпляре AWS EC2, работающем под управлением AMI?Там было анонс Docker Enterprise Edition и теперь я хочу знать, изменилось ли что-нибудь.До сих пор я использовал yum install docker и сделайте так, чтобы версия Docker была настроена по адресу 1.12.6, build 7392c3b/1.12.6 прямо сейчас (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)?

Чтобы запустить Docker на AWS AMI, вам следует выполнить следующие действия (все они предполагают, что у вас есть ssh для подключения к экземпляру 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-user в группу docker, чтобы вы могли выполнять команды Docker без использования sudo.

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

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

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

Остальное взято из https://docs.docker.com/install/linux/docker-ce/centos/ с добавлением haveged и 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.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

Включить SELinux путем изменения /etc/sysconfig/selinux быть

SELINUX=enforcingSELINUXTYPE=targeted

Затем перезагрузите свой экземпляр, выполнив shutdown -r now

Проведение sudo docker version должно быть получено на момент этой публикации...

Клиент: Версия: 18.03.0-версия API ce:   1.37 Версия Go: go1.9.4 Git commit: 0520e24 Построен: Ср. 21 марта 23:09:15 2018 ОС/Arch: linux/amd64 Экспериментальный: false Оркестратор: swarmServer: Движок: Версия: 18.03.0-версия API ce:  1.37 (минимальная версия 1.12) Версия Go: go1.9.4 Git commit: 0520e24 Дата сборки: Ср. 21 марта 23:13:03 2018 ОС/Arch: linux/amd64 Экспериментальный: false

По 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 container agent (17.12.0-ce)
  • Последняя версия пакета ecs-init для запуска и мониторинга агента Amazon ECS (1.17.2-1)

Вы можете ознакомиться с историей по адресу https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html

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

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

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

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

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

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

Вы читали документацию AWS о том, как установить Docker standard? Если да, то какая его часть не сработала или какие проблемы он не решал? Creating a container image for use on Amazon ECS - Amazon Elastic Container Service

Я полагаю, что Amazon обновит его, когда у них появится время. Хотя вы, конечно, знаете, что никто не должен использовать Amazon Linux ни для чего.

Вопрос в том, смогу ли я продолжать делать это таким образом. Как уже упоминалось, он установит мне Docker с версией 1.12, которая уже является одним, если не более, незначительным обновлением версии после последней стабильной версии (1.13, до CE / EE), и мне интересно, связано ли это с обычной задержкой обновления репозитория или потому, что руководство и пакет просто устарели, что требует некоторой замены работа, проделанная мной (например, каким-то образом получить Docker из их собственного репозитория?). Также относительно последнего объявления EE, которое может что-то изменить…

Управляешь чем, АМИ?

@MichaelHampton последняя версия для HVM, Amazon Linux AMI 2016.09.1.

Если это реальное решение этой проблемы, то мне действительно немного грустно. Однако, спасибо за подсказку, у меня еще не было слишком большого опыта работы с EC2, чтобы самостоятельно прийти к такому выводу. Я всегда думал, что лучше всего использовать AMI, потому что это (должно быть) самый обновленный и адаптированный образ, касающийся виртуализации EC2.

Все пакеты обновлены, ядро. Однако я нахожу Ubuntu намного проще для установки программного обеспечения и общей поддержки, ресурсов Amazon Linux мало, поэтому сложные вещи становятся еще более сложными.

@MichaelHampton Amazon Linux отлично подходит для использования ECS. Он предварительно настроен для использования ECS, и базовая ОС в этом случае не имеет большого значения.

@MichaelHampton, “никто не должен использовать Amazon Linux ни для чего”, так что же вы тогда предлагаете, сэр?