mutao.net

いわゆる雑記。

dockerコンテナで立てたjenkinsにlocalhostで接続できなくなった話

概要

タイトル通りでdockerを使ってjenkinsを試してみようとしたら接続できなくなってハマったのでメモ

いじった内容

$ cat docker-compose.yml
version: "3.3"
services:
  master:
    container_name: jenkins
    image: jenkins:latest
    ports:
      - 18080:8080
    volumes:
      - ./jenkins_home:/var/jenkins_home

$ docker-compose up -d

ここまでで http:localhost:18080にアクセスすれば例のJenkinsの初期の画面が見れる想定だった。でもアクセスできない

$ docker ps してみたけどなんの問題もなさそう。

$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                NAMES
c9436371666e        jenkins:latest        "/bin/tini -- /usr/l…"   2 minutes ago       Up 2 minutes        50000/tcp, 0.0.0.0:18080->8080/tcp   jenkins

結局なんだったのか

docker-machineでvirtualboxを立てていた。そういえばdockerの勉強をしていてそんなことをしていた気がする。

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER     ERRORS
default   *        virtualbox   Running   tcp://192.168.99.100:2376           v19.03.5

curl を投げてみる。いけたっぽい

$ curl -Iv http://192.168.99.100:18080
* Rebuilt URL to: http://192.168.99.100:18080/
*   Trying 192.168.99.100...
* TCP_NODELAY set
* Connected to 192.168.99.100 (192.168.99.100) port 18080 (#0)
> HEAD / HTTP/1.1
> Host: 192.168.99.100:18080
> User-Agent: curl/7.60.0
> Accept: */*
>
< HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
< Date: Mon, 02 Mar 2020 12:42:54 GMT
Date: Mon, 02 Mar 2020 12:42:54 GMT
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< Set-Cookie: JSESSIONID.f86c67a1=4bkiel39hx2dpwwhhggt7w8w;Path=/;HttpOnly
Set-Cookie: JSESSIONID.f86c67a1=4bkiel39hx2dpwwhhggt7w8w;Path=/;HttpOnly
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Content-Type: text/html;charset=UTF-8
Content-Type: text/html;charset=UTF-8
< X-Hudson: 1.395
X-Hudson: 1.395
< X-Jenkins: 2.60.3
X-Jenkins: 2.60.3
< X-Jenkins-Session: 5f75fc09
X-Jenkins-Session: 5f75fc09
< X-Hudson-CLI-Port: 50000
X-Hudson-CLI-Port: 50000
< X-Jenkins-CLI-Port: 50000
X-Jenkins-CLI-Port: 50000
< X-Jenkins-CLI2-Port: 50000
X-Jenkins-CLI2-Port: 50000
< X-You-Are-Authenticated-As: anonymous
X-You-Are-Authenticated-As: anonymous
< X-You-Are-In-Group-Disabled: JENKINS-39402: use -Dhudson.security.AccessDeniedException2.REPORT_GROUP_HEADERS=true or use /whoAmI to diagnose
X-You-Are-In-Group-Disabled: JENKINS-39402: use -Dhudson.security.AccessDeniedException2.REPORT_GROUP_HEADERS=true or use /whoAmI to diagnose
< X-Required-Permission: hudson.model.Hudson.Administer
X-Required-Permission: hudson.model.Hudson.Administer
< Content-Length: 677
Content-Length: 677
< Server: Jetty(9.2.z-SNAPSHOT)
Server: Jetty(9.2.z-SNAPSHOT)

dockerで立てたVitualbox上のVMIPアドレスが 192.168.99.100 ということらしい。

つまり dockerコンテナへのアクセスはlocalhostではなく、VMIPアドレスを使用してアクセスしなければならない。

とにかくハマったのでメモ書き程度に。。。