AMIを使用してAWS EC2インスタンスにDockerをインストールする方法(CE / EEアップデート)


28

AMIを実行しているAWS EC2インスタンスにDockerをインストールする現在の方法は何ですか?Docker Enterprise Editionの発表がありましたが、今、何か変更があったかどうかを知りたいです。今まで、私は使用yum install dockerしており、1.12.6, build 7392c3b/1.12.6現在(2017年3月3日)バージョン化されたDockerを取得しています。ただし、GitHubのDockerリポジトリには、より新しいリリースが既にあることが示されています。

私は公式ドッカー(パッケージ)という名前のパッケージ持つリポジトリ覚えてdocker-engine交換するdockerいくつかの時間前に、今、彼らはにパッケージを分割するように見えるのdocker-cedocker-ee、例えば「ドッカーコミュニティ版(ドッカーCEは)は、Red Hat Enterprise Linuxでサポートされていません。」[ ソース ]

上記を使用してAMIを実行しているEC2インスタンスで最新の安定したDockerバージョンを取得するのは正しいのでしょうか、それとも正しいのでしょうか?


2
Docker標準のインストール方法に関するAWSドキュメントを読みましたか?もしそうなら、それのどの部分が機能しなかったか、またはどの問題が対処しなかったのですか?docs.aws.amazon.com/AmazonECS/latest/developerguide / ...
ティム

問題は、このように続けられるかどうかです。すでに述べたように、最新の安定版リリース(1.13、CE / EEの前)の背後にマイナーバージョンの更新がない場合は既に1である1.12のバージョンのDockerをインストールします。これは通常のリポジトリ更新の遅延によるものか、ガイドとパッケージは単に時代遅れであり、私が何らかの交換作業を行う必要があります(たとえば、独自のリポジトリからDockerを取得するなど)。また、何かを変更する可能性のある最新のEEアナウンスメントについて...
mxscho

どのAMIを実行していますか?
マイケルハンプトン

@MichaelHampton最新のHVM、Amazon Linux AMI 2016.09.1。
mxscho

1
アマゾンは、彼らがそれに近づいたときにそれを更新すると思います。もちろん、誰もAmazon Linuxを使用してはならないことを知っています。
マイケルハンプトン

回答:


44

AWS AMIでDockerを実行するには、以下の手順に従う必要があります(これらはすべて、EC2インスタンスにsshしたことを前提としています)。

  1. インスタンスのパッケージを更新します

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

  2. Dockerをインストールする

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

  3. Dockerサービスを開始する

    [ec2-user ~]$ sudo service docker start

  4. sudoを使用せずにDockerコマンドを実行できるように、ec2-userをdockerグループに追加します。

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

これで、必要なくすべてのdockerコマンドを実行できるはずsudoです。4番目のコマンドを実行した後、変更を有効にするにはログアウトしてから再度ログインする必要がありました。


3
すでに質問で述べたように、これは実際に機能しますが、古いバージョンのDockerをインストールします(2017年5月28日、まだバージョン1.12.6)。私自身はEC2インスタンスのUbuntuイメージに切り替えましたが、知りたい本当のことは、AMIイメージにDockerの現在のバージョンの1つをインストールする方法です。(少なくとも質問の時点では)最新のDocker CEまたはDocker EEのインストールを取得する明確な方法がなかったからです。それがこの質問がそもそも約であったことであり、それが私がためらうことなくそれを受け入れることができない理由です。とにかくありがとう!
mxscho

@mxschoはい、それも私が探しているものですので、質問に答える回答が投稿されるまでお待ちください。
-user239558

1
今日、yum installは17.03.1ce-1.50.amzn1をインストールします
raarts

1
うまくいかなかった。だから私はこれをする必要がありました。sudo yumはyum-utilsをインストールし、次にsudo yum-config-manager --enable rhui-REGION-rhel-server-extras、そしてsudo yum install
docker

5

このすべてを理解するのが最も難しい部分は、container-selinuxの要件でした。http://mirror.centos.org/centos/7/extras/x86_64/Packages/で最新バージョンを見つけて、最初にインストールしてください。さらに、EC2インスタンスには適切なエントロピージェネレーターがないhaveged場合があるため、インストールが必要になる場合があります。

残りは、https: //docs.docker.com/install/linux/docker-ce/centos/ から取得し、havegedおよび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

変更/etc/sysconfig/selinuxしてSELinux有効にします

SELINUX=enforcing
SELINUXTYPE=targeted

次に、発行してインスタンスを再起動します shutdown -r now

実行sudo docker versionすると、この投稿の時点で成果が得られるはずです...

クライアント:
 バージョン:18.03.0-ce
 APIバージョン:1.37
 Goバージョン:go1.9.4
 Gitコミット:0520e24
 構築:2018年3月21日水曜日23:09:15 2018
 OS / Arch:linux / amd64
 実験的:false
 オーケストレーター:swarm

サーバ:
 エンジン:
  バージョン:18.03.0-ce
  APIバージョン:1.37(最小バージョン1.12)
  Goバージョン:go1.9.4
  Gitコミット:0520e24
  構築:2018年3月21日水曜日23:13:03 2018
  OS / Arch:linux / amd64
  実験的:false

1
CentOS以外のAMIでDockerを実行しようとしましたか?あなたの経験を共有できますか?
サンキャッチャー

1
私はAMI Linux 2を使用したcentos Amiを使用しませんでした。Linux1は古すぎます。
アルキメデストラハノ

1
はい、わかった。使用したCentOSリポジトリはAmazon AMIと完全に互換性がありますか?
サンキャッチャー

Vagrantを使用した開発にはCentos VMを使用します。不足しているパッケージで動作するようにスクリプトを調整する必要がありました。
アルキメデストラハノ

1
単純な妄想
アルキメデストラハノ

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とそうでないものは含まれませんが、通常はサーバーにこれらのパッケージは必要ありません。

Amazonが提供したものを使用しているため、最新の18.09バージョンではなく、18.06バージョンです。ただし、セットアップは簡単で、container-selinuxに追いつく必要はありません。

私が使用する唯一の外部依存関係は、いくつかのアプリケーションに適したランダムソースが必要なため、EPELだけです。

また、firewalldを明示的に設定するのではなく、AWSセキュリティグループに依存し、AMIイメージでデフォルト設定されているSELinux設定を使用しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.