Jak zainstalować Docker na instancji AWS EC2 z AMI (aktualizacja CE / EE)


28

Jaki jest obecny sposób instalowania Dockera na instancji AWS EC2 z uruchomionym interfejsem AMI? Nastąpił zapowiedź Docker Enterprise Edition i teraz chcę wiedzieć, czy coś się zmieniło. Do tej pory korzystałem z Dockera yum install dockerw wersji 1.12.6, build 7392c3b/1.12.6teraz (3/3/2017). Jednak repozytorium Docker na GitHub mówi mi, że są już nowsze wersje.

Pamiętam, że oficjalne repozytorium Dockera (pakietu) miało jakiś pakiet docker-enginezastępujący dockerjakiś czas temu, a teraz wydaje się, że dzielą pakiet na, docker-cei docker-eegdzie np. „Docker Community Edition (Docker CE) nie jest obsługiwany w systemie Red Hat Enterprise Linux”. [ Źródło ]

Więc czy jest nadal poprawne użycie powyższego, aby uzyskać najnowszą stabilną wersję Dockera w instancjach EC2 z uruchomionym AMI, czy też muszę pobrać pakiet z innego miejsca (a jeśli tak, to który, CE lub EE)?


2
Czy przeczytałeś dokumentację AWS na temat instalacji standardu Docker? Jeśli tak, to która część nie zadziałała lub jakie problemy nie rozwiązały? docs.aws.amazon.com/AmazonECS/latest/developerguide/…
Tim

Pytanie brzmi, czy mogę to nadal robić w ten sposób. Jak już wspomniano, zainstaluje mnie Docker w wersji 1.12, który jest już jedną, jeśli nie mniejszą aktualizacją wersji za najnowszą stabilną wersją (1.13, przed CE / EE) i zastanawiam się, czy jest to spowodowane zwykłym opóźnieniem aktualizacji repozytorium, czy dlatego, że przewodnik i pakiet są po prostu nieaktualne, co wymaga pewnej pracy zastępczej wykonanej przeze mnie (np. jakoś pobrać Docker z własnego repozytorium?). Także w odniesieniu do ostatniego ogłoszenia EE, które może coś zmienić ...
mxscho,

Prowadzisz jaki AMI?
Michael Hampton

@MichaelHampton najnowszy dla HVM, Amazon Linux AMI 2016.09.1.
mxscho,

1
Podejrzewam, że Amazon zaktualizuje go, kiedy się do niego zabiorą. Chociaż wiesz oczywiście, że nikt nie powinien używać Amazon Linux do niczego.
Michael Hampton

Odpowiedzi:


44

Aby uruchomić Docker na AWS AMI, powinieneś wykonać poniższe kroki (wszystkie zakładają, że przełączyłeś się do instancji EC2).

  1. Zaktualizuj pakiety w swoim wystąpieniu

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

  2. Zainstaluj Docker

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

  3. Uruchom usługę Docker

    [ec2-user ~]$ sudo service docker start

  4. Dodaj użytkownika ec2 do grupy dokerów, aby móc wykonywać polecenia Docker bez użycia sudo.

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

Powinieneś być w stanie uruchomić wszystkie polecenia dokera bez konieczności sudo. Po uruchomieniu czwartego polecenia musiałem się wylogować i zalogować ponownie, aby zmiana zaczęła obowiązywać.


3
Jak już wspomniałem w pytaniu, to rzeczywiście działa, ale instaluje nieaktualną wersję Dockera (wciąż wersja 1.12.6 z 28.05.2017). Chociaż sam przełączyłem się na obraz Ubuntu dla moich instancji EC2, tak naprawdę chciałem wiedzieć, jak zainstalować jedną z bieżących wersji Dockera na obrazie AMI. Ponieważ nie było (przynajmniej w momencie pytania) oczywistego sposobu na uzyskanie aktualnej instalacji Docker CE lub Docker EE. Właśnie o to chodziło w tym pytaniu i dlatego nie mogę go przyjąć bez wahania. Mimo to dziękuję Ci!
mxscho

@mxscho tak, tego też szukam, więc poczekaj, aż pojawi się odpowiedź na pytanie.
user239558

1
Dzisiaj mniam instaluje instaluje 17.03.1ce-1.50.amzn1
raarts

1
Nie działało dla mnie. Więc musiałem to zrobić. sudo mniam zainstalować mniam-utils, a następnie sudo mniam-config-manager - włącza dodatki rhui-REGION-rhel-server-dodatków, a następnie sudo mniam instaluje
dokera

5

Najtrudniejszą częścią tego wszystkiego było wymóg pojemnik-selinux. Znajdź najnowszą wersję w http://mirror.centos.org/centos/7/extras/x86_64/Packages/ i zainstaluj ją najpierw. Ponadto instancje EC2 mogą nie mieć odpowiedniego generatora entropii, więc havegedmoże być konieczna instalacja.

Reszta pochodzi z https://docs.docker.com/install/linux/docker-ce/centos/ z dodatkiem haveged i firewalld. Wszystkie te muszą być wykonane jako root tak sudoodpowiednio.

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

Włącz SELinux , zmieniając /etc/sysconfig/selinuxgo na

SELINUX=enforcing
SELINUXTYPE=targeted

Następnie uruchom ponownie instancję, wydając shutdown -r now

Wykonanie sudo docker versionpowinno ustąpić w momencie publikacji ...

Klient:
 Wersja: 18.03.0-ce
 Wersja interfejsu API: 1.37
 Wersja Go: go1.9.4
 Git commit: 0520e24
 Zbudowany: śr. 21 marca 23:09:15 2018
 OS / Arch: linux / amd64
 Eksperymentalna: fałszywa
 Orchestrator: rój

Serwer:
 Silnik:
  Wersja: 18.03.0-ce
  Wersja API: 1.37 (wersja minimalna 1.12)
  Wersja Go: go1.9.4
  Git commit: 0520e24
  Zbudowany: śr. 21 marca 23:13:03 2018
  OS / Arch: linux / amd64
  Eksperymentalna: fałszywa

1
Czy próbowałeś uruchomić Docker na innych AMI oprócz CentOS? Czy możesz podzielić się swoimi doświadczeniami?
Suncatcher

1
Nie użyłem centos Ami. Użyłem AMI Linux 2. Linux 1 jest za stary.
Archimedes Trajano,

1
Ok, rozumiem. Czy używane repozytoria CentOS są w pełni kompatybilne z Amazon AMI?
Suncatcher

Tak, używam maszyn wirtualnych Centos do programowania przy użyciu Vagrant, musiałem tylko dostosować swoje skrypty, aby działały z brakującymi pakietami.
Archimedes Trajano,

1
Prosta paranoja
Archimedes Trajano

2

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

Obecny AMI zoptymalizowany pod kątem ECS Amazon (amzn-ami-2017.09.j-amazon-ecs-zoptymalizowany) składa się z:

  • Najnowsza minimalna wersja Amazon Linux AMI
  • Najnowsza wersja agenta kontenerowego Amazon ECS (1.17.2)
  • Zalecana wersja Dockera dla najnowszego agenta kontenerowego Amazon ECS (17.12.0-ce)
  • Najnowsza wersja pakietu ecs-init do uruchamiania i monitorowania agenta Amazon ECS (1.17.2-1)

Możesz zobaczyć historię na https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html


0

Oprócz mojej poprzedniej odpowiedzi. Jeśli używasz Terraform, stworzyłem również moduł Terraform, którego można użyć do stworzenia Docker Swarm

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

Różnica między podejściem, które wcześniej stosowałem, a podejściem, które obecnie stosuję z modułem terraform, polega na wykorzystaniu pakietów Docker dostarczonych przez AWS. Nie obejmuje to pełnej kompilacji dokerów, a co nie, ale nie potrzebujesz tych pakietów normalnie na serwerze.

Ponieważ używam tego, który dostarczyła Amazon, nie jest to już najnowsza wersja 18.09, ale wersja 18.06. Jednak konfiguracja jest prostsza i nie muszę grać w catch-to-container-selinux.

Jedyną zewnętrzną zależnością, której używam, jest EPEL, aby się upolować, ponieważ nadal potrzebujesz dobrego losowego źródła dla niektórych aplikacji.

Opierałem się również na grupach bezpieczeństwa AWS, zamiast jawnie konfigurować firewalld i użyłem ustawienia SELinux, które jest domyślnie ustawione w obrazie AMI.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.