Как установить 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
прямо сейчас (03.03.2017). Однако репозиторий Docker на GitHub сообщает мне, что уже есть более новые выпуски.
Я помню официальный Docker (пакет) репозиторий, имеющий пакет с именем docker-engine
замена docker
Некоторое время назад, и теперь они, кажется, разделили пакет на docker-ce
а также docker-ee
где, например, "Docker Community Edition (Docker CE) не поддерживается в Red Hat Enterprise Linux". [ Источник]
Так или же все-таки будет правильным использовать вышеприведенное для получения последней стабильной версии Docker на инстансах EC2, использующих AMI, или мне нужно вытащить пакет из другого места (и если да, то из какого, CE или EE)?
4 ответа
Чтобы запустить Docker на AWS AMI, вы должны выполнить следующие шаги (все они предполагают, что у вас есть ssh'd для экземпляра EC2).
Обновите пакеты на вашем экземпляре
[ec2-user ~]$ sudo yum update -y
Установить докер
[ec2-user ~]$ sudo yum install docker -y
Запустите сервис Docker
[ec2-user ~]$ sudo service docker start
Добавьте пользователя ec2 в группу 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/ с добавлением 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 Экспериментальный: ложный
По 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
В дополнение к моему предыдущему ответу. Если вы используете 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.