/
install-docker.sh
executable file
·66 lines (54 loc) · 2.6 KB
/
install-docker.sh
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/env bash
set -euo pipefail
DOCKER_COMPOSE_V2_VERSION=2.27.0
DOCKER_BUILDX_VERSION=0.14.0
MACHINE=$(uname -m)
echo Installing docker...
sudo dnf install -yq docker
sudo systemctl enable --now docker
echo Add ec2-user to docker group.
sudo usermod -a -G docker ec2-user
echo Add docker config
sudo mkdir -p /etc/docker
sudo cp /tmp/conf/docker/daemon.json /etc/docker/daemon.json
echo "Adding docker systemd timers..."
sudo cp /tmp/conf/docker/scripts/* /usr/local/bin
sudo cp /tmp/conf/docker/systemd/docker-* /etc/systemd/system
sudo chmod +x /usr/local/bin/docker-*
echo "Installing docker buildx..."
DOCKER_CLI_DIR=/usr/libexec/docker/cli-plugins
sudo mkdir -p "${DOCKER_CLI_DIR}"
DOCKER_COMPOSE_V2_ARCH="${MACHINE}"
case "${MACHINE}" in
x86_64) BUILDX_ARCH="amd64" ;;
aarch64) BUILDX_ARCH="arm64" ;;
esac
sudo curl --location --fail --silent --output "${DOCKER_CLI_DIR}/docker-buildx" "https://github.com/docker/buildx/releases/download/v${DOCKER_BUILDX_VERSION}/buildx-v${DOCKER_BUILDX_VERSION}.linux-${BUILDX_ARCH}"
sudo chmod +x "${DOCKER_CLI_DIR}/docker-buildx"
docker buildx version
sudo curl --location --fail --silent --output "${DOCKER_CLI_DIR}/docker-compose" "https://github.com/docker/compose/releases/download/v${DOCKER_COMPOSE_V2_VERSION}/docker-compose-linux-${DOCKER_COMPOSE_V2_ARCH}"
sudo chmod +x "${DOCKER_CLI_DIR}/docker-compose"
docker compose version
echo "Making docker compose v2 compatible w/ docker-compose v1..."
sudo ln -s "${DOCKER_CLI_DIR}/docker-compose" /usr/bin/docker-compose
sudo cp /tmp/conf/bin/docker-compose /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose version
# Writing QEMU container version info to /usr/local/lib/bk-configure-docker.sh.
# We only pull this image when we build the AMI. It will be run in
# /usr/local/bin/bk-configure-docker.sh, but it needs to know the image digest
# to make sure it does not pull in another image instead.
# NOTE: the executable file is in /usr/local/bin and it sources as file of the
# same name in /usr/local/lib. These are not the same file.
# See https://docs.docker.com/build/building/multi-platform/
echo Contents of /usr/local/lib/bk-configure-docker.sh:
cat <<'EOF' | sudo tee -a /usr/local/lib/bk-configure-docker.sh
QEMU_BINFMT_VERSION=7.0.0-28
QEMU_BINFMT_DIGEST=sha256:66e11bea77a5ea9d6f0fe79b57cd2b189b5d15b93a2bdb925be22949232e4e55
QEMU_BINFMT_TAG="qemu-v${QEMU_BINFMT_VERSION}@${QEMU_BINFMT_DIGEST}"
EOF
# shellcheck disable=SC1091
source /usr/local/lib/bk-configure-docker.sh
sudo mkdir -p /usr/local/lib
echo Pulling qemu binfmt for multiarch...
sudo docker pull "tonistiigi/binfmt:${QEMU_BINFMT_TAG}"