Docker Executor 내에 구축된 Docker 컨테이너에 웹 액세스하는 방법
간결하게 문제 해결만 기재하겠습니다.
전체의 흐름이 알고 싶은 분은 아래의 기사를 봐 주세요.
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
Reference
이 문제에 관하여(Docker Executor 내에 구축된 Docker 컨테이너에 웹 액세스하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/zousan010sanpotyu/items/1b82a87f2c63aa8277db
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
Reference
이 문제에 관하여(Docker Executor 내에 구축된 Docker 컨테이너에 웹 액세스하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/zousan010sanpotyu/items/1b82a87f2c63aa8277db
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
services:
- docker:dind
$ 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!
Accessing the services
Docker Container Networking with Docker-in-Docker
Reference
이 문제에 관하여(Docker Executor 내에 구축된 Docker 컨테이너에 웹 액세스하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/zousan010sanpotyu/items/1b82a87f2c63aa8277db텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)