Docker Executor 내에 구축된 Docker 컨테이너에 웹 액세스하는 방법

2345 단어 dind도커GitLab
본 기사는 이전에 쓴 기사에서 가장 빠진 장소를 발췌한 것입니다.
간결하게 문제 해결만 기재하겠습니다.

전체의 흐름이 알고 싶은 분은 아래의 기사를 봐 주세요.
Docker in Docker를 이용하여 CI를 구축해 보았습니다.

하고 싶은 일



Docker Executor 내에 구축한 Docker 컨테이너에 curl 명령을 사용하여 액세스하고 응답이 반환되는지 테스트합니다.
용도는 CI 환경을 Docker를 이용해 구축하고, 웹 앱도 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

좋은 웹페이지 즐겨찾기