Implementar GitLab usando Docker
Escribir contenido
En este directorio de archivos, otorgue permiso de ejecución a gitlab_start.sh.
Presta atención a si el puerto está ocupado.
Modifique el archivo gitlab_start.sh y cambie el puerto asignado al host a 8088 u otros puertos desocupados.
Vuelva a ejecutar. /gitlab_start.sh y muestra el siguiente error.
Esto se debe a que se ha creado el contenedor anterior, aunque no se está ejecutando. Bórralo.
Vuelva a ejecutar el archivo gitlab_start.sh.
Puedes ver que el contenedor se inició correctamente.
Cree el archivo docker-compose.yml y ejecute docker-compose up -d en la carpeta donde se encuentra el archivo.
Es necesario instalar Docker-compose con antelación.
Instalar docker-compose
Nota: Puede modificar el puerto y el directorio de asignación según sea necesario.
Si el puerto de acceso abierto es 80, external_url se puede configurar en 80 de forma predeterminada sin agregar un número de puerto.
Si se crea mediante el método 3.1, es necesario modificar los archivos de configuración relevantes.
Cuando el contenedor Gitlab se esté ejecutando, reinicie el servicio y acceda de forma remota al sitio web para realizar pruebas.
*Si ocurre un error al acceder a Gitlab, como 502, utilice el comando para verificar la causa del error.
Por ejemplo
Compruebe el archivo de configuración anterior para descubrir la causa del error.
[Error en la carga de la imagen...(Picture-e 9789-1636370071222)]
Aunque el contenedor se inició correctamente, no hay forma de acceder a gitlab según ip:port.
Extraiga la imagen de Tomcat
Para probar si el puerto 8088 está disponible, primero ponga en pausa el contenedor gitlab.
Inicie el contenedor Tomcat y asigne el puerto 8080 del contenedor Tomcat al puerto 8088 del host.
Todo es normal Al acceder a ip:8088, todavía no se puede acceder como antes.
Debido a que el firewall del sistema anterior se ha apagado y se puede acceder a otros servicios normalmente, no hay duda de que se trata de un problema de firewall.
Abrir el firewall
No se puede acceder normalmente a los servicios a los que se podía acceder normalmente antes del tratamiento.
Desarrollar el port del servicio y acceder a él con normalidad.
Abrir el puerto 8088.
Visita de nuevo
Regresa a la página 404 de Tomcat: estado http 404 – no encontrado.
Aunque es una página 404, significa que se puede acceder al puerto normalmente en este momento.
Detenga el contenedor Tomcat y ejecute el contenedor gitlab nuevamente.
Aunque no se inició correctamente, está un paso más cerca del éxito :)
Al intentar eliminar este contenedor y volver a crearlo, este error todavía ocurre.
Aún no puedo acceder. Compruebe si hay algún problema dentro de GitLab.
¿Va todo bien?
Cambié al contenedor Tomcat, probé nuevamente y descubrí que el puerto 8088 era inaccesible.
Pero es posible hacer ping a esta máquina desde el host.
Sin embargo, cambiar a ip:8088 no funcionará.
Según los dos artículos anteriores, se propone que el segmento numérico eth0 de la red interna de Alibaba Cloud es exactamente el mismo que la tarjeta de red virtual Docker. Ambos son el segmento 172, lo cual está en conflicto.
Observé que el servidor en la nube que usé también era Alibaba Cloud y lo verifiqué a través de ifconfig.
Y mirando la dirección IP interna de Alibaba Cloud, realmente comienza con 172.
Edite el archivo de configuración /etc/docker/daemon.json. Si el archivo daemon.json no existe, créelo.
Reinicie el servicio Docker.
Puedes ver que la dirección de docker0 ha cambiado.
Sin embargo, tenga en cuenta que los servicios iniciados con Docker utilizarán docker0 de forma predeterminada, mientras que los servicios iniciados con Docker-compose no. El BR-12AA369E4A6 anterior corresponde al servicio iniciado por docker-compose. Puede ver que el segmento de red sigue siendo 172.
Docker-compose up utiliza dos formas de segmentos de red definidos por el usuario (especificados desde sus raíces).
Según este artículo, uso el método 2, que consiste en modificar daemon.json, pero no puedo acceder a él correctamente. Mi entorno es Docker: 20.10.7, Docker-compose: 1.24.
Más tarde se descubrió que el motivo del acceso fallido era la relación entre Docker y el firewall. Puede apagar el firewall y abrir la ventana acoplable. Si no puede acceder, abra el firewall. Probando entre ellos = =
Más tarde intenté desactivar firewalld y activar iptables.
Cuando habilitas iptables, puedes acceder a ellos normalmente cuando están cerrados, pero no cuando están abiertos.
Cuando firewalld está habilitado, las secuencias de inicio y apagado de docker y firewalld son diferentes. A veces se puede acceder a ellos con el firewall activado y otras veces con el firewall desactivado.
Sin embargo, el contenedor no puede acceder a la red externa y este problema aún no se ha resuelto. Una solución indirecta es que el contenedor utilice el modo de red de host.
Pregunta: Se sospecha que existe un problema de configuración entre Docker, Firewalld e iptables.
Docker e IPtables
Asignación de puertos de Docker y problemas de inaccesibilidad externa
Docker e IPtables
Otra situación en la que no se puede acceder a GitLab. Es un Error en el archivo de configuración y asignación de puertos.
Solución rápida: configure el número de puerto del host y el número de contenedor para que sean iguales; consulte el siguiente blog.
Instale GitLab usando la imagen de GitLab Docker (relleno de huecos)
[Error en la carga de la imagen...(image-457 ad3-1636370071221)]
Si el sistema entorno Normalmente, la instalación será fluida y generalmente no habrá problemas extraños.
Lo instalé en un servidor diferente.
Alibaba Cloud CentOS 7.6: el acceso es normal, se produce un error 502 debido a memoria insuficiente y el contenedor puede conectarse a la red externa normalmente.
Alibaba Cloud Alibaba Cloud Linux 2: Es posible que no se pueda acceder al contenedor normalmente y que no se pueda conectar correctamente a la red externa. Sospecho que es un problema de firewall y ventana acoplable.
Cambiar contraseña: