この記事について 2017.06.22
この記事を書いた当初(2016.04.18)は流行りのDockerにまずは入門せねばという気持ちで書いただけです。
2017.06.22 現在、「まず参考にすべきではない」と言うことができます。
- Dockerfileなどを定義してコンテナイメージを作ってない(コード化してない)
- Docker for Mac の登場により、docker-machine を作る必要が無くなってる。(ケースバイケースですが本記事の目標を達成する上では不要かと。)
目標
- Dockerの基本操作について理解・把握する
- WildFly用 の Dockerイメージを作成する ※Dockerfileでイメージをビルドするわけではなく、手動構築なので、Dockerfile化はご自身でどうぞ
前提条件
- 一から構築しなくても、DockerHubでJBossが公開してるイメージをpullしてくれば終わりじゃんとか言わない
- 実行環境:OS X El Capitan
- インストールするソフト
- Docker
- VirtualBox -> 仮想OS(VM)実行/VMをDockerホストとして利用
やること一覧
- VM構築
- Dockerイメージを作成
- JDKインストール
- WildFlyインストール
概念を理解しとく
http://www.slideshare.net/TrisM/docker-41045742
Docker Lifecycle
構築
VM構築
"dev" という名前で VirtualBox の VM (docker-machine) 構築
- VirtualBox以外も AWSのEC2, MSのAzure, VMWareのvSphere等、標準で多数用意されてる。(https://github.com/docker/machine/tree/master/drivers)
- "boot2docker コマンド" は現在、非推奨。"docker-machine コマンド" を利用
- VMのOSは "boot2docker" (24MB程度の 軽量 Linux ディストリビューション) になるらしい。 なんとも、ややこしい。
$ docker-machine create --driver virtualbox dev
Running pre-create checks...
Creating machine...
(dev) Copying /Users/YOURNAME/.docker/machine/cache/boot2docker.iso to /Users/YOURNAME/.docker/machine/machines/dev/boot2docker.iso...
(dev) Creating VirtualBox VM...
(dev) Creating SSH key...
(dev) Starting the VM...
(dev) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect Docker to this machine, run: docker-machine env dev
構築したVM (docker-machine) を確認
$ docker-machine ls
NAME ACTIVE URL STATE URL SWARM DOCKER ERRORS
dev - virtualbox Running tcp://192.168.99.101:2376 v1.11.0
devの環境変数を確認/設定
- 環境変数を設定しておくことで OSXから、 docker コマンドで docker-machine (VM) の操作が可能
$ docker-machine env dev
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.101:2376"
export DOCKER_CERT_PATH="/Users/YOURNAME/.docker/machine/machines/dev"
export DOCKER_MACHINE_NAME="dev"
# Run this command to configure your shell:
# eval $(docker-machine env dev)
# 環境変数の設定方法は言われた通りの方法で設定
$ eval $(docker-machine env dev)
# 設定されているか確認しておく
$ env |grep DOCKER
DOCKER_HOST=tcp://192.168.99.101:2376
DOCKER_MACHINE_NAME=dev
DOCKER_TLS_VERIFY=1
DOCKER_CERT_PATH=/Users/YOURNAME/.docker/machine/machines/dev
CentOSのDockerイメージ取得/起動
# 最新版のDockerイメージ取得。
# バージョンを指定する場合は docker pull centos:VERSION
$ docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a3ed95caeb02: Pull complete
5989106db7fb: Pull complete
Digest: sha256:1b9adf413b3ab95ce430c2039954bb0db0c8e2672c48182f2c5b3d30373d5b71
Status: Downloaded newer image for centos:latest
# 持ってるイメージ一覧表示
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos latest sha256:778a5 2 weeks ago 196.7 MB
# イメージから "jee" というホスト名,コンテナ名で 起動(バックグラウンド)で起動
## -h : ホスト名指定オプション
## -d : コンテナをバックグラウンド起動オプション
## --name : コンテナ名指定オプション
$ docker run -h jee -itd --name jee centos /bin/bash
# 起動したコンテナプロセス表示
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
450a788cbf03 centos "/bin/bash" 7 minutes ago Up 3 minutes jee
# 起動したコンテナに接続 ※ docker attach だと、exitした時にdockerプロセスが落ちる
docker exec -it jee /bin/bash
適当に yum で 起動したコンテナ に必要なモノをインストールしていく
# jee コンテナ に JDK をインストール
[root@jee]# yum install java-1.8.0-openjdk-devel.x86_64
# jee コンテナ に WildFly をインストール
[root@jee]# wget -p /tmp/ http://download.jboss.org/wildfly/10.0.0.Final/wildfly-10.0.0.Final.tar.gz
[root@jee]# tar zxvf /tmp/wildfly-10.0.0.Final.tar.gz -C /opt
[root@jee]# useradd -s /sbin/nologin wildfly
# その他、やっておきたいことがあれば。
コンテナイメージの保存
$ docker commit jee jee/wildfly:1.0
構築したコンテナの起動
- docker run で
- 8080と9990のポートフォワード設定をして、DockerでWildFlyのプロセスを起動
- dockerプロセスを終了したら、イメージを破棄する場合は --rm オプションつける
docker run --rm -p 8080:8080 -p 9990:9990 -it jee/wildfly:1.0 /opt/wildfly/bin/standalone.sh -c standalone-full.xml -b 0.0.0.0 -bmanagement 0.0.0.0
VM (docker-machine)のポートフォワーディング設定
- VirtualBox で docker-machine の 8080, 99990 へのポートフォワーディング設定 をする
- https://www.google.co.jp/search?&q=virtualbox+ポートフォワーディング