Cách cài đặt Docker trên phiên bản AWS EC2 với AMI (Cập nhật CE / EE)


28

Cách hiện tại để cài đặt Docker trên phiên bản AWS EC2 chạy AMI là gì? Đã có một thông báo về Docker Enterprise Edition và bây giờ tôi muốn biết liệu có gì thay đổi không. Cho đến bây giờ, tôi đã sử dụng yum install dockervà nhận được một phiên bản Docker 1.12.6, build 7392c3b/1.12.6ngay bây giờ (3/3/2017). Tuy nhiên, kho Docker trên GitHub cho tôi biết rằng đã có bản phát hành mới hơn.

Tôi nhớ kho lưu trữ Docker (gói) chính thức có một gói được đặt tên docker-enginethay thế dockermột thời gian trước đây và bây giờ họ dường như chia gói thành docker-cedocker-ee, ví dụ: "Docker Community Edition (Docker CE) không được hỗ trợ trên Red Hat Enterprise Linux." [ Nguồn ]

Vì vậy, liệu có đúng hay không khi sử dụng phiên bản trên để có phiên bản Docker ổn định mới nhất trên các phiên bản EC2 chạy AMI hoặc tôi có cần phải kéo gói từ một nơi khác (và nếu vậy, CE hay EE)?


2
Bạn đã đọc tài liệu AWS về cách cài đặt tiêu chuẩn Docker chưa? Nếu vậy phần nào của nó không hoạt động, hoặc vấn đề gì đã không giải quyết? docs.aws.amazon.com/AmazonECS/latest/developerguide/ory
Tim

Câu hỏi là liệu tôi có thể tiếp tục làm điều đó như thế này không. Như đã đề cập, nó sẽ cài đặt cho tôi Docker phiên bản 1.12, đây là bản cập nhật nhỏ hơn phiên bản ổn định mới nhất (1.13, trước CE / EE) và tôi tự hỏi liệu đây có phải là do sự chậm trễ cập nhật kho lưu trữ thông thường hay không hướng dẫn và gói chỉ đơn giản là lỗi thời đòi hỏi một số công việc thay thế được thực hiện bởi tôi (ví dụ: bằng cách nào đó lấy Docker từ kho lưu trữ của riêng họ?). Cũng liên quan đến thông báo EE mới nhất có thể thay đổi điều gì đó ...
mxscho

Chạy AMI gì?
Michael Hampton

@MichaelHampton phiên bản mới nhất cho HVM, Amazon Linux AMI 2016.09.1.
mxscho

1
Tôi cho rằng Amazon sẽ cập nhật nó khi họ tiếp cận nó. Mặc dù bạn biết tất nhiên rằng không ai nên sử dụng Amazon Linux cho bất cứ điều gì.
Michael Hampton

Câu trả lời:


44

Để có được Docker chạy trên AWS AMI, bạn nên làm theo các bước dưới đây (tất cả đều giả sử bạn đã sử dụng ví dụ EC2).

  1. Cập nhật các gói trên ví dụ của bạn

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

  2. Cài đặt Docker

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

  3. Bắt đầu dịch vụ Docker

    [ec2-user ~]$ sudo service docker start

  4. Thêm người dùng ec2 vào nhóm docker để bạn có thể thực thi các lệnh Docker mà không cần sử dụng sudo.

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

Sau đó, bạn có thể chạy tất cả các lệnh docker mà không cần sudo. Sau khi chạy lệnh thứ 4, tôi cần phải đăng xuất và đăng nhập lại để thay đổi có hiệu lực.


3
Giống như tôi đã đề cập trong câu hỏi, điều này thực sự hoạt động, nhưng cài đặt một phiên bản Docker đã lỗi thời (vẫn là phiên bản 1.12.6 vào ngày 28/05/2017). Mặc dù bản thân tôi đã chuyển sang hình ảnh Ubuntu cho các phiên bản EC2 của mình, nhưng điều thực sự tôi muốn biết là làm thế nào để cài đặt một trong các phiên bản hiện tại của Docker trên hình ảnh AMI. Bởi vì ở đó (ít nhất là tại thời điểm của câu hỏi) không có cách rõ ràng nào để có được bản cài đặt Docker CE cập nhật hoặc bản cài đặt Docker EE. Đó là những gì câu hỏi này đã có ở nơi đầu tiên và đó là lý do tại sao tôi không thể chấp nhận nó mà không do dự. Dù sao cũng cảm ơn bạn!
mxscho

@mxscho vâng đó cũng là điều tôi đang tìm kiếm, vì vậy vui lòng đợi cho đến khi câu trả lời giải quyết câu hỏi được đăng.
user239558

1
Hôm nay yum cài đặt cài đặt 17.03.1ce-1.50.amzn1
raarts

1
Không làm việc cho tôi. Vì vậy, tôi cần phải làm điều này. sudo yum install yum-utils, và sau đó sudo yum-config-manager enable rhui-REGION-RHEL-server-extras, và sau đó sudo yum install Docker
TheAshwaniK

5

Phần khó nhất để tìm ra tất cả những điều này là yêu cầu container-selinux. Chỉ cần tìm phiên bản mới nhất trong http://mirror.centos.org/centos/7/extras/x86_64/Packages/ và cài đặt phiên bản đó trước. Ngoài ra, các phiên bản EC2 có thể không có trình tạo entropy thích hợp nên havegedcó thể cần phải được cài đặt.

Phần còn lại được lấy từ https://docs.docker.com/install/linux/docker-ce/centos/ với việc bổ sung hasged và tường lửa. Tất cả những điều này phải được thực hiện như root một sudocách thích hợp.

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

Kích hoạt SELinux bằng cách sửa đổi /etc/sysconfig/selinuxthành

SELINUX=enforcing
SELINUXTYPE=targeted

Sau đó khởi động lại cá thể của bạn bằng cách phát hành shutdown -r now

Việc thực hiện sudo docker versionsẽ mang lại tính đến thời điểm đăng bài này ...

Khách hàng:
 Phiên bản: 18.03.0-ce
 Phiên bản API: 1.37
 Phiên bản đi: go1.9.4
 Cam kết Git: 0520e24
 Được xây dựng: Thứ tư 21 tháng 3 23:09:15 2018
 Hệ điều hành / Arch: linux / amd64
 Thử nghiệm: sai
 Dàn nhạc: bầy đàn

Máy chủ:
 Động cơ:
  Phiên bản: 18.03.0-ce
  Phiên bản API: 1.37 (phiên bản tối thiểu 1.12)
  Phiên bản đi: go1.9.4
  Cam kết Git: 0520e24
  Được xây dựng: Thứ tư ngày 21 tháng 3 23:13:03 2018
  Hệ điều hành / Arch: linux / amd64
  Thử nghiệm: sai

1
Bạn đã thử chạy Docker trên bất kỳ AMI nào khác ngoại trừ CentOS chưa? Bạn có thể chia sẻ kinh nghiệm của bạn?
Suncatcher

1
Tôi đã không sử dụng centos Ami Tôi đã sử dụng AMI Linux 2. Linux 1 quá cũ.
Archimedes Trajano

1
OK đã nhận nó. Các repos CentOS bạn đã sử dụng có tương thích hoàn toàn với Amazon AMI không?
Suncatcher

Tôi phải sử dụng máy ảo Centos để phát triển bằng Vagrant, tôi chỉ phải điều chỉnh các tập lệnh của mình để nó hoạt động với các gói bị thiếu.
Archimedes Trajano

1
Chứng hoang tưởng đơn giản
Archimedes Trajano

2

Mỗi https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html

AMI được tối ưu hóa hiện tại của Amazon ECS (amzn-ami-2017.09.j-amazon-ecs được tối ưu hóa) bao gồm:

  • Phiên bản tối thiểu mới nhất của Amazon Linux AMI
  • Phiên bản mới nhất của đại lý container Amazon ECS (1.17.2)
  • Phiên bản được đề xuất của Docker cho đại lý container Amazon ECS mới nhất (17.12.0-ce)
  • Phiên bản mới nhất của gói ecs-init để chạy và giám sát đại lý Amazon ECS (1.17.2-1)

Bạn có thể xem lịch sử tại https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html


0

Ngoài câu trả lời trước của tôi. Nếu bạn sử dụng Terraform, tôi cũng đã tạo một mô-đun Terraform có thể được sử dụng để tạo Docker Swarm

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

Sự khác biệt giữa cách tiếp cận tôi đã thực hiện trước đây so với cách tiếp cận hiện tại tôi đang làm với mô-đun terraform là sử dụng các gói Docker do AWS cung cấp. Điều này không bao gồm toàn bộ docker-compose và những gì không, nhưng bạn không yêu cầu các gói đó bình thường trong một máy chủ.

Bởi vì tôi đang sử dụng cái mà Amazon đã cung cấp, nó không còn là phiên bản 18,09 mới nhất mà là phiên bản 18,06. Tuy nhiên, việc thiết lập đơn giản hơn và tôi không phải chơi đuổi kịp container-selinux.

Sự phụ thuộc bên ngoài duy nhất tôi sử dụng là EPEL để có được bởi vì bạn vẫn cần một nguồn ngẫu nhiên tốt cho một số ứng dụng.

Tôi cũng dựa vào các nhóm bảo mật AWS thay vì thiết lập tường lửa một cách rõ ràng và sử dụng cài đặt SELinux được mặc định trong hình ảnh AMI.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.