Docker'ı AWS EC2 örneğine AMI ile yükleme (CE / EE Güncellemesi)


28

Docker'ı AMI'yi çalıştıran bir AWS EC2 örneğine kurmanın şu anki yolu nedir? Olmuştur Docker Enterprise Edition'ın bir duyuru ve şimdi şey değişip değişmediğini bilmek istiyorum. Şimdiye kadar, yum install dockerşu 1.12.6, build 7392c3b/1.12.6anda sürümlendirilmiş bir Docker kullanıyorum ve alıyorum (3/3/2017). Ancak GitHub'daki Docker deposu , daha yeni sürümlerin bulunduğunu söylüyor.

Bir süre önce docker-enginedeğiştirmeyi adlı bir paketi olan resmi Docker (paket) deposunu hatırlıyorum dockerve şimdi paketi ikiye böldüler docker-ceve docker-eeörneğin "Red Hat Enterprise Linux'ta" Docker Community Edition (Docker CE) desteklenmiyor "gibi görünüyor. [ Kaynak ]

Öyleyse, AMI'yi çalıştıran EC2 örneklerinde en son kararlı Docker sürümünü almak için yukarıdakileri kullanmak doğru mu, yoksa paketi başka bir yerden (ve eğer öyleyse, CE veya EE) çekmek zorunda mıyım?


2
Docker standardının nasıl kurulacağına dair AWS belgelerini okudunuz mu? Eğer öyleyse, hangi kısmı işe yaramadı ya da hangi konuları ele almadı? docs.aws.amazon.com/AmazonECS/latest/developerguide/…
Tim

Soru, böyle yapmaya devam edip edemeyeceğim. Daha önce de belirtildiği gibi, en son kararlı sürümün arkasındaki (CE / EE öncesi 1.13) daha küçük sürüm güncellemeleri olmasa bile zaten bir tane olan 1.12 sürümünde Docker'ı yükleyeceğim ve bunun normal depo güncelleme gecikmesinden mi kaynaklandığını mı yoksa merak ediyorum. Kılavuz ve paket, modası geçmiş olan ve benim tarafımdan yapılan bir miktar değiştirme çalışmasını gerektiren (örneğin, bir şekilde Docker'ı kendi deposundan almak?). Ayrıca bir şeyleri değiştirebilecek son EE duyurusu ile ilgili ...
mxscho

Hangi AMI'yi çalıştırıyorsun?
Michael Hampton

@MichaelHampton, HVM, Amazon Linux AMI 2016.09.1 ​​için sonuncusu.
mxscho

1
Sanırım Amazon etraflarında olduklarında güncelleme yapacak. Elbette, hiç kimsenin bir şey için Amazon Linux kullanmaması gerektiğini biliyor olmanıza rağmen.
Michael Hampton

Yanıtlar:


44

Docker’ın AWS AMI’de çalışmasını sağlamak için aşağıdaki adımları izlemelisiniz (bunların hepsi EC2 örneğine bağlandığınızı varsaymaktadır).

  1. Örneğinizdeki paketleri güncelleyin

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

  2. Docker'ı yükleyin

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

  3. Docker Hizmeti'ni başlatın

    [ec2-user ~]$ sudo service docker start

  4. Ec2 kullanıcısını docker grubuna ekleyin, böylece Docker komutlarını sudo kullanmadan çalıştırabilirsiniz.

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

Daha sonra tüm docker komutlarını istemeden çalıştırabilmelisiniz sudo. 4. komutu çalıştırdıktan sonra, değişikliğin geçerli olması için oturumu kapatıp tekrar girmem gerekiyordu.


3
Daha önce de sorduğum gibi, bu gerçekten işe yarıyor, ancak Docker'ın eski bir sürümünü yüklüyor (hala 05/28/2017 tarihinde 1.12.6 sürümü). EC2 örnekleri için Ubuntu resmine geçsem de bilmek istediğim gerçek şey, Docker'ın geçerli sürümlerinden birinin AMI resmine nasıl yükleneceği. Çünkü (en azından soru sırasında) güncel bir Docker CE veya Docker EE yüklemesi almanın açık bir yolu yoktu. İlk önce bu sorunun konusu buydu ve tereddüt etmeden kabul edemememin nedeni bu. Yine de teşekkür ederim!
mxscho

@mxscho evet bu da aradığım şey, bu yüzden soruyu cevaplayana kadar lütfen bekleyin.
user239558

1
Bugün yum install yükler 17.03.1ce-1.50.amzn1
raarts

1
Benim için işe yaramadı. Bu yüzden bunu yapmam gerekiyordu. sudo yum yüklemek yum-utils, ve sonra sudo yum-config-yöneticisi - enable rhui-REGION-rhel-sunucu-ekstralar, ve sonra sudo yum yükleme docker
TheAshwaniK

5

Tüm bunları anlamanın en zor kısmı konteyner-selinux gereksinimi idi. En son sürümü http://mirror.centos.org/centos/7/extras/x86_64/Packages/ adresinde bulun ve ilk önce kurun. Ek olarak, EC2 örnekleri uygun bir entropi üretecine sahip olmayabilir, bu yüzden havegedkurulması gerekebilir.

Gerisi, hüzünlü ve firewalld ilavesi ile https://docs.docker.com/install/linux/docker-ce/centos/ adresinden alınmıştır . Bütün bunların köküne sudouygun şekilde yapılması gerekiyor .

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

SELinux'u etkinleştirme değiştirerek /etc/sysconfig/selinuxolmak

SELINUX=enforcing
SELINUXTYPE=targeted

Sonra da örneğinizi yayınlayarak yeniden başlatın shutdown -r now

Yürütme sudo docker version, bu ilanın zamanından itibaren verilmelidir ...

Müşteri:
 Sürüm: 18.03.0-ce
 API sürümü: 1.37
 Go sürümü: go1.9.4
 Git taahhüdü: 0520e24
 Yapılı: Çar 21 Mart 23:09:15 2018
 OS / Kemer: linux / amd64
 Deneysel: yanlış
 Orkestratör: sürüsü

Sunucu:
 Motor:
  Sürüm: 18.03.0-ce
  API sürümü: 1.37 (minimum sürüm 1.12)
  Go sürümü: go1.9.4
  Git taahhüdü: 0520e24
  Yapılı: Çar 21 Mart 23:13:03 2018
  OS / Kemer: linux / amd64
  Deneysel: yanlış

1
Docker’ı CentOS dışındaki diğer AMI’larda çalıştırmayı denediniz mi? Deneyimlerinizi paylaşır mısınız?
Suncatcher

1
Ami'leri kullanmamıştım Ami AMI Linux 2 kullandım. Linux 1 çok eski.
Arşimet Trajano

1
Tamam anladım. Amazon AMI ile tamamen uyumlu kullandığınız CentOS repoları mı?
Suncatcher

Doğru Centos VM'lerini Vagrant kullanarak geliştirme için kullanıyorum, sadece senaryolarımı eksik paketlerle çalışacak şekilde uyarlamam gerekiyordu.
Arşimet Trajano

1
Basit paranoya
Arşimet Trajano

2

Başına https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html

Mevcut Amazon ECS optimize edilmiş AMI (amzn-ami-2017.09.j-amazon-ecs-optimize edilmiş) şunlardan oluşur:

  • Amazon Linux AMI'nin en son minimal sürümü
  • Amazon ECS konteyner acentesinin en son versiyonu (1.17.2)
  • Amazon ECS konteyner acentesi (17.12.0-ce) için Docker'ın tavsiye edilen sürümü
  • Amazon ECS ajanı çalıştırmak ve izlemek için ecs-init paketinin en son sürümü (1.17.2-1)

Tarihi https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html adresinde görebilirsiniz.


0

Önceki cevabımı ek olarak. Terraform kullanıyorsanız, Docker Swarm oluşturmak için kullanılabilecek bir Terraform modülü de oluşturdum.

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

Daha önce yaptığım yaklaşımla şu anda terraform modülüyle yaptığım yaklaşım arasındaki fark , AWS tarafından sağlanan Docker paketlerini kullanmaktır. Bu tam docker-compose içeriyor ve ne içermiyor, ancak bu paketleri normalde bir sunucuda istemiyorsunuz.

Amazon'un sağladığı bir ürünü kullandığım için, artık en son 18.09 sürümü değil, 18.06 sürümü. Ancak, kurulum basittir ve container-selinux'a yetişmek zorunda değilim.

Kullandığım tek dış bağımlılık EPEL'dir, çünkü bazı uygulamalar için hala iyi bir rastgele kaynağa ihtiyacınız var.

Ayrıca açıkça güvenlik duvarı oluşturmak yerine AWS güvenlik gruplarına güveniyordum ve AMI görüntüsünde varsayılan olan SELinux ayarını kullandım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.