はじめに
Dockerで実践! WebLogic Server 12.2.1のマルチテナントのサンプル環境を簡単に作成する でWebLogic ServerをDocker上で実行する方法を紹介しましたが、自分でこのDockerイメージに対して何か設定変更するやり方を紹介します。
今回はOSに対してzipとunzipツールをインストールする例ですが、WebLogicに対して追加で設定を入れて保存しておきたい場合などにも利用できます。
実行中のDockerコンテナにYUMでソフトウェアを追加インストール
WebLogicのDockerイメージには必要最小限のソフトウェアしかインストールされていないため、zipやunzipコマンドが使えません。でも何かといじってみるとこの程度のツールは必要になってきますよね。
今回は自分の都合でWebLogic 12.1.3のイメージをベースにしていますが、12.2.1でも基本的に同じ手順です。
まずWebLogic 12.1.3のコンテナをrunします。
$ docker run -d --name wlsadmin --hostname wlsadmin -p 8001:8001 1213-domain
次にこのコンテナの中にログインします。yumでツールをインストールするため、rootを指定してログインします。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
bf569b3d1614 1213-domain "startWebLogic.sh" 14 minutes ago Up 14 minutes
5556/tcp, 7001/tcp, 0.0.0.0:8001->8001/tcp wlsadmin
$ docker exec -it --user root bf569b3d1614 bash
[root@wlsadmin oracle]#
以下の通り、zipコマンドは使えない状態です。
[root@wlsadmin oracle]# unzip
bash: unzip: command not found
[root@wlsadmin oracle]# zip
bash: zip: command not found
yumでインストールします。
# 社内プロキシからのアクセスの場合は、以下のようにプロキシ設定をします。
[root@wlsadmin oracle]# export http_proxy=http://xxxxx:80
[root@wlsadmin oracle]# export https_proxy=http://xxxxx:80
[root@wlsadmin oracle]# yum install zip unzip
Loaded plugins: ulninfo
Resolving Dependencies
--> Running transaction check
---> Package unzip.x86_64 0:6.0-15.el7 will be installed
---> Package zip.x86_64 0:3.0-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================
Package Arch Version Repository Size
====================================================================================================
Installing:
unzip x86_64 6.0-15.el7 ol7_latest 166 k
zip x86_64 3.0-10.el7 ol7_latest 259 k
Transaction Summary
====================================================================================================
Install 2 Packages
Total download size: 424 k
Installed size: 1.1 M
Is this ok [y/d/N]: y
Downloading packages:
(1/2): unzip-6.0-15.el7.x86_64.rpm | 166 kB 00:00:01
(2/2): zip-3.0-10.el7.x86_64.rpm | 259 kB 00:00:01
----------------------------------------------------------------------------------------------------
Total 313 kB/s | 424 kB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : unzip-6.0-15.el7.x86_64 1/2
Installing : zip-3.0-10.el7.x86_64 2/2
Verifying : zip-3.0-10.el7.x86_64 1/2
Verifying : unzip-6.0-15.el7.x86_64 2/2
Installed:
unzip.x86_64 0:6.0-15.el7 zip.x86_64 0:3.0-10.el7
Complete!
コンテナイメージの保存 (docker commit)
これでツールがインストールされ、今回のコンテナにはツールが入っていますが、元となるDockerイメージには反映されていません。今のままだとこのコンテナを消して再び元のWebLogic 12.1.3のイメージからWebLogicをdocker runで起動すると、元通りになってしまいます。
docker commitコマンドを使い、Dockerイメージを更新します。
まず現状のイメージの確認。一番上の1213-domain:latestのイメージがいま利用しているものです。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
1213-domain latest 6a8a2a9373da 20 minutes ago 1.069 GB
oracle/weblogic 12.1.3-developer 04fdea8b08cf 24 minutes ago 1.068 GB
oraclelinux latest adf2d3d00fce 5 weeks ago 205.9 MB
hello-world latest 690ed74de00f 6 months ago 960 B
これを以下のようにdocker psで確認できるコンテナIDをつけてコミットします。コミット先は同じREPOSITORY名とTAG名を指定していますので、実質イメージを更新しています。
$ docker commit bf569b3d1614 1213-domain:latest
sha256:209de5a50274bd9baba8c3b5828e1bc88b9355346abc698c9a0a6705ab4865f6
コミット結果を確認すると、1213-domain:latestのイメージサイズが前の1.0GBから1.5GBに増えています。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
1213-domain latest 209de5a50274 9 seconds ago 1.552 GB
oracle/weblogic 12.1.3-developer 04fdea8b08cf 34 minutes ago 1.068 GB
oraclelinux latest adf2d3d00fce 5 weeks ago 205.9 MB
hello-world latest 690ed74de00f 6 months ago 960 B
想定外にイメージサイズが大きくなってしまいましたので、yumのキャッシュを消して再びイメージをdocker commitで更新してみます。
$ docker exec -it --user root bf569b3d1614 bash
[root@wlsadmin oracle]# yum clean
Loaded plugins: ulninfo
Error: clean requires an option: headers, packages, metadata, dbc
all
[root@wlsadmin oracle]# yum clean all
Loaded plugins: ulninfo
Cleaning repos: ol7_UEKR3 ol7_latest
Cleaning up everything
[root@wlsadmin oracle]# exit
$ docker commit bf569b3d1614 1213-domain:latest
sha256:17d0cc566fce0b9bf47eb3f7c45a2bead779783f939d7d623d8cd9f3b20bab93
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
1213-domain latest 17d0cc566fce 7 seconds ago 1.1 GB
<none> <none> 209de5a50274 2 minutes ago 1.552 GB
oracle/weblogic 12.1.3-developer 04fdea8b08cf 36 minutes ago 1.068 GB
oraclelinux latest adf2d3d00fce 5 weeks ago 205.9 MB
hello-world latest 690ed74de00f 6 months ago 960 B
今度は1213-domain:latestは1.1GBに減らすことができました。
(と思っていたのですが、noneの形で1.5GBのイメージが残ってしまっていました。docker commitする前にdocker stopしていなかったので、消えずにこのような形で残ってしまったのだと思います。あとで下のdocker stopとdocker rmしてからdocker rmi 209de5a50274 で1.5GBの方のイメージを削除できます)
新しく更新したイメージからコンテナを起動して、zipがちゃんと入っているかを確認してみます。
まずいま動いているコンテナを削除します。
$ docker stop bf569b3d1614
bf569b3d1614
$ docker rm bf569b3d1614
bf569b3d1614
新しくrunします。
$ docker run -d --name wlsadmin --hostname wlsadmin -p 8001:8001 1213-domain
110b18ae4f40f247abde29821a7ec31d832a59fbc3ee9a268efb28f814d10043
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
110b18ae4f40 1213-domain "startWebLogic.sh" 4 seconds ago Up 3 seconds
5556/tcp, 7001/tcp, 0.0.0.0:8001->8001/tcp wlsadmin
ログインしてzipコマンドが効くことが確認できました。
$ docker exec -it 110b18ae4f40 bash
[oracle@wlsadmin base_domain]$ zip
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
Zip 3.0 (July 5th 2008). Usage:
(省略)
以上