Je loue un serveur virtuel avec Sakura VPS et j'exécute Gitlab sur ce serveur. Gitlab a été lancé avec docker-compose en se référant au document officiel GitLab Docker images. En outre, il y avait une image nginx-proxy pratique pour le support SSL. J'ai essayé de l'utiliser et je me suis battu dur, mais essayer de voler directement de nginx-proxy au serveur puma sans passer par le nginx interne n'a pas fonctionné, et actuellement c'est sous la forme d'un démarrage avec Gitlab seul. .. Puisqu'il est lancé par lui-même, référez-vous à Configuration SSL de Gitlab (let-encrypt-integration) en interne. J'obtiens et je renouvelle un certificat SSL. Tous ces éléments sont définis de manière à pouvoir être conservés du côté de l'hôte local en spécifiant le volume de docker-compose.
Cette fois, il ne s'agit pas de ces méthodes de démarrage, mais de la communication entre les conteneurs Docker.
Puisque je voulais déplacer CI avec l'exploitation de Gitlab, j'ai décidé d'exploiter en plus Gitlab Runnner.
L'installation de base a été faite selon le document officiel Run GitLab Runner in a container. Comme j'étais un débutant de Docker, je pensais que la communication entre les conteneurs devait être sur le même réseau dans Docker, donc comme d'habitude, docker network create --driver = bridge --subnet = subnet specification --gateway = Un réseau a été créé avec le nom de réseau spécifié
de la passerelle, et Gitlab et Gitlab Runner ont été lancés sur le même réseau.
Si vous recherchez la communication entre les conteneurs, cela signifie probablement un ping entre les hôtes locaux, et je vois de nombreux articles qui disent: "Vous pouvez communiquer si vous les mettez dans le même réseau Docker." Cependant, la communication Http avec Gitlab qui est ouverte vers l'extérieur est jouée par quelqu'un et `` curl: (7) Impossible de se connecter au port 443 de gitlab.example.com: Pas de route vers l'hôte '' et curl Il n'est même pas revenu. C'est embarrassant parce que je suis trop nouveau dans Docker, mais j'ai pu communiquer entre les conteneurs à cet égard d'une manière que tout le monde pourrait prendre pour acquise. Je voudrais laisser cela comme un commandement.
Supplément Dans gitlab.example.com, DNS convient à l'adresse IP globale de l'hôte, et Curl etc. sont renvoyés sans difficulté à moins que ce ne soit entre les conteneurs.
En conséquence, il semblait être joué en raison du pare-feu côté hôte. Par conséquent, j'ai trouvé qu'il était nécessaire de faire des réglages pour que le pare-feu puisse passer par le réseau utilisé dans le réseau Docker.
cette fois. Le réseau Docker nouvellement créé spécifie 172.31.0.0 / 16 '' comme sous-réseau. Vous pouvez vérifier le réseau avec
docker network inspect network name ''.
Par conséquent, j'ai ajouté une règle de pare-feu pour ce sous-réseau, pensant que je devrais passer par le réseau de 172.31.0.0 / 16 '', mais cela n'a pas fonctionné. Voici un article disant que vous devez ajouter une règle pour
172.0.0.0 / 8 '' (Docker --No route to host J'ai trouvé l'hôte)), donc quand je l'ai essayé honnêtement, j'ai pu communiquer en toute sécurité. Vous pouvez maintenant communiquer entre Gitlab et Gitlab Runner, et vous pouvez enregistrer Runner.
Les commandes que vous appuyez sont résumées ci-dessous. Si le sous-réseau est 192.168. ~~, je pense que ce serait bien s'il pouvait percer ce pare-feu. (Je ne suis pas sûr)
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=172.0.0.0/8 accept'
sudo firewall-cmd --permanent --zone=public --add-masquerade
sudo firewall-cmd --reload
sudo less /etc/firewalld/zones/public.xml
>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<masquerade/>
<!--Bon si cela est ajouté-->
<rule family="ipv4">
<source address="172.0.0.0/8"/>
<accept/>
</rule>
</zone>
Je suis désolé pour les phrases sales que je n'ai toujours pas l'habitude d'écrire Qiita. Docker est trop pratique et j'essaye de faire des tests simples avec Docker. Bien que je puisse utiliser Gitlab Runner, je n'ai toujours pas étudié l'IC, donc j'aimerais m'y consacrer.
Veuillez indiquer si quelque chose ne va pas.
Recommended Posts