Как в настоящее время устанавливается 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)?
Ответы:
Чтобы запустить Docker на AWS AMI, вы должны выполнить следующие шаги (все они предполагают, что вы подключили ssh к экземпляру 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
.Включить SELinux , изменив
/etc/sysconfig/selinux
наЗатем перезагрузите ваш экземпляр, выполнив
shutdown -r now
Выполнение
sudo docker version
должно привести к моменту этой публикации ...источник
По https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html
Вы можете увидеть историю на 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.
источник