Como instalar o Docker na instância do AWS EC2 com AMI (atualização CE/EE)

Qual é a maneira atual de instalar o Docker em uma instância do AWS EC2 executando o AMI?Tem havido Um anúncio do Docker Enterprise Edition e agora quero saber se algo mudou.Até agora, eu tenho usado yum install docker e obter um Docker versionado em 1.12.6, build 7392c3b/1.12.6 agora (3/3/2017). Entanto, o repositório Docker no GitHub diz-me que já existem lançamentos mais recentes.

Lembro-me do repositório Docker (pacote) oficial com um pacote chamado docker-engine substituicao docker algum tempo atrás 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 mais recente do Docker estável em instâncias EC2 executando o AMI ou preciso puxar o pacote de outro lugar (e em caso afirmativo qual, CE ou EE)?

Para que o Docker seja executado no AWS AMI, você deve seguir as etapas abaixo (todas supondo que você tenha ssh na instância EC2).

  1. Atualize os pacotes em sua instância

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

  2. Instalar Docker

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

  3. Inicie o serviço Docker

    [ec2-user ~]$ sudo service docker start

  4. Adicione o usuário ec2 ao grupo docker para que você possa executar comandos Docker sem usar sudo.

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

Você deve então ser capaz de executar todos os comandos do docker sem exigir sudo. Depois de executar o 4º comando, precisei fazer logout e fazer login novamente para que a alteração entrasse em vigor.

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 instale isso primeiro. Além disso, as instâncias EC2 podem não ter um gerador de entropia adequado haveged pode precisar ser instalado.

O resto é tirado de https://docs.docker.com/install/linux/docker-ce/centos/ com a adição de haveged e firewalld. Tudo isso tem que ser feito como raiz para sudo adequadamente.

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

Ativar SELinux modificando /etc/sysconfig/selinux ser

SELINUX=enforcingSELINUXTYPE=targeted

Em seguida, reinicie sua instância emitindo shutdown -r now

Execucao sudo docker version deve render a partir do momento desta postagem...

Cliente: Versão: 18.03.0-CE versão da API: 1.37 versão Go: GO1.9.4 git commit: 0520e24 construído: qua 21 de Março 23:09:15 2018 OS/Arch: linux/amd64 Experimental: false Orchestrator: swarmServer: Engine: Version: 18.03.0-ce versão da API: 1.37 (versão mínima 1.12) versão Go: GO1.9.4 git commit: 0520e24 construído: Qua Mar 21 23:13:03 2018 os/Arch: Linux/amd64 experimental: false

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

O atual Ami otimizado para Amazon ECS (amzn-ami-2017.09.J-amazon-ECS-optimized) consiste em:

  • A versão mínima mais recente do Amazon Linux AMI
  • A versão mais recente do Amazon ECS container agent (1.17.2)
  • A versão recomendada do Docker para o agente de contêiner mais recente do Amazon ECS (17.12.0-ce)
  • A versão mais recente do pacote ecs-init para executar e monitorar o agente do Amazon ECS (1.17.2-1)

Você pode ver a história em https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html

Além da minha resposta anterior. Se você usar o Terraform, também criei um módulo Terraform que pode ser usado para criar um enxame do Docker

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

A diferença entre a abordagem que fiz anteriormente e a abordagem que sou actualmente fazer com o módulo terraform é utilizar os pacotes Docker fornecidos pela AWS. Isso não inclui o docker-compose completo e o que não, 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 jogar catch up para container-selinux.

A única dependência externa que eu uso é EPEL para ter haveged 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 é padronizada na imagem AMI.

Você leu a documentação da AWS sobre como instalar o Docker standard? Em caso afirmativo, que parte dela não funcionou ou quais problemas ela não abordou? Creating a container image for use on Amazon ECS - Amazon Elastic Container Service

Suponho que a Amazon irá atualizá-lo quando eles chegarem a ele. Embora você saiba, é claro, que ninguém deveria usar o Amazon Linux para nada.

A questão é se posso continuar a fazê-lo assim. Como já mencionado, ele me instalará Docker versionado em 1.12, que já é uma, senão mais, atualizações de versão menores por trás da versão estável mais recente (1.13, antes de CE / EE) e me pergunto se isso se deve ao atraso usual da atualização do repositório ou porque o guia e o pacote simplesmente estão desatualizados, o que requer algum trabalho de substituição feito por mim (por exemplo, de alguma forma, obtendo Docker de seu próprio repositório?). Também sobre o último anúncio EE que pode mudar alguma coisa…

Correndo o que AMI?

@ MichaelHampton o mais recente para HVM, Amazon Linux AMI 2016.09.1.

Se essa é a verdadeira solução para este problema, isso me deixa um pouco triste. No entanto, obrigado pela dica, ainda não tive muita experiência com o EC2 para chegar a essa conclusão sozinho. Eu sempre pensei que é o melhor usar AMI porque (deveria ser) é a imagem mais atualizada e adaptada em relação à virtualização EC2.

Os pacotes são todos atualizados, o kernel. No entanto, acho o Ubuntu muito mais fácil para instalação de software e suporte geral, existem poucos recursos do Amazon Linux, então as coisas difíceis são ainda mais difíceis.

@ MichaelHampton o Amazon Linux é bom para o uso do ECS. É pré-configurado para uso ECS, e o sistema operacional subjacente não importa muito nesse caso.

@ MichaelHampton, ‘ninguém deveria usar o Amazon Linux para nada’ então, o que você propõe então, Senhor?