1. Preparación ambiental
- 1 servidor en la nube Ali
- centos7.9
- última versión de la ventana acoplable
2. Pasos de instalación de Docker
Configurar almacén
- Instale los paquetes necesarios. yum-utils proporciona yum-config-manager, y el controlador de almacenamiento del mapeador de dispositivos requiere device-mapper-persistent-data y lvm2.
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- Configurar el origen de la nube de Alibaba
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Instale la última versión de Docker Engine-Community y containerd
sudo yum install docker-ce docker-ce-cli containerd.io
iniciar ventana acoplable
sudo systemctl start docker
Configurar la aceleración de imágenes de Docker
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
reiniciar ventana acoplable
sudo systemctl daemon-reload
sudo systemctl restart docker
3. Configurar el certificado
Crear un directorio para almacenar certificados
mkdir -p /usr/local/ca
cd /usr/local/ca
Cree un script de generación de certificados con un solo clic
vi ca.sh
Presione el botón A para cambiar al modo de entrada y luego pegue el siguiente código
#!/bin/bash
SERVER="服务器外网ip"
PASSWORD="yinfeng"
COUNTRY="CN"
STATE="shanghai"
CITY="shanghai"
ORGANIZATION="yinfeng"
ORGANIZATIONAL_UNIT="dev"
EMAIL="[email protected]"
echo "starting..."
cd /usr/local/ca
openssl genrsa -aes256 -passout pass:$PASSWORD -out ca-key.pem 4096
openssl req -new -x509 -passin "pass:$PASSWORD" -days 3650 -key ca-key.pem -sha256 -out ca.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL"
openssl genrsa -out server-key.pem 4096
openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csr
sh -c 'echo "subjectAltName = IP:'$SERVER',IP:0.0.0.0" >> extfile.cnf'
sh -c 'echo "extendedKeyUsage = serverAuth" >> extfile.cn'
sh -c 'echo "extendedKeyUsage = serverAuth" >> extfile.cnf'
openssl x509 -req -days 3650 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out server-cert.pem -extfile extfile.cnf
openssl genrsa -out key.pem 4096
openssl req -subj "/CN=client" -new -key key.pem -out client.csr
sh -c 'echo extendedKeyUsage=clientAuth >> extfile-client.cnf'
openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out cert.pem -extfile extfile-client.cnf
rm client.csr server.csr
cp server-*.pem /etc/docker/
cp ca.pem /etc/docker/
echo "========end========"
Ejecutar después de guardar el script
sh ca.sh
Una vez completada la ejecución, se generarán los siguientes archivos.Después de buscar durante mucho tiempo, resumo los únicos scripts disponibles en toda la red.
Modificar la configuración de Docker
- Haga que el demonio Docker solo acepte enlaces de clientes que proporcionen certificados en los que confía la CA
vim /lib/systemd/system/docker.service
- Reemplace el valor de la propiedad ExecStart
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/usr/local/ca/ca.pem --tlscert=/usr/local/ca/server-cert.pem --tlskey=/usr/local/ca/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
Vuelva a cargar el servicio y reinicie la ventana acoplable
systemctl daemon-reload && systemctl restart docker
Guarde el archivo del cliente del certificado en el local
Estoy usando sz, si no lo tienes, primero debes instalarlo
yum -y install lrzsz
Ejecutar después de una instalación exitosa
sz ca.pem cert.pem key.pem
Los guardo directamente en el escritorio.
Pruebe si el certificado se configuró correctamente. Si tiene éxito, se mostrará la información relacionada con el certificado. Si hay una falla, verifique el proceso de generación del certificado.
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=服务器外网ip:2375 version
Finalmente probarlo en la idea
-
Mueva el certificado que acaba de descargar al directorio de certificados de nuestra computadora
-
Antes de vincular, debe abrir el puerto 2375 de Alibaba Cloud; de lo contrario, Alibaba Cloud lo bloqueará
-
Vinculando a través del complemento docker de idea, puede ver que el enlace ha sido exitoso
-
Estamos probando si el enlace a través de tcp aún se puede vincular con éxito
4. Resumen
Finalmente, para resumir, al configurar el enlace de red externo de docker para su propio servicio, debe tener buenas medidas de cifrado, de lo contrario, es fácil colgar el caballo.En la actualidad, los pasos en Internet generalmente son solo enlaces tcp sin contraseña. , que son muy inseguros. Se escaneó y colgó en media hora, así que decidí escribir una nota para registrar mi proceso de implementación. Espero que todos puedan aprender de ella.
Esta es la información de alarma de Alibaba Cloud
Cuando tenga tiempo, escribiré otro artículo sobre la idea del cifrado con un solo clic para implementar Springboot en el contenedor de la ventana acoplable . No es fácil escribir un artículo. Por favor, dale a Me gusta y gracias por tu apoyo.