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
環境構築
設定
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
※ファイルを新規作成※
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"]
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イメージが生成されました。
生成した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
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
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コンテナの起動は終わりです。
動作テスト
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
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 #
クライアントPCからのブラウザアクセス
クライアントPCからDockerコンテナ内のWildFlyにブラウザでアクセスし、ウェルカムページが表示されることを確認します。 URLは「http://ホスト名:8080」で接続を行います。
以上でWildFlyが稼働するDockerコンテナの動作確認は終わりです。