info
我的 Docker 环境信息如下:
- [root@localhost ~]# docker info -f "
- OSType:
- {{.OperatingSystem}} {{.Architecture}} {{.KernelVersion}}
- DockerVersion:
- {{.ServerVersion}}
- Mirrors: {{range .RegistryConfig.Mirrors}}
- {{.}}{{end}}"
- OSType:
- CentOS Linux 7 (Core) x86_64 3.10.0-957.21.3.el7.x86_64
- DockerVersion:
- 19.03.8
- Mirrors:
- http://ovfftd6p.mirror.aliyuncs.com/
- http://registry.docker-cn.com/
- http://docker.mirrors.ustc.edu.cn/
- http://hub-mirror.c.163.com/
Docker 安装
- # 依赖
- yum install -y yum-utils device-mapper-persistent-data lvm2
- # 添加仓库
- yum-config-manager --add-repo https: //download.docker.com/Linux/CentOS/docker-ce.repo 594 yum-config-manager --enable docker-ce-nightly
- yum-config-manager --enable docker-ce-test
- yum-config-manager --disable docker-ce-nightly
- # 安装
- yum -y install docker-ce docker-ce-cli containerd.io
在 dockerhub 中寻找 weblogic 镜像成品
在下搭这个环境只是为了调试, 没想搞这么麻烦, 所以有成品最好, 在 dockerhub 中找到两个下载量比较多的, 第一个是官方的:
但是可惜了, 镜像太大了, 一个也没有下载成功, 都是到一半就卡住不动了, 只能自己制作一个了.
官方有构建 Weblogic 镜像的 Dockerfile 以及一些说明: 点击查看.
这里贴一下官方的文档:
全英文的, 写的也不算很详细吧, 下面就通过这个文档来手动构建一下.
构建 JAVA-8 镜像
因为 Weblogic 基于 Java, 所以需要用 JDK, 上面文档中说使用../OracleJava/java-8 可以构建出 JDK 镜像, 这里如果可以直接命令 docker pull store/oracle/serverjre:8 把做好的镜像脱下来就不用这么麻烦了.
如果和我一样, 下载不下载成品, 只能手动构造了. https://github.com/oracle/docker-images/ 这个仓库里包含了 oracle 提供的所有产品 Dockerfile, 没必要全 Git clone 下来, 推荐使用 http://zhoudaxiaa.gitee.io/downgit/ 工具把 java-8 和 weblogic 目录下下来即可.
然后这是后面构建 weblogic 的时候才知道的事情, 需要在 Dockerfile 中找到对应 JDK 安装包的文件名, 然后到官网或别的地方去下载同名的包, 和 Dockerfile 放到同级目录下.
这里使用的 server-jre-8u241-Linux-x64.tar.gz: 下载地址
然后执行 build.sh 构建, 一般不会出什么问题.
或者将 Dockerfile 的内容复制出来, 在 Linux 中新建一个同名的文件, 把内容复制进去, 然后当前目录执行 docker build -t oracle/serverjre:8 . 也可以构建出来.
下载 Weblogic 二进制包
傻傻的试了半天 buildDockerImage.sh, 结果一直报错 checksum 什么的, 看了一遍脚本内容还有重新看了一遍上面的英文 README 才发现需要自己去下载 weblogic 安装包, 附上下载地址.
weblogic 会有 3 个分支版本: developer,generic,infrastructure, 在./dockerfiles/12.2.1.3 / 目录下从文件后缀可以看出对应的 Dockerfile 文件, 例如 generic 对应 Dockerfile.generic.
没细研究它们的区别, 简单看了一下 generic 比较全, 带示例什么的, 大小 800M,developer 小很多, 只有 231M, 试了一下网速跑满了, 就把两个都下载下来构建了一遍.
将下载下来的文件, 不需要解压, 放到和对应版本的 Dockerfile 文件同级目录下.
构建 Weblogic12 镜像
我的目标版本是 12.2.1.3 generic, 所以使用 sh buildDockerImage.sh -v 12.2.1.3 -b.
脚本本身没有什么问题, 但是到 Percent Complete 这里一直报错, 总是到 40% 进程就挂掉了, 这里试了很多次, 发现到 40% 的时候电脑风扇呼呼的, 看了一下内存占用大概知道为什么了, 我的虚拟机分配内存只有 512M, 尝试扩到 2G, 构建 weblogic 镜像顺利完成.
运行使用
以前没接触过这个中间件, 所以不太了解怎么使用. 直接
docker run -d oracle/weblogic
之后发现并不能将其运行起来.
又研究了一下 README 后发现运行需要基于已经有的 oracle/weblogic:12.2.1.3-generic 再构建一个实例镜像, 官方提供了一些 sample, 我选择的是, 其他的也试了试, 没能构建成功.
因为我这里想用 generic 版本, 所以需要改一下示例目录的 Dockerfile 文件:
构建命令:
- docker build -f Dockerfile -t 12213-weblogic-domain-in-volume .
- .
在制作容器运行之前, 需要修改 properties 目录里的两个配置文件, 重要的信息已经用红圈标注了, 需要注意的是 DOMAIN_HOST_VOLUME 指定的目录需要在本机存在, 该目录会映射容器内示例目录到本地, ADMIN_HOST 指定容器名称.
然后修改
run_admin_server.sh
可以构造并运行一个名为 weblogic 的容器, 此时如果防火墙没有限制的话, 访问 http://your-ip:7001/console 应该 OK 了.
开启调试端口
上面的脚本默认不会启动 weblogic 的调试端口
8453
, 为了之后的测试, 这里尝试开启.
首先, 将前面创建的容器删除
- docker stop weblogic && docker container rm weblogic
- .
然后修改示例目录 12213-domain 中
run_admin_server.sh
的最后一行, 将
8453
端口映射出来.
然后, 尝试连接一下 nc -v your-ip 8453, 如果提示 connected 就可以了, 如果不行则继续执行以下步骤.
前面将容器中的示例目录映射到了本地, 在本地 / root/domain 下可以找到 base_domain 目录, 目录结构如下:
修改
bin/setDomainEnv.sh
, 找到最合适的地方, 如何判断最合适, 一句话就是最先使用 debugFlag 之前给 debugFlag 赋值之后, 加上一句
- exoprt debugFlag="true"
- .
然后重启容器
docker restart weblogic
后成功开启调试.
相关链接
- oracle/docker-images/OracleWebLogic
- oracle/docker-images/OracleJava
- http://zhoudaxiaa.gitee.io/downgit/#/home
- Another blog
来源: https://www.cnblogs.com/lxmwb/p/12578952.html