Como Instalar o Docker Sem Acesso à Internet

Instalação Offline do Docker

Quando a tarefa é instalar o Docker em um ambiente Linux sem acesso à internet, o processo pode parecer complicado. Esse cenário é comum em ambientes on-premises onde o acesso à internet é desativado por razões de segurança.

Desafios da Instalação Offline do Docker

Inicialmente, tentei seguir vários guias online, mas todas as tentativas falharam devido a dependências não atendidas. Erros comuns incluíam:

AlmaLinux 9 - AppStream                                                                                                                                         0.0  B/s |   0  B     05:54Errors during downloading metadata for repository 'appstream':  - Curl error (28): Timeout was reached for https://mirrors.almalinux.org/mirrorlist/9/appstream [Failed to connect to mirrors.almalinux.org port 443: Connection timed out]Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: Curl error (28): Timeout was reached for https://mirrors.almalinux.org/mirrorlist/9/appstream [Failed to connect to mirrors.almalinux.org port 443: Connection timed out]

Solução: Baixar Dependências Antecipadamente

Para superar isso, precisei baixar não apenas o Docker, mas também todas as suas dependências e as dependências dessas dependências. Aqui está o guia passo a passo que segui:

Baixar Dependências:

Primeiro, baixe os pacotes RPM necessários de um servidor Linux com as mesmas características (distro AlmaLinux e arquitetura x86_64) do servidor alvo. Abaixo está um script shell para automatizar esse processo:

docker_package_download.sh

#!/bin/bash

# Set architecture (change to ‘i386’ for 32-bit systems)
ARCH=”x86_64″

# Create a directory for Docker packages and their dependencies
mkdir -p docker_packages
cd docker_packages

# Add the Docker repository
sudo yum-config-manager –add-repo=https://download.docker.com/linux/centos/docker-ce.repo

# Ensure yumdownloader and repoquery are installed
sudo yum install -y yum-utils

# List of Docker packages to download
packages=(
“docker-ce”
“docker-ce-cli”
“containerd.io”
“docker-compose-plugin”
“container-selinux”
“fuse3-libs”
“fuse-overlayfs”
“iptables”
“libslirp”
“slirp4netns”
“docker-scan-plugin”
“docker-ce-rootless-extras”
)

# Function to download packages with retries
download_package() {
local package_url=$1
local package_name=$(basename $package_url)
local retries=5

for ((i=1; i> download_failures.log
return 1
}

# Download the packages and their dependencies
for package in “${packages[@]}”; do
yumdownloader –resolve –destdir=. –archlist=$ARCH $package
# Get the list of dependencies
dependencies=$(repoquery –requires –resolve –archlist=$ARCH $package)
# Download each dependency
for dependency in $dependencies; do
download_package $dependency
done
done

# Create a tarball of the downloaded packages
tar -czvf docker_packages_with_dependencies.tar.gz *.rpm

# Move the tarball to your home directory or any preferred location
mv docker_packages_with_dependencies.tar.gz ~/

# Clean up
cd ..
rm -rf docker_packages

echo “Docker packages and dependencies downloaded and compressed into docker_packages_with_dependencies.tar.gz”
echo “Check download_failures.log for any packages that failed to download.”

Para executar o script, use:

chmod +x docker_package_download.sh && ./docker_package_download.sh

Este script gera um arquivo chamado docker_packages_with_dependencies.tar.gz, contendo todos os pacotes RPM necessários.

Transferir e Instalar Pacotes:

Faça o upload do arquivo docker_packages_with_dependencies.tar.gz para o servidor alvo.

Extraia os pacotes e prossiga com a instalação do Docker usando o seguinte script:

docker_install.sh

#!/bin/bash

IP_ADDRESS=””
PACKAGE_FOLDER=”/opt/docker/install_package”
PACKAGE_NAME=”docker_packages_with_dependencies.tar.gz”

scp ./$PACKAGE_NAME $IP_ADDRESS:/tmp

# SSH into the server
ssh “$IP_ADDRESS” << EOF
sudo su
echo "1. Creating folder $PACKAGE_FOLDER"
mkdir -p $PACKAGE_FOLDER

echo "2. Moving package to $PACKAGE_FOLDER"
mv /tmp/$PACKAGE_NAME $PACKAGE_FOLDER

echo "3. Untar the file"
tar -xzvf $PACKAGE_FOLDER/$PACKAGE_NAME -C $PACKAGE_FOLDER

echo "4. Yum install the packages"
yum -y –disablerepo="*" install $PACKAGE_FOLDER/docker_packages/*.rpm –verbose

echo "5. Cleaning up $PACKAGE_FOLDER/$PACKAGE_NAME"
rm -rf $PACKAGE_FOLDER/$PACKAGE_NAME

echo "6. Enable and start Docker"
sudo systemctl enable docker
sudo systemctl start docker

echo "7. Verify the installation"
sudo docker –version

EOF

Para executar este script, use:

chmod +x docker_install.sh && ./docker_install.sh

Conclusão

Seguindo esses dois passos rápidos, você pode instalar o Docker com sucesso em um servidor sem acesso à internet. Este método garante que todas as dependências sejam atendidas, evitando erros comuns de instalação.

Tags:

Instalação offline do Docker, Instalar Docker sem internet, Instalação do Docker no AlmaLinux, Download de pacotes RPM do Docker, Dependências do Docker offline, Configuração do Docker sem internet

Deixe um comentário

Eu sou o Diego

Bem vindo ao meu website. Sim, aqui falamos sobre technologia. Simplesmente simples, fazendo o que se deve fazer em uma vida saudável, fazer tudo aquilo que gosta.

Vamos conectar!