Qual é a maneira atual de instalar o Docker em uma instância AWS EC2 executando a AMI? Houve um anúncio do Docker Enterprise Edition e agora quero saber se algo mudou. Até agora, tenho usado yum install docker
e tenho uma versão do Docker 1.12.6, build 7392c3b/1.12.6
agora (3/3/2017). No entanto, o repositório do Docker no GitHub informa que já existem versões mais recentes.
Lembro-me do repositório oficial do Docker (pacote) com um pacote chamado docker-engine
replace docker
há algum tempo e agora eles parecem dividir o pacote em docker-ce
e docker-ee
, onde, por exemplo, "Docker Community Edition (Docker CE) não é suportado no Red Hat Enterprise Linux." [ Fonte ]
Então, é ou ainda será correto usar o acima para obter a versão estável mais recente do Docker em instâncias do EC2 executando a AMI ou preciso extrair o pacote de outro lugar (e, em caso afirmativo, qual, CE ou EE)?
Para obter o Docker em execução no AWS AMI, você deve seguir as etapas abaixo (todas elas pressupõem que você tenha feito o ssh'd na instância do EC2).
Atualize os pacotes em sua instância
[ec2-user ~]$ sudo yum update -y
Instalar Docker
[ec2-user ~]$ sudo yum install docker -y
Iniciar o serviço Docker
[ec2-user ~]$ sudo service docker start
Adicione o ec2-user ao grupo docker para poder executar comandos do Docker sem usar o sudo.
[ec2-user ~]$ sudo usermod -a -G docker ec2-user
Você deve ser capaz de executar todos os comandos do docker sem exigir
sudo
. Depois de executar o quarto comando, precisei sair e fazer login novamente para que a alteração tivesse efeito.A parte mais difícil de descobrir tudo isso foi o requisito container-selinux. Basta encontrar a versão mais recente em http://mirror.centos.org/centos/7/extras/x86_64/Packages/ e instalar primeiro. Além disso, as instâncias do EC2 podem não ter um gerador de entropia adequado, portanto,
haveged
pode ser necessário instalá-lo.O resto é retirado de https://docs.docker.com/install/linux/docker-ce/centos/ com a adição de haveged e firewalld. Tudo isso deve ser feito como root de maneira
sudo
apropriada.Habilite o SELinux modificando
/etc/sysconfig/selinux
para serEm seguida, reinicie sua instância emitindo
shutdown -r now
A execução
sudo docker version
deve render a partir do momento desta postagem...Por https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html
Você pode ver o histórico em https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html
Além da minha resposta anterior. Se você usa Terraform, também criei um módulo Terraform que pode ser usado para criar um Docker Swarm
https://registry.terraform.io/modules/trajano/swarm-aws/docker
A diferença entre a abordagem que fiz anteriormente e a abordagem que estou fazendo atualmente com o módulo terraform é utilizar os pacotes do Docker fornecidos pela AWS. Isso não inclui o docker-compose completo e outros, mas você não precisa desses pacotes normalmente em um servidor.
Como estou usando o que a Amazon forneceu, não é mais a versão 18.09 mais recente, mas a versão 18.06. No entanto, a configuração é mais simples e não preciso ficar em dia com o container-selinux.
A única dependência externa que uso é EPEL para obter hasged porque você ainda precisa de uma boa fonte aleatória para alguns aplicativos.
Também confiei nos grupos de segurança da AWS em vez de configurar explicitamente o firewalld e usei a configuração SELinux que é padrão na imagem AMI.