AMI를 사용하여 AWS EC2 인스턴스에 Docker를 설치하는 방법 (CE / EE 업데이트)


28

AMI를 실행하는 AWS EC2 인스턴스에 Docker를 설치하는 현재 방법은 무엇입니까? Docker Enterprise Edition대한 발표 가 있었으며 이제 변경 사항이 있는지 알고 싶습니다. 지금까지, 나는 yum install dockerDocker 버전을 사용 하고 1.12.6, build 7392c3b/1.12.6있었고 지금 (2017/3/3) 버전을 얻었습니다. 그러나 GitHub의 Docker 저장소 는 이미 최신 릴리스가 있음을 알려줍니다.

나는 공식 도커 (패키지) 저장소라는 이름의 패키지 가진 기억 docker-engine대체 docker얼마 전에 지금 그들이에 패키지를 분할하는 것 docker-cedocker-ee예를 들어, 여기서 "도커 커뮤니티 에디션 (도커 CE)가 레드햇 엔터프라이즈 리눅스에서 지원되지 않습니다." [ 출처 ]

AMI를 실행하는 EC2 인스턴스에서 최신 안정적인 Docker 버전을 얻으려면 위의 내용을 사용하는 것이 맞습니까? 아니면 다른 곳에서 패키지를 가져와야합니까 (그렇다면 CE 또는 EE 중 하나)?


2
Docker 표준을 설치하는 방법에 대한 AWS 설명서를 읽었습니까? 그렇다면 어떤 부분이 작동하지 않거나 어떤 문제가 해결되지 않았습니까? docs.aws.amazon.com/AmazonECS/latest/developerguide/…
Tim

문제는 내가 계속 이렇게 할 수 있는지입니다. 이미 언급했듯이 1.12 버전의 Docker를 설치합니다.이 최신 안정 릴리스 (CE / EE 이전 1.13) 이후의 사소한 버전 업데이트가 아니라면 일반적인 저장소 업데이트 지연 때문인지 궁금합니다. 가이드와 패키지는 단순히 구식이기 때문에 교체 작업이 필요합니다 (예 : Docker를 자체 저장소에서 가져 오는 방법). 또한 변경 될 수있는 최신 EE 발표와 관련하여
mxscho

어떤 AMI를 실행합니까?
Michael Hampton

@MichaelHampton HVM, Amazon Linux AMI 2016.09.1의 최신 제품.
mxscho

1
아마존이 돌아 다닐 때 업데이트한다고 가정합니다. 물론 아무도 Amazon Linux를 사용해서는 안된다는 것을 알고 있습니다.
Michael Hampton

답변:


44

Docker를 AWS AMI에서 실행하려면 아래 단계를 따라야합니다 (이것은 모두 EC2 인스턴스로 전환했다고 가정합니다).

  1. 인스턴스에서 패키지 업데이트

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

  2. Docker 설치

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

  3. 도커 서비스 시작

    [ec2-user ~]$ sudo service docker start

  4. sudo를 사용하지 않고 Docker 명령을 실행할 수 있도록 ec2-user를 docker 그룹에 추가하십시오.

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

그런 다음을 요구하지 않고 모든 docker 명령을 실행할 수 있습니다 sudo. 네 번째 명령을 실행 한 후 변경 사항을 적용하려면 로그 아웃했다가 다시 로그인해야했습니다.


3
내가 이미 질문에서 언급했듯이, 이것은 실제로 작동하지만 오래된 버전의 Docker (여전히 버전 1.12.6에서 05/28/2017)를 설치합니다. EC2 인스턴스의 Ubuntu 이미지로 직접 전환했지만 실제로 알고 싶은 것은 현재 버전의 Docker 중 하나를 AMI 이미지에 설치하는 방법입니다. (최소한 질문 시점에) 최신 Docker CE 또는 Docker EE 설치를 얻는 확실한 방법이 없었기 때문입니다. 그것이 바로이 질문에 관한 것이 었습니다. 이것이 주저없이 받아 들일 수없는 이유입니다. 어쨌든 감사합니다!
mxscho 2016 년

@mxscho 예, 그것이 제가 찾고있는 것이므로 질문에 대한 답변이 게시 될 때까지 기다리십시오.
user239558

1
오늘 yum 설치는 17.03.1ce-1.50.amzn1을 설치합니다
raarts

1
나를 위해 일하지 않았다. 그래서 나는 이것을해야했습니다. sudo yum install yum-utils, sudo yum-config-manager --rhui-REGION-rhel-server-extras 활성화, sudo yum 설치 도커
TheAshwaniK

5

이 모든 것을 알아내는 데 가장 어려운 부분은 컨테이너-리눅스 요구 사항이었습니다. http://mirror.centos.org/centos/7/extras/x86_64/Packages/ 에서 최신 버전을 찾아서 먼저 설치 하십시오 . 또한 EC2 인스턴스에는 적절한 엔트로피 생성기가 없을 haveged수 있으므로 설치해야합니다.

나머지는 https://docs.docker.com/install/linux/docker-ce/centos/ 에서 가져 왔으며 방화벽과 방화벽이 추가되었습니다. 이 모든 것은 루트로 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

다음과 같이 수정 /etc/sysconfig/selinux하여 SELinux사용으로 설정하십시오.

SELINUX=enforcing
SELINUXTYPE=targeted

그런 다음 발행하여 인스턴스를 재부팅하십시오. shutdown -r now

sudo docker version이 게시 시점을 기준으로 집행 은 양보해야합니다 ...

고객:
 버전 : 18.03.0-ce
 API 버전 : 1.37
 이동 버전 : go1.9.4
 힘내 커밋 : 0520e24
 건축 : 수 3 월 21 23:09:15 2018
 OS / 아치 : linux / amd64
 실험 : 거짓
 오케 스트레이터 : 떼

섬기는 사람:
 엔진:
  버전 : 18.03.0-ce
  API 버전 : 1.37 (최소 버전 1.12)
  이동 버전 : go1.9.4
  힘내 커밋 : 0520e24
  건축 : 수 3 월 21 23:13:03 2018
  OS / 아치 : linux / amd64
  실험 : 거짓

1
CentOS를 제외한 다른 AMI에서 Docker를 실행 해 보셨습니까? 당신의 경험을 공유 할 수 있습니까?
Suncatcher

1
AMI Linux 2를 사용한 centos Ami를 사용하지 않았습니다. Linux 1이 너무 오래되었습니다.
Archimedes Trajano

1
알았어 사용한 CentOS repos는 Amazon AMI와 완전히 호환됩니까?
Suncatcher

Vagrant를 사용하여 개발을 위해 Centos VM을 사용하는 것만으로도 누락 된 패키지로 작동하도록 스크립트를 조정해야했습니다.
Archimedes Trajano

1
간단한 편집증
Archimedes Trajano

2

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

현재 Amazon ECS 최적화 AMI (amzn-ami-2017.09.j-amazon-ecs-optimized)는 다음으로 구성됩니다.

  • Amazon Linux AMI의 최신 최소 버전
  • 최신 버전의 Amazon ECS 컨테이너 에이전트 (1.17.2)
  • 최신 Amazon ECS 컨테이너 에이전트 (17.12.0-ce)에 권장되는 Docker 버전
  • Amazon ECS 에이전트 (1.17.2-1)를 실행하고 모니터링하는 최신 버전의 ecs-init 패키지

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html 에서 기록을 볼 수 있습니다.


0

내 이전 답변 외에도. Terraform을 사용하는 경우 Docker Swarm을 만드는 데 사용할 수있는 Terraform 모듈도 만들었습니다.

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

이전에 수행 한 접근 방식 과 현재 terraform 모듈로 수행하는 접근 방식의 차이점 은 AWS 제공 Docker 패키지를 활용하는 것입니다. 여기에는 전체 docker-compose와 그렇지 않은 것이 포함되어 있지 않지만 일반적으로 서버에서 해당 패키지가 필요하지 않습니다.

아마존이 제공 한 제품을 사용하고 있기 때문에 더 이상 최신 18.09 버전이 아니라 18.06 버전입니다. 그러나 설정이 간단하고 container-selinux를 따라 잡을 필요가 없습니다.

내가 사용하는 유일한 외부 종속성은 EPEL입니다. 일부 응용 프로그램에는 여전히 좋은 임의 소스가 필요하기 때문에 서두르십시오.

또한 방화벽을 명시 적으로 설정하는 대신 AWS 보안 그룹에 의존했으며 AMI 이미지에서 기본으로 설정된 SELinux 설정을 사용했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.