正在 Amazon Linux AMI 上升级 Docker
Upgrading Docker on Amazon Linux AMI
我想在 Amazon Linux 上将 Docker 升级到 v1.8。
在撰写本文时,他们的内部 yum 包存储库有:Docker version 1.7.1, build 786b29d/1.7.1
。
我已经尝试过的东西
手动安装
Error: Package: docker-engine-1.8.2-1.el7.centos.x86_64 (dockerrepo)
Requires: systemd-units
我最终安装了 Amazon Linux docker
软件包,然后用来自 https://docs.docker.com/installation/binaries/.[=13 的 1.8.2 版本二进制文件覆盖了 /usr/bin/docker
二进制文件=]
不完全优雅 - 但所有依赖项都是相同的,并且由于我的 AMI 是不可变的,因此不会在当前映像之上升级包。
如果您使用的是 EC2 容器服务,AWS ECS-optimized AMI (2015.09.b) is running docker-1.7.1 as of this writing. A post in the AWS forums 声明“[AWS 正在] 测试 1.9 RC 并计划在本月交付。”
为了扩展 Hzmy 的回答,以下是在 SSH 会话中将 Docker 升级到 1.9.0 的方法:
service docker stop
cp /usr/bin/docker /usr/bin/docker.old
curl -o /usr/bin/docker https://get.docker.com/builds/Linux/x86_64/docker-1.9.0
service docker start
如果您使用的是 CloudFormation 模板,可以将这里的命令放入 AWS::Cloudformation::Init:
...
"commands": {
...,
"03_upgrade_docker_for_log_driver_support": {
"command": {
"Fn::Join": [
"",
[
"#!/bin/bash -xe\n",
"service docker stop\n",
"cp /usr/bin/docker /usr/bin/docker.old\n",
"curl -o /usr/bin/docker https://get.docker.com/builds/Linux/x86_64/docker-1.8.3\n",
"service docker start\n"
]
]
}
}
...
}
...
也许不是最干净的,但它似乎适合我。
我刚放了this answer here for more people to find it, but all the credits to Archimedes Trajano.
我唯一更正的是 haveged
在最新的 Amazon Linux 2 LTS Candidate 上不需要安装。此外,由于 SELinux 在亚马逊 Linux 上默认禁用,因此与 SELinux 相关的所有步骤也不是必需的,但 container-selinux
是 docker-ce
要求 ,因此必须安装它。此处启用防火墙是可选的。
因此,最新 Amazon 2 AMI 的最终步骤可能如下所示:
yum install -q -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.99-1.el7.noarch.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
usermod -a -G docker ec2-user
systemctl enable docker
systemctl start docker
所有步骤都应该是 运行 和 sudo
。执行这些命令后,非 sudo docker 运行 将在 reboot/relogin 之后可用。
将 docker 更新到最新版本对我有用
sudo yum upgrade docker
我想在 Amazon Linux 上将 Docker 升级到 v1.8。
在撰写本文时,他们的内部 yum 包存储库有:Docker version 1.7.1, build 786b29d/1.7.1
。
我已经尝试过的东西
手动安装Error: Package: docker-engine-1.8.2-1.el7.centos.x86_64 (dockerrepo) Requires: systemd-units
我最终安装了 Amazon Linux docker
软件包,然后用来自 https://docs.docker.com/installation/binaries/.[=13 的 1.8.2 版本二进制文件覆盖了 /usr/bin/docker
二进制文件=]
不完全优雅 - 但所有依赖项都是相同的,并且由于我的 AMI 是不可变的,因此不会在当前映像之上升级包。
如果您使用的是 EC2 容器服务,AWS ECS-optimized AMI (2015.09.b) is running docker-1.7.1 as of this writing. A post in the AWS forums 声明“[AWS 正在] 测试 1.9 RC 并计划在本月交付。”
为了扩展 Hzmy 的回答,以下是在 SSH 会话中将 Docker 升级到 1.9.0 的方法:
service docker stop
cp /usr/bin/docker /usr/bin/docker.old
curl -o /usr/bin/docker https://get.docker.com/builds/Linux/x86_64/docker-1.9.0
service docker start
如果您使用的是 CloudFormation 模板,可以将这里的命令放入 AWS::Cloudformation::Init:
...
"commands": {
...,
"03_upgrade_docker_for_log_driver_support": {
"command": {
"Fn::Join": [
"",
[
"#!/bin/bash -xe\n",
"service docker stop\n",
"cp /usr/bin/docker /usr/bin/docker.old\n",
"curl -o /usr/bin/docker https://get.docker.com/builds/Linux/x86_64/docker-1.8.3\n",
"service docker start\n"
]
]
}
}
...
}
...
也许不是最干净的,但它似乎适合我。
我刚放了this answer here for more people to find it, but all the credits to Archimedes Trajano.
我唯一更正的是 haveged
在最新的 Amazon Linux 2 LTS Candidate 上不需要安装。此外,由于 SELinux 在亚马逊 Linux 上默认禁用,因此与 SELinux 相关的所有步骤也不是必需的,但 container-selinux
是 docker-ce
要求 ,因此必须安装它。此处启用防火墙是可选的。
因此,最新 Amazon 2 AMI 的最终步骤可能如下所示:
yum install -q -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.99-1.el7.noarch.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
usermod -a -G docker ec2-user
systemctl enable docker
systemctl start docker
所有步骤都应该是 运行 和 sudo
。执行这些命令后,非 sudo docker 运行 将在 reboot/relogin 之后可用。
将 docker 更新到最新版本对我有用
sudo yum upgrade docker