วิธีติดตั้ง Docker บนอินสแตนซ์ AWS EC2 ด้วย AMI (อัพเดต CE / EE)


28

วิธีการติดตั้ง Docker บนอินสแตนซ์ AWS EC2 ปัจจุบันที่รัน AMI คืออะไร มีการประกาศ Docker Enterprise Editionและตอนนี้ฉันต้องการทราบว่ามีอะไรเปลี่ยนแปลงหรือไม่ จนถึงตอนนี้ฉันใช้งานมาyum install dockerแล้วและจะได้รับ Docker เวอร์ชันใน1.12.6, build 7392c3b/1.12.6ตอนนี้ (3/3/2017) อย่างไรก็ตามที่เก็บ Docker บน GitHubบอกฉันว่ามีรุ่นใหม่กว่าอยู่แล้ว

ฉันจำได้ว่าที่เก็บข้อมูล Docker (package) อย่างเป็นทางการที่มีชื่อแพคเกจdocker-engineมาแทนที่dockerเมื่อไม่นานมานี้และตอนนี้พวกเขาดูเหมือนจะแบ่งแพคเกจออกเป็นdocker-ceและdocker-eeที่เช่น "Docker Community Edition (Docker CE) ไม่รองรับ Red Hat Enterprise Linux" [ ที่มา ]

ดังนั้นหรือจะยังคงถูกต้องที่จะใช้ข้างต้นเพื่อรับเวอร์ชันล่าสุดของ Docker ที่เสถียรบนอินสแตนซ์ EC2 ที่รัน AMI หรือฉันจำเป็นต้องดึงแพคเกจจากที่อื่น (และถ้าเป็นอันใด CE หรือ EE)


2
คุณอ่านเอกสาร AWS เกี่ยวกับวิธีการติดตั้ง Docker มาตรฐานหรือไม่ ถ้าเป็นเช่นนั้นส่วนใดที่ใช้ไม่ได้หรือปัญหาไม่ได้แก้ไข docs.aws.amazon.com/AmazonECS/latest/developerguide/…
ทิม

คำถามคือฉันสามารถทำสิ่งนี้ต่อไปได้ไหม ดังที่ได้กล่าวไปแล้วมันจะทำการติดตั้ง Docker ฉันที่ 1.12 ซึ่งเป็นหนึ่งในนั้นถ้าไม่อัพเดทรุ่นรองมากกว่ารุ่นเสถียรล่าสุด (1.13 ก่อน CE / EE) และฉันสงสัยว่านี่เป็นเพราะความล่าช้าในการอัพเดทที่เก็บตามปกติหรือเพราะ คู่มือและแพคเกจนั้นล้าสมัยซึ่งต้องมีงานทดแทนที่ฉันทำ (เช่นเอา Docker ออกจากที่เก็บข้อมูลของตัวเอง) ยังเกี่ยวข้องกับการประกาศ EE ล่าสุดซึ่งอาจเปลี่ยนแปลงบางสิ่งบางอย่าง ...
mxscho

ใช้ AMI อะไร
Michael Hampton

@MichaelHampton ล่าสุดสำหรับ HVM, Amazon Linux AMI 2016.09.1
mxscho

1
ฉันคิดว่าอเมซอนจะอัปเดตเมื่อพวกเขาไปถึงที่นั่น แม้ว่าคุณจะรู้แน่นอนว่าไม่มีใครควรใช้ Amazon Linux เพื่อสิ่งใด
Michael Hampton

คำตอบ:


44

ในการทำให้ Docker ทำงานบน AWS AMI คุณควรทำตามขั้นตอนด้านล่าง

  1. อัพเดทแพ็คเกจบนอินสแตนซ์ของคุณ

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

  2. ติดตั้ง Docker

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

  3. เริ่มบริการนักเทียบท่า

    [ec2-user ~]$ sudo service docker start

  4. เพิ่มผู้ใช้ ec2 ไปยังกลุ่มนักเทียบท่าเพื่อให้คุณสามารถรันคำสั่งนักเทียบท่าได้โดยไม่ต้องใช้ sudo

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

sudoจากนั้นคุณควรจะสามารถเรียกใช้คำสั่งทั้งหมดที่นักเทียบท่าโดยไม่ต้อง หลังจากรันคำสั่งที่ 4 ฉันต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล


3
เช่นเดียวกับที่ฉันได้กล่าวถึงในคำถามนี้ใช้งานได้จริง แต่ติดตั้ง Docker รุ่นที่ล้าสมัย (ยังคงเป็นรุ่น 1.12.6 เมื่อวันที่ 05/28/2017) ในขณะที่ตัวฉันเองได้เปลี่ยนไปใช้อิมเมจ Ubuntu สำหรับอินสแตนซ์ EC2 ของฉันสิ่งที่จริงที่ฉันอยากรู้คือวิธีติดตั้ง Docker รุ่นปัจจุบันบนอิมเมจ AMI เนื่องจากมี (อย่างน้อยในเวลาของคำถาม) จึงไม่มีวิธีที่ชัดเจนในการรับ Docker CE ที่ทันสมัยหรือการติดตั้ง Docker EE นั่นคือสิ่งที่คำถามนี้เกี่ยวกับในตอนแรกและนั่นคือเหตุผลที่ฉันไม่สามารถยอมรับได้โดยไม่ลังเล ขอบคุณทุกคน!
mxscho

@mxscho ใช่นั่นคือสิ่งที่ฉันกำลังมองหาดังนั้นโปรดรอจนกว่าจะมีคำตอบที่ตอบคำถามนั้น
239558

1
วันนี้ยำติดตั้งติดตั้ง 17.03.1ce-1.50.amzn1
raarts

1
ไม่ได้ผลสำหรับฉัน ดังนั้นฉันต้องทำสิ่งนี้ sudo yum ติดตั้ง yum-utils แล้ว sudo yum-config-manager - เปิดใช้งาน rhui-region-rhel-server-extras และจากนั้น sudo yum ติดตั้ง
docker

5

ส่วนที่ยากที่สุดในการคำนวณทั้งหมดนี้คือข้อกำหนดของภาชนะบรรจุ selinux เพียงค้นหาเวอร์ชันล่าสุดในhttp://mirror.centos.org/centos/7/extras/x86_64/Packages/และติดตั้งก่อน นอกจากนี้ EC2 อินสแตนซ์อาจไม่มีตัวสร้างเอนโทรปีที่เหมาะสมดังนั้นhavegedอาจจำเป็นต้องติดตั้ง

ส่วนที่เหลือนำมาจากhttps://docs.docker.com/install/linux/docker-ce/centos/ด้วยการเพิ่มของ hasged และ firewalld สิ่งเหล่านี้จะต้องถูกทำให้เป็นรากอย่างsudoเหมาะสม

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โดยแก้ไข /etc/sysconfig/selinuxเป็น

SELINUX=enforcing
SELINUXTYPE=targeted

จากนั้นรีบูตอินสแตนซ์ของคุณโดยการออก shutdown -r now

การดำเนินการsudo docker versionควรให้ผล ณ เวลาที่โพสต์นี้ ...

ลูกค้า:
 รุ่น: 18.03.0-ce
 รุ่น API: 1.37
 รุ่น Go: go1.9.4
 Git กระทำ: 0520e24
 สร้าง: พุธ 21 มีนาคม 23:09:15 2018
 ระบบปฏิบัติการ / Arch: linux / amd64
 ทดลอง: เท็จ
 Orchestrator: รุม

เซิร์ฟเวอร์:
 เครื่องยนต์:
  รุ่น: 18.03.0-ce
  รุ่น API: 1.37 (รุ่นขั้นต่ำ 1.12)
  รุ่น Go: go1.9.4
  Git กระทำ: 0520e24
  สร้าง: พุธ 21 มี.ค. , 23:13:03 2018
  ระบบปฏิบัติการ / Arch: linux / amd64
  ทดลอง: เท็จ

1
คุณลองใช้ Docker กับ AMIs อื่น ๆ ยกเว้น CentOS หรือไม่? คุณสามารถแบ่งปันประสบการณ์ของคุณ?
Suncatcher

1
ฉันไม่ได้ใช้ Centos Ami ฉันใช้ AMI Linux 2 Linux 1 เก่าเกินไป
Archimedes Trajano

1
ตกลงเข้าใจแล้ว CentOS repos ที่คุณใช้เข้ากันได้กับ Amazon AMI อย่างสมบูรณ์หรือไม่
Suncatcher

ถูกต้องฉันใช้ Centos VMs เพื่อการพัฒนาโดยใช้ Vagrant ฉันแค่ต้องปรับสคริปต์ของฉันเพื่อให้ทำงานได้กับแพ็คเกจที่ขาดหายไป
Archimedes Trajano

1
ความหวาดระแวงง่ายๆ
Archimedes Trajano

2

ต่อhttps://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html

AMI ที่ปรับปรุงโดย ECS ของ Amazon ในปัจจุบัน (amzn-ami-2017.09.j-amazon-ecs-optimization) ประกอบด้วย:

  • Amazon Linux AMI เวอร์ชันขั้นต่ำสุด
  • เอเจนต์คอนเทนเนอร์ Amazon ECS เวอร์ชันล่าสุด (1.17.2)
  • รุ่นที่แนะนำของ Docker สำหรับตัวแทนภาชนะ Amazon ECS ล่าสุด (17.12.0-ce)
  • เวอร์ชันล่าสุดของแพ็คเกจ ecs-init เพื่อเรียกใช้และตรวจสอบตัวแทน Amazon ECS (1.17.2-1)

คุณสามารถดูประวัติได้ที่https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html


0

นอกจากคำตอบก่อนหน้าของฉัน หากคุณใช้ Terraform ฉันได้สร้างโมดูล Terraform ที่สามารถใช้สร้าง Docker Swarm ได้

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

ความแตกต่างระหว่างวิธีการที่ฉันทำไปก่อนหน้านี้กับวิธีที่ฉันทำกับโมดูลพื้นผิวดินในปัจจุบันคือการใช้แพ็คเกจ Docker ของ AWS นี่ไม่รวมถึงนักเทียบท่าแบบเต็มและสิ่งใดที่ไม่ได้ แต่คุณไม่ต้องการแพ็คเกจเหล่านั้นตามปกติในเซิร์ฟเวอร์

เนื่องจากฉันใช้ Amazon ที่ให้มามันจึงไม่ใช่ 18.09 รุ่นล่าสุด แต่เป็นรุ่น 18.06 อีกต่อไป อย่างไรก็ตามการตั้งค่านั้นง่ายกว่าและฉันไม่ต้องเล่นให้ทันกับ container-selinux

การพึ่งพาภายนอกที่ฉันใช้เพียงอย่างเดียวคือ EPEL เพื่อให้ได้ผลเพราะคุณยังต้องการแหล่งสุ่มที่ดีสำหรับบางแอปพลิเคชัน

ฉันยังพึ่งพากลุ่มความปลอดภัย AWS แทนที่จะตั้งค่าไฟร์วอลล์อย่างชัดเจนและใช้การตั้งค่า SELinux ที่เป็นค่าเริ่มต้นในอิมเมจ AMI

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.