OSS Fan ~OSSでLinuxサーバ構築~

作成日: 2016/10/18

OSSでLinuxサーバ構築

Docker 1.10.3でDockerfileからWildFlyのDockerイメージを生成しコンテナを起動

トップページOSSでLinuxサーバ構築 > Docker 1.10.3でDockerfileからWildFlyのDockerイメージを生成しコンテナを起動
このエントリーをはてなブックマークに追加

概要

 Docker 1.10.3を利用して、WildFly 10.0.0が稼働するコンテナを作成します。 新規でDockerfileを作成し、CentOSの公式DockerイメージをベースにWildFlyをインストールし、Dockerイメージを生成する順序を記述します。 生成したDockerイメージからDockerコンテナを起動し、クライアントPCからブラウザでアクセスしてウェルカムページが表示されるところまでを確認します。

構成

サーバ構成

OSバージョン

■ホストOS
CentOS 7.2.1511 x86_64
■コンテナOS
centos:7.2.1511

ソフトウェア・パッケージ一覧

 ホストOSには以下のパッケージがインストール済みであることが前提です。

  • docker-1.10.3-46.el7.centos.10.x86_64.rpm

 コンテナOSには以下のパッケージをインストールします。 インストールはDockerfileを利用して後述の手順の中で実行します。 なお、バージョンは2016年10月2日時点のものです。

  • wget-1.14-10.el7_0.1.x86_64.rpm
  • jdk-8u92-linux-x64.rpm
  • wildfly-10.0.0.Final.tar.gz

クライアント構成

OSバージョン

Windows 10 Pro 64bit

ソフトウェア・パッケージ一覧

  • Google Chrome 53

サーバ構築

設定

(1) Dockerfileの作成

 /data/dockerfile/ ディレクトリ内にDockerfile(ファイル名はdockerfile_co72_wildfly1000)を作成します。 Dockerfileに記述する主な内容は、 Oracle JDKとWildFlyをインストールし、コンテナ外部からアクセスできるように最低限の初期設定までとします。 まずはJDKとWildFlyのインストーラ・ファイルを公式サイトからダウンロードするためのツールとして wget をインストールします。 wgetコマンドでJDKとWildFlyのインストーラ・ファイルをダウンロードします。 ダウンロードしたインストーラ・ファイルを使用してインストールを実行します。 WildFlyのプロセスを起動するためのOSユーザとして wildfly ユーザを作成します。 WildFlyの設定ファイル(standalone.xml)を編集し、リスニングアドレスを変更します。 この設定を変更しないと、コンテナの外部からWildFlyにアクセスできません。

# cd /data/dockerfile/
# vi dockerfile_co72_wildfly1000
ファイル名:/data/dockerfile/dockerfile_co72_wildfly1000
※ファイルを新規作成※
FROM centos:7.2.1511
MAINTAINER ranocci
RUN mkdir /media/installer
RUN yum -y install wget
RUN cd /media/installer/; wget -q --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.rpm"
RUN cd /media/installer/; wget -q http://download.jboss.org/wildfly/10.0.0.Final/wildfly-10.0.0.Final.tar.gz
RUN rpm -ihv /media/installer/jdk-8u92-linux-x64.rpm
RUN tar zxf /media/installer/wildfly-10.0.0.Final.tar.gz -C /opt/
RUN groupadd -g 1001 wildfly
RUN useradd -u 1001 -g 1001 wildfly
RUN chown -R wildfly:wildfly /opt/wildfly-10.0.0.Final/
RUN sed -e "s/127.0.0.1/0.0.0.0/g" /opt/wildfly-10.0.0.Final/standalone/configuration/standalone.xml > /opt/wildfly-10.0.0.Final/standalone/configuration/standalone.tmp
RUN mv /opt/wildfly-10.0.0.Final/standalone/configuration/standalone.tmp /opt/wildfly-10.0.0.Final/standalone/configuration/standalone.xml
EXPOSE 8080
CMD ["/opt/wildfly-10.0.0.Final/bin/standalone.sh"]

(2) Dockerイメージの生成

 作成したDockerfile(ファイル名はdockerfile_co72_wildfly1000)からDockerイメージを生成します。 Dockerイメージの名前は『作成者/イメージ名:タグ』の形式に倣って『ranocci/wildfly:10.0.0』とします。

# cd /data/dockerfile/
# ls -l
total 4
-rw-r--r--. 1 root root 1060 Oct  2 03:04 dockerfile_co72_wildfly1000
# docker build -f ./dockerfile_co72_wildfly1000 -t ranocci/wildfly:10.0.0 --no-cache=true .
Sending build context to Docker daemon 3.072 kB
Step 1 : FROM centos:7.2.1511
 ---> feac5e0dfdb2
Step 2 : MAINTAINER ranocci
 ---> Running in febb73ab2482
 ---> 50c6b205526b
Removing intermediate container febb73ab2482
Step 3 : RUN mkdir /media/installer
 ---> Running in 07956d7e1a3e
 ---> 96e14ea8add8
Removing intermediate container 07956d7e1a3e
Step 4 : RUN yum -y install wget
 ---> Running in a06d33d40803
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: centos.ustc.edu.cn
 * extras: centos.ustc.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.14-10.el7_0.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package        Arch             Version                   Repository      Size
================================================================================
Installing:
 wget           x86_64           1.14-10.el7_0.1           base           545 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 545 k
Installed size: 2.0 M
Downloading packages:
warning: /var/cache/yum/x86_64/7/base/packages/wget-1.14-10.el7_0.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for wget-1.14-10.el7_0.1.x86_64.rpm is not installed
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-2.1511.el7.centos.2.10.x86_64 (@CentOS)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : wget-1.14-10.el7_0.1.x86_64                                  1/1
install-info: No such file or directory for /usr/share/info/wget.info.gz
  Verifying  : wget-1.14-10.el7_0.1.x86_64                                  1/1

Installed:
  wget.x86_64 0:1.14-10.el7_0.1

Complete!
 ---> 01b80c80fcc3
Removing intermediate container a06d33d40803
Step 5 : RUN cd /media/installer/; wget -q --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.rpm"
 ---> Running in 3c0a082c76ba
 ---> 6927b7d785d1
Removing intermediate container 3c0a082c76ba
Step 6 : RUN cd /media/installer/; wget -q http://download.jboss.org/wildfly/10.0.0.Final/wildfly-10.0.0.Final.tar.gz
 ---> Running in ec3b31c470e2
 ---> 3c3c5a18e84d
Removing intermediate container ec3b31c470e2
Step 7 : RUN rpm -ihv /media/installer/jdk-8u92-linux-x64.rpm
 ---> Running in 2776ce38d293
Preparing...                          ########################################
Updating / installing...
jdk1.8.0_92-2000:1.8.0_92-fcs         ########################################
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...
 ---> 17fb18a3fd8d
Removing intermediate container 2776ce38d293
Step 8 : RUN tar zxf /media/installer/wildfly-10.0.0.Final.tar.gz -C /opt/
 ---> Running in 94c4a6c520bf
 ---> e102ef68cbac
Removing intermediate container 94c4a6c520bf
Step 9 : RUN groupadd -g 1001 wildfly
 ---> Running in adb24617efeb
 ---> 8de9c868e3d7
Removing intermediate container adb24617efeb
Step 10 : RUN useradd -u 1001 -g 1001 wildfly
 ---> Running in 2e71d00e79b0
 ---> fe5e409aa245
Removing intermediate container 2e71d00e79b0
Step 11 : RUN chown -R wildfly:wildfly /opt/wildfly-10.0.0.Final/
 ---> Running in 6af5960dbfc2
 ---> 5ad469feea34
Removing intermediate container 6af5960dbfc2
Step 12 : RUN sed -e "s/127.0.0.1/0.0.0.0/g" /opt/wildfly-10.0.0.Final/standalone/configuration/standalone.xml > /opt/wildfly-10.0.0.Final/standalone/configuration/standalone.tmp
 ---> Running in 1ad94d2a027a
 ---> f65af7eae302
Removing intermediate container 1ad94d2a027a
Step 13 : RUN mv /opt/wildfly-10.0.0.Final/standalone/configuration/standalone.tmp /opt/wildfly-10.0.0.Final/standalone/configuration/standalone.xml
 ---> Running in 52a942b222de
 ---> 64ddd1257004
Removing intermediate container 52a942b222de
Step 14 : EXPOSE 8080
 ---> Running in 6c600709362f
 ---> cbf84d179228
Removing intermediate container 6c600709362f
Step 15 : CMD /opt/wildfly-10.0.0.Final/bin/standalone.sh
 ---> Running in 32513b0ea4cd
 ---> c58db49108e6
Removing intermediate container 32513b0ea4cd
Successfully built c58db49108e6

 最後に「Successfully built」と表示されたらビルド成功です。 これでDockerイメージが生成されました。

(3) 生成したDockerイメージの確認

 Dockerイメージを一覧表示し、『ranocci/wildfly』という名前のイメージが生成されていることを確認します。

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ranocci/wildfly     10.0.0              c58db49108e6        9 minutes ago       1.278 GB ←これが生成された
docker.io/centos    6                   f07f6ca555a5        3 weeks ago         194.6 MB
docker.io/centos    centos6             f07f6ca555a5        3 weeks ago         194.6 MB
docker.io/centos    7                   980e0e4c79ec        3 weeks ago         196.7 MB
docker.io/centos    centos7             980e0e4c79ec        3 weeks ago         196.7 MB
docker.io/centos    latest              980e0e4c79ec        3 weeks ago         196.7 MB
docker.io/centos    5.11                b424fba01172        4 weeks ago         284.1 MB
docker.io/centos    centos5.11          b424fba01172        4 weeks ago         284.1 MB
docker.io/centos    6.6                 d03626170061        4 weeks ago         202.6 MB
docker.io/centos    centos6.6           d03626170061        4 weeks ago         202.6 MB
docker.io/centos    6.7                 ab44245321a8        4 weeks ago         190.6 MB
docker.io/centos    centos6.7           ab44245321a8        4 weeks ago         190.6 MB
docker.io/centos    6.8                 0cd976dc0a98        4 weeks ago         194.5 MB
docker.io/centos    centos6.8           0cd976dc0a98        4 weeks ago         194.5 MB
docker.io/centos    7.0.1406            16e9fdecc1fe        4 weeks ago         210.2 MB
docker.io/centos    centos7.0.1406      16e9fdecc1fe        4 weeks ago         210.2 MB
docker.io/centos    7.1.1503            285396d0a019        4 weeks ago         212.1 MB
docker.io/centos    centos7.1.1503      285396d0a019        4 weeks ago         212.1 MB
docker.io/centos    7.2.1511            feac5e0dfdb2        4 weeks ago         194.6 MB
docker.io/centos    centos7.2.1511      feac5e0dfdb2        4 weeks ago         194.6 MB
docker.io/centos    5                   1ae98b2c895d        4 weeks ago         284.7 MB
docker.io/centos    centos5             1ae98b2c895d        4 weeks ago         284.7 MB

(4) Dockerコンテナの起動

 生成したDockerイメージからDockerコンテナを起動します。

# docker run -d --name ap01 -u wildfly -p 8080:8080 ranocci/wildfly:10.0.0 /opt/wildfly-10.0.0.Final/bin/standalone.sh
6158e0b0f2a9666956c367329e7b72657c56195e5e84566f8e1545a62eb1e804
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
6158e0b0f2a9        ranocci/wildfly:10.0.0   "/opt/wildfly-10.0.0."   16 seconds ago      Up 15 seconds       0.0.0.0:8080->8080/tcp   ap01

(5) Dockerコンテナの起動確認

 Dockerコンテナが起動したことを確認します。 Dockerコンテナが起動し、コンテナIDが割り当てられていること、ステータスがUPになっていることを確認します。 また、8080番ポートでDockerのプロキシがリッスンしていることを確認します。

# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
6158e0b0f2a9        ranocci/wildfly:10.0.0   "/opt/wildfly-10.0.0."   7 minutes ago       Up 7 minutes        0.0.0.0:8080->8080/tcp   ap01
# ss -tanp
# ss -tanp
State      Recv-Q Send-Q                         Local Address:Port                                        Peer Address:Port
LISTEN     0      128                                        *:22                                                     *:*                   users:(("sshd",pid=1318,fd=3))
LISTEN     0      100                                127.0.0.1:25                                                     *:*                   users:(("master",pid=1982,fd=13))
ESTAB      0      320                           160.16.201.244:22                                       223.132.124.212:52332               users:(("sshd",pid=17684,fd=3))
LISTEN     0      128                                       :::8080                                                  :::*                   users:(("exe",pid=17830,fd=7)) ←WildFlyがリッスンしている
LISTEN     0      128                                       :::22                                                    :::*                   users:(("sshd",pid=1318,fd=4))
LISTEN     0      100                                      ::1:25                                                    :::*                   users:(("master",pid=1982,fd=14))

 以上でDockerイメージの生成とWildFlyが稼働するDockerコンテナの起動は終わりです。

動作テスト

(1) Dockerコンテナの停止・起動テスト

 Apacheが稼働するDockerコンテナの停止・起動確認を行います。

# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
6158e0b0f2a9        ranocci/wildfly:10.0.0   "/opt/wildfly-10.0.0."   2 weeks ago         Up 27 minutes       0.0.0.0:8080->8080/tcp   ap01
# docker stop ap01
ap01
# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
# docker start ap01
ap01
# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
6158e0b0f2a9        ranocci/wildfly:10.0.0   "/opt/wildfly-10.0.0."   2 weeks ago         Up 5 seconds        0.0.0.0:8080->8080/tcp   ap01

(2) Dockerコンテナへのログイン確認

 稼働中のDockerコンテナに接続して、コンテナ内のCentOS上でWildFlyの稼働状態を確認します。

# docker exec -i -t ap01 /bin/bash
[wildfly@6158e0b0f2a9 /]$ id
uid=1001(wildfly) gid=1001(wildfly) groups=1001(wildfly) ←wildflyユーザでコンテナが起動している
[wildfly@6158e0b0f2a9 /]$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core) ←コンテナのOSはCentOS 7.2.1511
[wildfly@6158e0b0f2a9 /]$ uname -a
Linux 6158e0b0f2a9 3.10.0-327.36.1.el7.x86_64 #1 SMP Sun Sep 18 13:04:29 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux ←カーネルバージョン
[wildfly@6158e0b0f2a9 /]$ ps -ef | grep java
wildfly     49     1  2 15:55 ?        00:00:12 java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/opt/wildfly-10.0.0.Final/standalone/log/server.log -Dlogging.configuration=file:/opt/wildfly-10.0.0.Final/standalone/configuration/logging.properties -jar /opt/wildfly-10.0.0.Final/jboss-modules.jar -mp /opt/wildfly-10.0.0.Final/modules org.jboss.as.standalone -Djboss.home.dir=/opt/wildfly-10.0.0.Final -Djboss.server.base.dir=/opt/wildfly-10.0.0.Final/standalone ←WildFlyのプロセスが起動している
wildfly    165   146  0 16:05 ?        00:00:00 grep --color=auto java
[wildfly@6158e0b0f2a9 /]$ exit ←確認が終わったのでコンテナを抜ける
exit
#

(3) クライアントPCからのブラウザアクセス

 クライアントPCからDockerコンテナ内のWildFlyにブラウザでアクセスし、ウェルカムページが表示されることを確認します。 URLは「http://ホスト名:8080」で接続を行います。

 以上でWildFlyが稼働するDockerコンテナの動作確認は終わりです。

プロフィール

らのっち

損害保険会社のIT企画部に勤務するSEです。OSSを勉強中です。

<所属>
日本PostgreSQLユーザ会とくしまOSS普及協議会


第000414号