Come installare Docker sull'istanza di AWS EC2 con AMI (aggiornamento CE / EE)


28

Qual è il modo attuale di installare Docker su un'istanza AWS EC2 che esegue l'AMI? C'è stato un annuncio di Docker Enterprise Edition e ora voglio sapere se qualcosa è cambiato. Fino ad ora, ho usato yum install dockere ricevo una versione Docker in 1.12.6, build 7392c3b/1.12.6questo momento (03/03/2017). Tuttavia, il repository Docker su GitHub mi dice che ci sono già versioni più recenti.

Ricordo che il repository Docker (pacchetto) ufficiale aveva un pacchetto chiamato che docker-enginesostituiva dockerqualche tempo fa e ora sembrano dividere il pacchetto in , docker-cee docker-eedove ad esempio "Docker Community Edition (Docker CE) non è supportato su Red Hat Enterprise Linux". [ Fonte ]

Quindi è o sarà ancora corretto utilizzare quanto sopra per ottenere l'ultima versione stabile di Docker su istanze EC2 che eseguono l'AMI o devo estrarre il pacchetto da qualche altra parte (e in tal caso quale, CE o EE)?


2
Hai letto la documentazione di AWS su come installare lo standard Docker? In tal caso, quale parte non ha funzionato o quali problemi non ha risolto? docs.aws.amazon.com/AmazonECS/latest/developerguide/…
Tim

La domanda è se posso continuare a farlo in questo modo. Come già accennato, mi installerò Docker con versione 1.12 che è già uno se non più aggiornamenti di versione minori dietro l'ultima versione stabile (1.13, prima di CE / EE) e mi chiedo se ciò sia dovuto al solito ritardo di aggiornamento del repository o perché la guida e il pacchetto sono semplicemente obsoleti, il che richiede un lavoro di sostituzione da parte mia (ad esempio, in qualche modo ottenere Docker dal proprio repository?). Anche riguardo all'ultimo annuncio EE che potrebbe cambiare qualcosa ...
mxscho

In esecuzione quale AMI?
Michael Hampton

@MichaelHampton l'ultimo per HVM, Amazon Linux AMI 2016.09.1.
mxscho,

1
Suppongo che Amazon lo aggiornerà quando ci riusciranno. Sebbene tu sappia ovviamente che nessuno dovrebbe usare Amazon Linux per niente.
Michael Hampton

Risposte:


44

Per far funzionare Docker sull'AMI AWS è necessario seguire i passaggi seguenti (si presume che tu abbia eseguito l'accesso all'istanza EC2).

  1. Aggiorna i pacchetti sulla tua istanza

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

  2. Installa Docker

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

  3. Avviare il servizio Docker

    [ec2-user ~]$ sudo service docker start

  4. Aggiungi l'utente ec2 al gruppo docker in modo da poter eseguire i comandi Docker senza usare sudo.

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

Dovresti quindi essere in grado di eseguire tutti i comandi della finestra mobile senza richiedere sudo. Dopo aver eseguito il 4 ° comando, è stato necessario disconnettersi e riconnettersi per rendere effettiva la modifica.


3
Come ho già detto nella domanda, questo funziona davvero, ma installa una versione obsoleta di Docker (ancora la versione 1.12.6 del 28/05/2017). Mentre io stesso sono passato all'immagine Ubuntu per le mie istanze EC2, la cosa reale che volevo sapere è come installare una delle versioni attuali di Docker su un'immagine AMI. Perché non esisteva (almeno al momento della domanda) un modo ovvio per ottenere una Docker CE aggiornata o un'installazione Docker EE. Questo è in primo luogo questa domanda e questa è la ragione per cui non posso accettarla senza esitazione. Grazie lo stesso!
mxscho,

@mxscho sì, è anche quello che sto cercando, quindi per favore aspetta fino a quando non viene pubblicata una risposta che risponde alla domanda.
user239558

1
Oggi yum install installa 17.03.1ce-1.50.amzn1
inizia il

1
Non ha funzionato per me. Quindi dovevo farlo. sudo yum installa yum-utils, quindi sudo yum-config-manager - abilita rhui-REGION-rhel-server-extra, e poi sudo yum installa
docker

5

La parte più difficile da capire è stato il requisito container-selinux. Trova l'ultima versione in http://mirror.centos.org/centos/7/extras/x86_64/Packages/ e installala prima. Inoltre, le istanze EC2 potrebbero non disporre di un generatore di entropia adeguato, pertanto havegedpotrebbe essere necessario installarlo.

Il resto è tratto da https://docs.docker.com/install/linux/docker-ce/centos/ con l'aggiunta di hasged e firewalld. Tutti questi devono essere fatti come root in modo sudoappropriato.

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

Abilita SELinux modificando /etc/sysconfig/selinuxessere

SELINUX=enforcing
SELINUXTYPE=targeted

Quindi riavviare l'istanza emettendo shutdown -r now

L'esecuzione sudo docker versiondovrebbe dare luogo al momento della pubblicazione ...

Cliente:
 Versione: 18.03.0-ce
 Versione API: 1.37
 Vai versione: go1.9.4
 Git commit: 0520e24
 Costruito: mer 21 marzo 23:09:15 2018
 OS / Arch: linux / amd64
 Sperimentale: falso
 Orchestratore: sciame

Server:
 Motore:
  Versione: 18.03.0-ce
  Versione API: 1.37 (versione minima 1.12)
  Vai versione: go1.9.4
  Git commit: 0520e24
  Costruito: mer 21 marzo 23:13:03 2018
  OS / Arch: linux / amd64
  Sperimentale: falso

1
Hai provato a eseguire Docker su altre AMI tranne CentOS? Puoi condividere le tue esperienze?
Suncatcher

1
Non ho usato il centos Ami, ho usato AMI Linux 2. Linux 1 è troppo vecchio.
Archimede Trajano,

1
Ok capito. I repository CentOS utilizzati sono completamente compatibili con Amazon AMI?
Suncatcher,

Bene, uso le VM Centos per lo sviluppo usando Vagrant, ho dovuto adattare i miei script in modo che funzionasse con i pacchetti mancanti.
Archimede Trajano,

1
Paranoia semplice
Archimede Trajano

2

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

L'attuale AMI Amazon ottimizzato ECS (amzn-ami-2017.09.j-amazon-ecs-ottimizzato) è costituito da:

  • L'ultima versione minima dell'AMI Amazon Linux
  • L'ultima versione dell'agente container Amazon ECS (1.17.2)
  • La versione consigliata di Docker per l'ultimo agente container Amazon ECS (17.12.0-ce)
  • L'ultima versione del pacchetto ecs-init per eseguire e monitorare l'agente Amazon ECS (1.17.2-1)

Puoi vedere la cronologia su https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html


0

Oltre alla mia risposta precedente. Se usi Terraform, ho anche creato un modulo Terraform che può essere usato per creare un Docker Swarm

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

La differenza tra l'approccio che avevo fatto in precedenza e l'approccio che sto attualmente facendo con il modulo terraform è di utilizzare i pacchetti Docker forniti da AWS. Questo non include l'intero docker-compose e cosa no, ma non sono richiesti quei pacchetti normalmente in un server.

Poiché sto usando quello fornito da Amazon, non è più l'ultima versione del 18.09, ma la versione del 18.06. Tuttavia, l'installazione è più semplice e non devo giocare a container-selinux.

L'unica dipendenza esterna che uso è EPEL per essere seccato perché hai ancora bisogno di una buona fonte casuale per alcune applicazioni.

Ho anche fatto affidamento sui gruppi di sicurezza AWS piuttosto che impostare esplicitamente firewalld e ho usato l'impostazione SELinux predefinita nell'immagine AMI.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.