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