本記事は以前書いた記事から最もハマった場所を抜粋したものです。
簡潔にトラブルシューティングのみ記載していきます。
全体の流れが知りたい方は以下の記事をご覧ください。
Docker in Dockerを利用してCIを構築してみた
やりたいこと
Docker Executor内に構築したDockerコンテナに対してcurlコマンドでアクセスを行い、応答が返却されるかをテストします。
用途はCI環境をDockerを利用して構築し、WebアプリもDockerコンテナとして作成したいケースが考えられます。

ハマったこと
IPアドレスを動的に取得してアクセスを試みましたができませんでした。
IPアドレスは取得できているにも関わらずTimeoutエラーが発生します。
$ export CONTAINER_ADDRESS=$(docker inspect -f "{{.NetworkSettings.IPAddress}}"
${CONTAINER_NAME})
$ echo ${CONTAINER_ADDRESS}
172.18.0.2
$ curl http://${CONTAINER_ADDRESS}:80/${APP_NAME}/hello
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:31 --:--:-- 0
curl: (28) Failed to connect to 172.18.0.2 port 80: Operation timed out
解決策
GitLabCIではservicesで定義したコンテナにアクセスする場合、定義した時の名前を使用する必要があります。
今回は.gitlab-ci.ymlファイル内で
services:
- docker:dind
と定義していたため、dockerをホスト名として指定します。
$ curl docker:80/${APP_NAME}/hello
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13 100 13 0 0 55 0 --:--:-- --:--:-- --:--:-- 55
Hello, World!
参考URL
Accessing the services
Docker Container Networking with Docker-in-Docker