En entornos con restricciones de acceso a Docker Hub, implementar un espejo local es una estrategia eficaz para acelerar la obtención de imágenes. DaoCloud ofrece un servicio gratuito de espejo, denominado acelerador Docker, que actúa como proxy y almacena en caché imágenes en servidores ubicados en China.
Concepto del acelerador Docker
El acelerdaor Docker de DaoCloud es un servicio que replica el contenido de Docker Registry en infraesrtuctura local. Al configurar Docker con el parámetro --registry-mirror, las solicitudes de imágenes se redirigen al servidor de DaoCloud. Si la imagen está disponible en caché, se descarga directamente; en caso contrario, el acelerador la descarga de Docker Hub, la almacena y luego la proporciona al usuario.
Procedimiento de implementación
Para aprovechar este servicio:
- Cree una cuenta en la plataforma DaoCloud e inicie sesión.
- Acceda al panel de control y localice la sección de "Acelerador" para obtener la URL personalizada del espejo, por ejemplo
http://efgh5678.m.daocloud.io. - Modifique la conifguración de Docker para integrar esta URL y reinicie el demonio Docker.
Ejemplo práctico en Linux
A continuación, se ilustra la configuración en un sistema CentOS 7:
# Identificación del sistema operativo
$ hostnamectl
Static hostname: servidor-produccion
Icon name: computer-vm
Chassis: vm
Machine ID: a1b2c3d4e5f6
Boot ID: 12345678-abcd-efgh-ijkl-9876543210mn
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.el7.x86_64
Architecture: x86-64
# Aplicación del script de configuración con la URL del espejo
$ wget -qO- https://get.daocloud.io/daotools/set_mirror.sh | bash -s http://efgh5678.m.daocloud.io
Configuración completada.
Para aplicar los cambios, ejecute: sudo systemctl restart docker
# Recarga del servicio Docker
$ sudo systemctl restart docker
Descarga de imágenes mediante el espejo
Con el acelerador activo, las operaciones con imágenes utilizan el espejo local:
$ docker images --format "{{.Repository}}:{{.Tag}}"
$ docker container run --name demo-container alpine:latest
Unable to find image 'alpine:latest' locally
Pulling from library/alpine
89d9c30c1d48: Pulling fs layer
Digest: sha256:7633c8d5f65f6c2e494b9a6a14b42d0a4696f11e86a3a5c68e8c33f08e3b01f4
Status: Downloaded newer image for alpine:latest
$ docker images --format "{{.Repository}}:{{.Tag}}"
alpine:latest