"如何将WebLogic服务器运行于Docker容器中"
应用容器化技术是如今开发者社区讨论最热门的话题。这个技术旨在将应用作为单一的服务运行在容器中。Docker就是这样一种应用容器。此外容器技术可运用于流行的微服务架构模式中。对于Java EE开发者来说有一个好消息:WebLogic Server 12c (12.1.3) 全面支持Docker容器。
对于新手来说,理解应用容器以及传统的虚拟化技术、应用、系统容器和Docker这些术语之间的区别和定义会有一点困难,所以这里提供一些链接希望能够起到帮助作用:
∙ 系统容器与应用容器:blog.risingstack/operating-system-containers-vs-application-containers/
∙ Docker基础:(docs.docker/userguide/)
∙ Docker CLI 参考:(docs.docker/reference/commandline/cli/)
本文的目的是教你从零开始一步一步将WebLogic Server运行在Docker容器中。我们将会创建
WebLogic Domain的Docker镜像并运行WebLogic Admin Server容器。我们将在以下的示例中使用它们。
由于Docker依赖于Linux的特殊功能,为了将Weblogic运行于Docker中,你可以在这里下载使用现成的Virtual BoxVM: acle/technetwork/server-storage/vm/enterprise-linux-090498.html。你也可以配置和使用自己的OEL VM。请注意如下提供了一个在Oracle Linux Administration Guide中的关于如何在Oracle Linux中安装、配置和使用Docker的一个很棒的文档:
∙ For Linux Release 7(acle/cd/E52668_01/E54669/html/section_kfy_f2z_fp.html)
∙ For Linux Release 6(acle/cd/E37670_01/E37355/html/section_kfy_f2z_fp.html)
1.第一步是在Linux VM中安装Docker。最简单的方式是使用Public Yum和在/pos.po文件中启用ol6_addons repository。使用编辑器打开它并在public_ol6_latest下面添加:
[ol6_addons]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=acle/repo/OracleLinux/OL6/addons/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
然后使用Yum命令安装Docker:
# yum install docker
2.安装完成后,我们需要做一些初始化配置:
如果你使用了代理,不要忘记编辑/etc/sysconfig/docker并添加:
export HTTP_PROXY="proxy_URL:port"
export HTTPS_PROXY="proxy_URL:port"
启动Docker服务并配置开机启动:
# service docker start
# chkconfig docker on
最后检查服务是否已启动:
# service docker status
docker (pid 9044)
3.在使用Docker时我们需要sudo权限。每次输入sudo会很麻烦,所以可以将用户添加到docker组:
创建docker组:
# groupadd docker
重启docker服务:
# service docker restart
将需要使用Docker的用户添加到docker组:
# usermod -a -G docker <your_user>
4.我们将使用Oracle在GitHub提供的脚本来创建Weblogic Domain的Docker镜像。最简单的方式就是从上述的代码仓库中复制一份。
如果你的VM中没有安装Git可以使用如下命令安装:
# yum install git
安装完成后使用git clone命令获取一份docker仓库:
$ git clone github/oracle/docker.git
Initialized empty Git repository in /home/oracle/GitRep/docker/.git/
remote: Counting objects: 799, done.
remote: Total 799 (delta 0), reused 0 (delta 0), pack-reused 799
Receiving objects: 100% (799/799), 202.80 MiB | 1.58 MiB/s, done.
Resolving deltas: 100% (314/314), done.
浏览../docker/WebLogic目录并到buildDockerImage.sh脚本,我们将用它来创建WebLogic的Docker镜像。使用这份脚本需要对应的开发者创建镜像的Dockerfiles和WebLogic的普通发布版本。在这里为了开发者的目的我们将使用开发者版本。请注意你需要下载WebLogic的开发者Zip发行包(wls1213_dev_update3.zip)和Linux rpm package of Java 8u51 JDK (jdk-8u51-linux-x64.rpm),然后复制到../docker/OracleWebLogic/dockerfiles/12.1.3 directory.你可以在这里下载它们:
∙ WebLogic Zip Distribution for Developers (acle/technetwork/middleware/weblogic/downloads/index.html)
∙ JDK 8u51 (acle/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u51-oth-JPR)
你可以在README.md文件中获得更多信息和参考(或者这里:github/oracle/docker/tree/master/OracleWebLogic)
5.linux安装oracle依赖包在本文中我们将使用WebLogic Server的开发者版本来创建镜像。在你完成和复制好需要的packages后你需要进入../docker/OracleWebLogic/目录并运行buildDockerImage.sh:
$ sudo sh buildDockerImage.sh -d
等待直到执行完然后使用docker images命令检查创建好的有了标记的镜像(oracle/weblogic:12.1.3-dev):
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
oracle/weblogic 12.1.3-dev 8ed51ee07c61 About a minute ago 2.084 GB
oraclelinux 7 8a2b759d9dd8 9 weeks ago 189.5 M
6.到目前为止我们已经创建好了WebLogic Domain镜像,但是还未配置WebLogic Domain。所以下一步我们将扩展创建好的镜像并创建WebLogic Domain镜像。
你需要进入../docker/OracleWebLogic/samples/12c-domain目录执行buildDockerImage.sh脚本:
$ sudo sh buildDockerImage.sh -d
等待直到执行完然后使用docker images命令检查创建好的有了标记的镜像(samplewls:12.1.3):
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
samplewls 12.1.3 36e1c85448ac 52 seconds ago 2.085 GB
oracle/weblogic 12.1.3-dev 8ed51ee07c61 22 minutes ago 2.084 GB
oraclelinux 7 8a2b759d9dd8 9 weeks ago 189.5 MB
7.至此我们已经创建好了基于WebLogic开发者ZIP发行版的WebLogic Domain Docker镜像。现在我们将运行WebLogic Admin Server容器。使用docker run命令来运行:
$ docker run -d samplewls:12.1.3
6c53e54e2605191e1823736fe2b0819d4e68c93eb988d74be773b1514f0e5663
注意,那个-d选项表示在后台运行容器并返回容器ID。
例子中使用的Dockerfiles定义startWebLogic.sh为默认的CMD。这是用来启动WebLogic Admin Server的命令。
你可以使用docker logs命令以容器id最为参数来检查WebLogic Admin Server进程的STUOUT:
docker logs <container_id>
为了以后使用并远程服务器上运行容器或者如果你想本地运行但是在你的电脑上绑定端口,你需要为Admin Server暴露端口和IP地址,因为你经常需要于Docker进行交互。你可以通过docker inspect命令来获得运行中的容器的IP地址信息:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论