From d44b8a46e2e742af69c4955b4bba9848478f8627 Mon Sep 17 00:00:00 2001 From: Shamil Mubarakshin <127750046+shamil-mubarakshin@users.noreply.github.com> Date: Fri, 18 Aug 2023 23:41:11 +0200 Subject: [PATCH] [ubuntu] Change docker to install from official repository (#8107) --- .../SoftwareReport.Generator.ps1 | 4 +-- .../SoftwareReport/SoftwareReport.Tools.psm1 | 8 ++--- .../installers/{docker-moby.sh => docker.sh} | 33 +++++++++++-------- images/linux/ubuntu2004.json | 28 ++++++++-------- images/linux/ubuntu2204.pkr.hcl | 12 +++---- 5 files changed, 45 insertions(+), 40 deletions(-) rename images/linux/scripts/installers/{docker-moby.sh => docker.sh} (69%) diff --git a/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 b/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 index 9923937f1..7d28939cd 100644 --- a/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 +++ b/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 @@ -108,8 +108,8 @@ $tools.AddToolVersion("Docker Amazon ECR Credential Helper", $(Get-DockerAmazonE $tools.AddToolVersion("Docker Compose v1", $(Get-DockerComposeV1Version)) $tools.AddToolVersion("Docker Compose v2", $(Get-DockerComposeV2Version)) $tools.AddToolVersion("Docker-Buildx", $(Get-DockerBuildxVersion)) -$tools.AddToolVersion("Docker-Moby Client", $(Get-DockerMobyClientVersion)) -$tools.AddToolVersion("Docker-Moby Server", $(Get-DockerMobyServerVersion)) +$tools.AddToolVersion("Docker Client", $(Get-DockerClientVersion)) +$tools.AddToolVersion("Docker Server", $(Get-DockerServerVersion)) if ((Test-IsUbuntu20) -or (Test-IsUbuntu22)) { $tools.AddToolVersion("Fastlane", $(Get-FastlaneVersion)) } diff --git a/images/linux/scripts/SoftwareReport/SoftwareReport.Tools.psm1 b/images/linux/scripts/SoftwareReport/SoftwareReport.Tools.psm1 index 120ed2327..9c07f38cc 100644 --- a/images/linux/scripts/SoftwareReport/SoftwareReport.Tools.psm1 +++ b/images/linux/scripts/SoftwareReport/SoftwareReport.Tools.psm1 @@ -69,22 +69,22 @@ function Get-DockerComposeV1Version { } function Get-DockerComposeV2Version { - $composeVersion = docker compose version | Take-OutputPart -Part 3 + $composeVersion = docker compose version | Take-OutputPart -Part 3 | Take-OutputPart -Part 0 -Delimiter "v" return $composeVersion } -function Get-DockerMobyClientVersion { +function Get-DockerClientVersion { $dockerClientVersion = sudo docker version --format '{{.Client.Version}}' return $dockerClientVersion } -function Get-DockerMobyServerVersion { +function Get-DockerServerVersion { $dockerServerVersion = sudo docker version --format '{{.Server.Version}}' return $dockerServerVersion } function Get-DockerBuildxVersion { - $buildxVersion = docker buildx version | Take-OutputPart -Part 1 | Take-OutputPart -Part 0 -Delimiter "+" + $buildxVersion = docker buildx version | Take-OutputPart -Part 1 | Take-OutputPart -Part 0 -Delimiter "v" return $buildxVersion } diff --git a/images/linux/scripts/installers/docker-moby.sh b/images/linux/scripts/installers/docker.sh similarity index 69% rename from images/linux/scripts/installers/docker-moby.sh rename to images/linux/scripts/installers/docker.sh index 3e66905f7..50b85c1a7 100644 --- a/images/linux/scripts/installers/docker-moby.sh +++ b/images/linux/scripts/installers/docker.sh @@ -1,25 +1,26 @@ #!/bin/bash -e ################################################################################ -## File: docker-moby.sh +## File: docker.sh ## Desc: Installs docker onto the image ################################################################################ # Source the helpers for use with the script +source $HELPER_SCRIPTS/os.sh source $HELPER_SCRIPTS/install.sh -# Check to see if docker is already installed -docker_package=moby -echo "Determing if Docker ($docker_package) is installed" -if ! IsPackageInstalled $docker_package; then - echo "Docker ($docker_package) was not found. Installing..." - apt-get remove -y moby-engine moby-cli - apt-get update - apt-get install -y moby-engine moby-cli - apt-get install --no-install-recommends -y moby-buildx - apt-get install -y moby-compose -else - echo "Docker ($docker_package) is already installed" -fi +repo_url="https://download.docker.com/linux/ubuntu" +gpg_key="/usr/share/keyrings/docker.gpg" +repo_path="/etc/apt/sources.list.d/docker.list" + +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o $gpg_key +echo "deb [arch=amd64 signed-by=$gpg_key] $repo_url $(getOSVersionLabel) stable" > $repo_path +apt-get update +apt-get install --no-install-recommends docker-ce docker-ce-cli containerd.io docker-buildx-plugin + +# Install docker compose v2 from releases +URL=$(get_github_package_download_url "docker/compose" "contains(\"compose-linux-x86_64\")") +curl -fsSL $URL -o /usr/libexec/docker/cli-plugins/docker-compose +chmod +x /usr/libexec/docker/cli-plugins/docker-compose # Enable docker.service systemctl is-active --quiet docker.service || systemctl start docker.service @@ -56,6 +57,10 @@ aws_helper_url=$(curl "${authString[@]}" -fsSL $aws_latest_release_url | jq -r ' download_with_retries "$aws_helper_url" "/usr/bin" docker-credential-ecr-login chmod +x /usr/bin/docker-credential-ecr-login +# Cleanup custom repositories +rm $gpg_key +rm $repo_path + invoke_tests "Tools" "Docker" if [ "${DOCKERHUB_PULL_IMAGES:-yes}" -eq "yes" ]; then invoke_tests "Tools" "Docker images" diff --git a/images/linux/ubuntu2004.json b/images/linux/ubuntu2004.json index bfe69eaac..ee368db13 100644 --- a/images/linux/ubuntu2004.json +++ b/images/linux/ubuntu2004.json @@ -196,20 +196,6 @@ ], "execute_command": "sudo sh -c '{{ .Vars }} pwsh -f {{ .Path }}'" }, - { - "type": "shell", - "scripts": [ - "{{template_dir}}/scripts/installers/docker-compose.sh", - "{{template_dir}}/scripts/installers/docker-moby.sh" - ], - "environment_vars": [ - "HELPER_SCRIPTS={{user `helper_script_folder`}}", - "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}", - "DOCKERHUB_LOGIN={{user `dockerhub_login`}}", - "DOCKERHUB_PASSWORD={{user `dockerhub_password`}}" - ], - "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" - }, { "type": "shell", "scripts": [ @@ -282,6 +268,20 @@ ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, + { + "type": "shell", + "scripts": [ + "{{template_dir}}/scripts/installers/docker-compose.sh", + "{{template_dir}}/scripts/installers/docker.sh" + ], + "environment_vars": [ + "HELPER_SCRIPTS={{user `helper_script_folder`}}", + "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}", + "DOCKERHUB_LOGIN={{user `dockerhub_login`}}", + "DOCKERHUB_PASSWORD={{user `dockerhub_password`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, { "type": "shell", "scripts": [ diff --git a/images/linux/ubuntu2204.pkr.hcl b/images/linux/ubuntu2204.pkr.hcl index 722562314..d4018a44c 100644 --- a/images/linux/ubuntu2204.pkr.hcl +++ b/images/linux/ubuntu2204.pkr.hcl @@ -280,12 +280,6 @@ build { scripts = ["${path.root}/scripts/installers/Install-PowerShellModules.ps1", "${path.root}/scripts/installers/Install-AzureModules.ps1"] } - provisioner "shell" { - environment_vars = ["HELPER_SCRIPTS=${var.helper_script_folder}", "INSTALLER_SCRIPT_FOLDER=${var.installer_script_folder}", "DOCKERHUB_LOGIN=${var.dockerhub_login}", "DOCKERHUB_PASSWORD=${var.dockerhub_password}"] - execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'" - scripts = ["${path.root}/scripts/installers/docker-compose.sh", "${path.root}/scripts/installers/docker-moby.sh"] - } - provisioner "shell" { environment_vars = ["HELPER_SCRIPTS=${var.helper_script_folder}", "INSTALLER_SCRIPT_FOLDER=${var.installer_script_folder}", "DEBIAN_FRONTEND=noninteractive"] execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'" @@ -350,6 +344,12 @@ build { ] } + provisioner "shell" { + environment_vars = ["HELPER_SCRIPTS=${var.helper_script_folder}", "INSTALLER_SCRIPT_FOLDER=${var.installer_script_folder}", "DOCKERHUB_LOGIN=${var.dockerhub_login}", "DOCKERHUB_PASSWORD=${var.dockerhub_password}"] + execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'" + scripts = ["${path.root}/scripts/installers/docker-compose.sh", "${path.root}/scripts/installers/docker.sh"] + } + provisioner "shell" { environment_vars = ["HELPER_SCRIPTS=${var.helper_script_folder}", "INSTALLER_SCRIPT_FOLDER=${var.installer_script_folder}"] execute_command = "sudo sh -c '{{ .Vars }} pwsh -f {{ .Path }}'"