AWS专有服务器如何安装Docker

摘要

  • 本文介绍如何在 AWS 专有服务器上安装 Docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Update and install Docker
sudo yum update -y


# Amazon Linux 2
sudo amazon-linux-extras install docker -y
# Amazon Linux 2023
sudo yum install docker -y

# Install Docker Compose,注意通过这种方式安装的compose的使用方式为 `docker-compose`,而非标准的 `docker compose`
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose


# Make the docker-compose command available
sudo chmod +x /usr/local/bin/docker-compose

# Enable Docker service
sudo systemctl enable docker
# Start the service
sudo systemctl start docker
# Add the current user to the docker group
sudo usermod -aG docker ec2-user
# 让组权限立即生效最稳妥的做法是:注销并重新登录远程主机,但也可以尝试用下面命令立即加载新组
newgrp docker
# Check Docker version
docker version
# Test Docker
docker run hello-world

解决ec2-user用户不能加入docker组的问题

  • 在 Amazon Linux / EC2 默认配置中会对ec2-user用户进行权限限制,因此添加 ec2-user 用户到 docker 组中的行为会被失效。

  • aws 使用 cloud-init 来管控启动行为,因此我们可以通过修改 cloud-init 配置来解决,具体可以查看/etc/cloud/cloud.cfg

  • sudo vim /etc/cloud/cloud.cfg,在 cloud.cfg 文件中可以看到如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
system_info:
# This will affect which distro class gets used
distro: amazon
distro_short: amzn
default_user:
name: ec2-user # 针对 ec2-user 用户
lock_passwd: true
gecos: EC2 Default User
groups: [wheel, adm, systemd-journal] # 这里固定了登录时赋予的用户组
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
shell: /bin/bash
paths:
cloud_dir: /var/lib/cloud
templates_dir: /etc/cloud/templates
ssh_svcname: sshd
  • 我们需要将 groups 配置项改为 groups: [wheel, adm, systemd-journal, docker]

  • 保存后,执行:

1
2
sudo cloud-init clean
sudo reboot
  • 重启再登录,执行

1
2
$ id
uid=1000(ec2-user) gid=992(docker) groups=992(docker),4(adm),10(wheel),190(systemd-journal),1000(ec2-user)