mutao.net

いわゆる雑記。

GraalVM

なんでやったの

Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS)
  • ユニバーサルJVMだからJavaのmoduleをPythonで作るとかできるらしい。
  • JakartaEE勉強のための一環
  • メイン機がWindows Homeなので仕方なくAWSインスタンス立てテストしてみる。

インストール

  • とりあえず最新版
$ https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.0.0/graalvm-ce-java11-linux-amd64-20.0.0.tar.gz
  • 解凍して名前変えとく
$ tar xf graalvm-ce-java11-linux-amd64-20.0.0.tar.gz
$ mv graalvm-ce-java11-20.0.0 graalvm-ce
$ sudo mv graalvm-ce /usr/local/
$ ls -l /usr/local/graalvm-ce/
total 352
drwxrwxr-x  2 ec2-user ec2-user   4096 Apr 19 09:35 bin
drwxrwxr-x  4 ec2-user ec2-user    112 Apr 19 09:35 conf
-rw-rw-r--  1 ec2-user ec2-user   2316 Feb 17 18:22 GRAALVM-README.md
drwxrwxr-x  3 ec2-user ec2-user    152 Apr 19 09:35 include
drwxrwxr-x  2 ec2-user ec2-user   4096 Apr 19 09:35 jmods
drwxrwxr-x  6 ec2-user ec2-user     52 Apr 19 09:35 languages
drwxrwxr-x 71 ec2-user ec2-user   4096 Apr 19 09:35 legal
drwxrwxr-x 14 ec2-user ec2-user   4096 Apr 19 09:35 lib
-rw-rw-r--  1 ec2-user ec2-user  27181 Feb 17 18:22 LICENSE.txt
-rw-r--r--  1 ec2-user ec2-user   3541 Feb 17 18:44 release
-rw-rw-r--  1 ec2-user ec2-user 306188 Feb 17 18:22 THIRD_PARTY_LICENSE.txt
drwxrwxr-x  7 ec2-user ec2-user     91 Apr 19 09:35 tools
  • binの中
$ ls -l /usr/local/graalvm-ce/bin
total 141336
lrwxrwxrwx 1 ec2-user ec2-user        23 Feb 17 18:44 gu -> ../lib/installer/bin/gu
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jar
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jarsigner
-rwxr-xr-x 1 ec2-user ec2-user      8720 Feb 17 18:40 java
-rwxr-xr-x 1 ec2-user ec2-user      8784 Feb 17 18:40 javac
-rwxr-xr-x 1 ec2-user ec2-user      8784 Feb 17 18:40 javadoc
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 javap
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jcmd
-rwxr-xr-x 1 ec2-user ec2-user     12888 Feb 17 18:40 jconsole
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jdb
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jdeprscan
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jdeps
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jfr
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jhsdb
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jimage
-rwxr-xr-x 1 ec2-user ec2-user     12880 Feb 17 18:40 jinfo
-rwxr-xr-x 1 ec2-user ec2-user      8784 Feb 17 18:40 jjs
-rwxr-xr-x 1 ec2-user ec2-user      8784 Feb 17 18:40 jlink
-rwxr-xr-x 1 ec2-user ec2-user     12880 Feb 17 18:40 jmap
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jmod
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jps
-rwxr-xr-x 1 ec2-user ec2-user      8792 Feb 17 18:40 jrunscript
lrwxrwxrwx 1 ec2-user ec2-user        22 Feb 17 18:44 js -> ../languages/js/bin/js
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jshell
-rwxr-xr-x 1 ec2-user ec2-user     12880 Feb 17 18:40 jstack
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jstat
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 jstatd
-rwxr-xr-x 1 ec2-user ec2-user      6341 Feb  6 17:35 jvisualvm
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 keytool
lrwxrwxrwx 1 ec2-user ec2-user        25 Feb 17 18:44 lli -> ../languages/llvm/bin/lli
lrwxrwxrwx 1 ec2-user ec2-user        24 Feb 17 18:44 node -> ../languages/js/bin/node
lrwxrwxrwx 1 ec2-user ec2-user        23 Feb 17 18:44 npm -> ../languages/js/bin/npm
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 pack200
-rwxr-xr-x 1 ec2-user ec2-user 144200783 Feb 17 18:44 polyglot
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 rmic
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 rmid
-rwxr-xr-x 1 ec2-user ec2-user      8744 Feb 17 18:40 rmiregistry
-rwxr-xr-x 1 ec2-user ec2-user      8736 Feb 17 18:40 serialver
-rwxr-xr-x 1 ec2-user ec2-user    117704 Feb 17 18:40 unpack200
  • javaのバージョン確認
$ /usr/local/graalvm-ce/bin/java -version
openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02)
OpenJDK 64-Bit Server VM GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02, mixed mode, sharing)
  • JVMがGraalになってる
OpenJDK Runtime Environment GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02)
  • javaのpath通した
$ java -version
openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02)
OpenJDK 64-Bit Server VM GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02, mixed mode, sharing)
  • 適当になんか書く
public class GraalTest {
    public static void main(String[] args) {
        System.out.print("Hello World!\n");
    }
}
$ gu install native-image
  • 失敗した
$ native-image GraalTest
Build on Server(pid: 948, port: 33429)
[graaltest:948]    classlist:     524.06 ms,  0.37 GB
[graaltest:948]        (cap):     365.60 ms,  0.37 GB
[graaltest:948]        setup:     557.88 ms,  0.37 GB
Error: Unable to compile C-ABI query code. Make sure native software development toolchain is installed on your system.
Error: Use -H:+ReportExceptionStackTraces to print stack
  • とりあえずverbose
$ native-image --verbose GraalTest
Build on Server(pid: 948, port: 33429)
SendBuildRequest [
-task=com.oracle.svm.hosted.NativeImageGeneratorRunner
-imagecp
/usr/local/graalvm-ce/lib/svm/builder/svm-llvm.jar:/usr/local/graalvm-ce/lib/svm/builder/graal-llvm.jar:/usr/local/graalvm-ce/lib/svm/builder/llvm-wrapper-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/javacpp-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/llvm-platform-specific-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/svm.jar:/usr/local/graalvm-ce/lib/svm/builder/objectfile.jar:/usr/local/graalvm-ce/lib/svm/builder/pointsto.jar:/usr/local/graalvm-ce/lib/svm/library-support.jar:/home/ec2-user/java
-H:Path=/home/ec2-user/java
-H:CLibraryPath=/usr/local/graalvm-ce/lib/svm/clibraries/linux-amd64
-H:Class=GraalTest
-H:Name=graaltest
]
[graaltest:948]    classlist:     486.59 ms,  0.37 GB
[graaltest:948]        (cap):     317.02 ms,  0.37 GB
[graaltest:948]        setup:     466.29 ms,  0.37 GB
Error: Unable to compile C-ABI query code. Make sure native software development toolchain is installed on your system.
Error: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception
Error: Image build request failed with exit status 1
com.oracle.svm.driver.NativeImage$NativeImageError: Image build request failed with exit status 1
        at com.oracle.svm.driver.NativeImage.showError(NativeImage.java:1527)
        at com.oracle.svm.driver.NativeImage.build(NativeImage.java:1289)
        at com.oracle.svm.driver.NativeImage.performBuild(NativeImage.java:1250)
        at com.oracle.svm.driver.NativeImage.main(NativeImage.java:1209)
        at com.oracle.svm.driver.NativeImage$JDK9Plus.main(NativeImage.java:1707)

エラー文言でぐぐったけどWindows系の対処方法しかなかった

解決

  • doc はちゃんと読もうね
For compilation native-image depends on the local toolchain, so please make sure: glibc-devel, zlib-devel (header files for the C library and zlib) and gcc are available on your system.
  • 下記を実行
sudo yum install glibc-devel
sudo yum install zlib-devel
sudo yum install gcc
  • 再実行、うまくいったっぽい
$ native-image --verbose GraalTest
Build on Server(pid: 948, port: 33429)
SendBuildRequest [
-task=com.oracle.svm.hosted.NativeImageGeneratorRunner
-imagecp
/usr/local/graalvm-ce/lib/svm/builder/svm-llvm.jar:/usr/local/graalvm-ce/lib/svm/builder/graal-llvm.jar:/usr/local/graalvm-ce/lib/svm/builder/llvm-wrapper-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/javacpp-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/llvm-platform-specific-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/svm.jar:/usr/local/graalvm-ce/lib/svm/builder/objectfile.jar:/usr/local/graalvm-ce/lib/svm/builder/pointsto.jar:/usr/local/graalvm-ce/lib/svm/library-support.jar:/home/ec2-user/java
-H:Path=/home/ec2-user/java
-H:CLibraryPath=/usr/local/graalvm-ce/lib/svm/clibraries/linux-amd64
-H:Class=GraalTest
-H:Name=graaltest
]
[graaltest:948]    classlist:     586.08 ms,  0.37 GB
[graaltest:948]        (cap):   1,519.61 ms,  0.37 GB
[graaltest:948]        setup:   4,825.24 ms,  0.37 GB
[graaltest:948]   (typeflow):  20,870.66 ms,  0.37 GB
[graaltest:948]    (objects):  12,267.76 ms,  0.37 GB
[graaltest:948]   (features):     500.71 ms,  0.37 GB
[graaltest:948]     analysis:  34,038.85 ms,  0.37 GB
[graaltest:948]     (clinit):     459.90 ms,  0.37 GB
[graaltest:948]     universe:   1,395.97 ms,  0.37 GB
[graaltest:948]      (parse):   7,364.63 ms,  0.37 GB
[graaltest:948]     (inline):   4,375.56 ms,  0.37 GB
[graaltest:948]    (compile):  33,904.71 ms,  0.37 GB
[graaltest:948]      compile:  46,654.57 ms,  0.37 GB
[graaltest:948]        image:   2,174.40 ms,  0.37 GB
[graaltest:948]        write:     358.19 ms,  0.37 GB
[graaltest:948]      [total]:  90,857.98 ms,  0.37 GB
  • 作成したimageを実行してみる
$ ./graaltest
Hello World!

今更

  • Javaディストリビューション何使うか迷ってたけど、GraalVM使うと OracleOpenJDK入ってみるみたい
  • AWSだからAmazon Corret使うべきかなとか迷っている
  • Javaをそのままそっくり入れ替えたら動くのかな
  • Applicationを動作させるためにはRootDirectoryにこのimage設置すればいい?
  • JDKの最新版に追いつけるのか問題が自分の中で勃発している。

JDKのあれこれ

Oracle JDKライセンスの有償化

リリースサイクル変更にともない、Oracle JDK の運用には有償サポートが必要になると発表された。

c.f. https://www.oracle.com/technetwork/jp/articles/java/ja-topics/jdk-release-model-4487660-ja.html

これによって「Java有償化混乱」が起きたけど、実際違う。無料で使える。

OracleJDKの機能はOpenJDKに提供されていて、有償機能として提供されていた機能もオープンソース化 されている。

そして、OpenJDKがOracleJDKに追従するためには半年ごとのアップデートが必要ということになり、現実的な運用にはOracleJDKの有償ライセンスが必要だよね。という発想のもと起きた混乱

実際にはAdoptOpenJDKとかAmazonがOpenJDKビルドを提供しているので、Java 8/11 のメンテナンスがメンテナンスが継続されている。

なので、OracleJDKの有償化はコミュニティからのディストリビューションでの提供による形にシフトしていったという方が正しい解釈になる。

まぁ、実際びびった。

JDKディストリビューション

いずれもマルチプラットフォームに対応している。

各ベンダはOracleのリリースに伴って競い合うようにjdkの提供を行っている。

AdoptOpenJDKにはOpenJDKの則ったJVMであるHotSpot版とIBMが支援するOSS JVMEclipse OpenJ9版がある。

後者だとIBMの商用サポートを得られることができる。

どのJDKディストリビューションを使用するか問題が出て来ているけど、将来的にはプラットフォーム依存が出てきそうかなと言うのが個人的な感想です。

FHS

FHS

LinuxにおけるファイルシステムのレイアウトはFHS(Filesystem Hierarchy Standard)で標準化されている。

主要ディストリビューションではFHSをサポートしている。

ルートファイルシステムに含まれなければならないディレクト

  • /bin
  • /sbin
  • /etc
  • /dev
  • /lib

/bin

基本的なコマンドを格納。一般ユーザでも実行可能。

cat chown cp などなど

/sbin

システム管理に必要なコマンドを格納。rootユーザのみが実行可能。

Shutdown fdisk fsck などなど

/etc

システムやアプリケーションの設定ファイルやスクリプトファイルを格納。

/dev

HDDやDVD-ROM等のデバイスファイルを格納。

/lib

共有ライブラリやカーネルモジュールを格納

/binや/sbinに必要なライブラリはここにある。

/media

DVD-ROM等のリムーバブルメディアのマウントポイントを配置

/mnt

一時的にマウントするファイルシステムのマウントポイントを配置

/opt

パッケージ管理の仕組みでプログラムがインストールされるディレクトリ。

パッケージが追加されていくことになるのでパーティションを分けた方が良い

/proc

カーネル内部の情報にアクセスするための仮想的なファイルシステム

実際にはディスクに存在しない。

root

rootユーザのディレクトリ。/home ファイルシステムがマウントできなくなった場合などでもメンテナンスができるよう、/homeとは別になる

/boot

起動に必要な設定やカーネルイメージが配置される。

起動時にBIOSの制限を受けないために、ルートファイルシステムとは別にディスク先頭に配置されることがある。

/home

ユーザごとのホームディレクトリを格納。

ユーザが増える場合を考慮して別のパーティションにした方が良い。

/tmp

一時ファイルが格納される。全てのユーザが書き込みと読み込みを行える。

/var

ログファイルなど頻繁に書き込みが発生するファイルが配置される。

パーティションは分けた方がいい。

/usr

コマンドやユーティリティが格納される。

  • /usr/bin

一般ユーザが使用するコマンドを配置。

  • /usr/sbin

rootユーザが使用するコマンドを配置。

緊急メンテナンス等に必須ではないコマンドが配置される。

  • /usr/lib

プログラムの実行に必要なライブラリが配置される。

  • /usr/local

ローカルシステムで必要とされるコマンドやライブラリ等を配置。

中にはbin sbin/lib などのディレクトリがある。

  • usr/share

システムアーキテクチャに依存してしないファイルを配置。

/usr/share/man には manコマンドで使用するマニュアルがある。

  • /usr/src

Linuxカーネルソース等のソースコードを配置。

ブートローダ

ブートローダ

  • HDD等のストレージからOSを読み込んで起動するプログラムのこと。
  • LinuxにおけるブートローダGRUB(Grand Unified Bootloader)で、0.9.x系をGRUB Legacy、1.9.x系のGRUB2がある。
  • GRUB Legacy と GRUB2には設定ファイル名等差異があるので注意。

GRUBのインストール

  • /dev/sda の MBR(起動ドライブの先頭のセクタ)領域にGRUBインストールする場合
$ grub-install /dev/sda
  • GRUB Legacyの設定ファイルは /boot/grub/menu.list で直接ファイルを編集して設定変更を行う。

  • GRUB 2 の設定ファイルは /boot/grub/grub.cfg だが、直接のファイル修正は行わない。

  • /etc/default/gurb で設定を行い下記のコマンドを実行して grub.cfgファイルを作成する。
$ grub-mkconfig -o /boot/grub/grub.cfg
$ grub2-mkconfig -o /boot/grub/grub.cfg

ブートオプションの指定

  • ブートローダの起動時にシステムの動作を指定するオプションが存在する。
  • GRUBでブートオプションを指定するには、起動時の画面で「E」を押す。
$ grub append > ro root=/dev/VolGroup00/LogVol100 rhgb quiet
オプション 説明
root=デバイス ルートパーティションをしてマウントするデバイス
nousb USBデバイスを使用しない
single シングルユーザモードで起動
1 ~ 5 ランレベルの指定

BIOS

BIOSUEFI

BIOS

Basic Input Output Systemの略。

  • OSを起動するためのプログラムをディスクから読み込んで実行する。
  • バイスの動作を設定する。
  • 基本的な入出力の制御を行う。

現在ではBIOSの後継となるIntelが開発したUEFI(Unified Extensible Firmware Interface)が主流となっている。

UEFIもごちゃ混ぜでBIOSとして呼ばれることが多い。

UEFIのメリットは以下の2点

  • OSの起動ドライブの容量制限の緩和(BIOSは2TB)
  • GUIベースでのセットアップができる。

システム起動までの流れ

電源投入からシステム起動までの一連の処理をブートもしくはブートストラップと言う。 電源投入後の流れ

BIOSが起動

  • ハードウェアの最低限の認識をして起動デバイスの優先順位の決定や初期化を行う。
  • 起動する順番にデバイスの先頭セクタにあるMBR(Master Boot Record) を読み込みブートローダに制御を移す。

ブートローダ

カーネル

  • メモリの初期化やシステムクロックの設定を行い、仮のルートファイルシステムをマウントする。
  • カーネルは最初のプロセスであるinit or systemd を実行する。

init systemd

  • サービスを順次起動する。

  • SysVinit

    • カーネルから起動されるinitプロセスとして「/sbin/init」を起動する。
    • initは起動されると、設定ファイル「/etc/inittab」の記述に基づいて、自動起動するべきプロセスを立ちあげるなど、アプリケーションレベルの初期化を行う。
  • systemd

    • systemdで扱う処理はUnit単位で管理する。Unitは設定ファイルであり、Unitの設定に従ってsystemd自体が処理を行う。
    • systemdはUpstartと同様、各サービスを並列起動することができ、順次起動していくSysVinitに比べて高速なシステム起動や停止が行える。
    • cgroupsというLinuxカーネルの機能によってプロセスのリソースを管理する。

tar覚書

tarのオプション覚えられない問題

  • tarに限らずコマンドのオプション覚えられない。
  • 多分省略前を覚えれば行けるのではないかと思ってまとめておく
オプション 内容 省略前
-c 新しいアーカイブを作成 create
-x アーカイブを展開 extract
-t アーカイブの内容を一覧表示 test
-f アーカイブのファイル名表示 file
-v 処理の詳細を表示 verbose
-z gzipを通して圧縮・展開 gzip
-j bzip2を通して圧縮・展開
-J xzを通して圧縮・展開

xzのオプション覚えられない問題

  • xz形式でファイルを圧縮・解凍でするときに使う
  • 引数なしで圧縮する
  • 拡張子は「.xz」
  • bzip2よりも圧縮率が高い
オプション 内容 省略前
-d, --decompress 圧縮ファイルの展開(unxzコマンドでも解凍できる) decompress(解凍する)
-k , --keep 圧縮・展開後に元のファイルを削除しない keep
-l , --list 圧縮ファイルの情報を表示する list

bzip2

  • bzip2形式でファイルを圧縮する時に使う
  • 拡張子は「.bz2」
オプション 内容 省略前
-d, 圧縮ファイルの展開(bunzipでも解凍できる) decompress(解凍する)
-c 元ファイルを残して標準出力に表示 ?

gzip

  • gzip形式でファイルを圧縮するときに使う
  • 拡張子は「.gz」
オプション 内容 省略前
-d 圧縮ファイルの展開(gunzipコマンドでも解凍できる) decompress(解凍する)
-c 元ファイルを残して標準出力に表示する ?
-r ディレクトリ内の全てのファイルを再起的にそれぞれ圧縮 recursive

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アドレスを使用してアクセスしなければならない。

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