docker制作自定义的jdk镜像并基于此jdk创建服务镜像,解决DUBBO服务注册宿主机IP问题

本文详细介绍了如何通过Dockerfile创建自定义的JDK1.8_191镜像,包括指定基础镜像、设置工作目录、复制文件、配置环境变量等步骤。完成镜像制作后,展示了如何启动容器并进行内部检查,以及如何基于此镜像创建新的服务镜像,用于部署应用并设置启动命令和端口映射。
摘要由CSDN通过智能技术生成

制作自定义版本的jdk镜像,本文制作的是jdk1.8_191

Dockerfile如下

#1.指定基础镜像,并且必须是第一条指令
FROM centos:7

#2.指明该镜像的作者和其电子邮件
MAINTAINER mj "mmp"

#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /usr/local/java

#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径
ADD jdk-8u191-linux-x64.tar.gz /usr/local/java/

#5.配置环境变量
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_191
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

#容器启动时需要执行的命令
#CMD ["java","-version"]
#可以安装一些工具进入镜像,-y不需要交互自动安装很重要的参数,不然会卡住终止
RUN ["yum","install","-y","xxx"]

文件目录结构如下

执行docker制作镜像命令

docker build -t jdk1.8 .

查看镜像

docker images

启动容器进入内部查看

docker run -it  --name jdk1.8 jdk1.8 /bin/bash

有了自定义的jdk镜像,就可以基于此镜像创建服务镜像了

Dockerfile

FROM jdk1.8
# 作者
MAINTAINER nnd
# 声明要使用的端口
EXPOSE 8080
# VOLUME 指定了临时文件目录为/tmp。

# 将本地包添加到容器中并更名为容器内目录名
ADD /本地文件目录 /容器内目录名
#挂载卷
VOLUME ["/容器内目录/logs","/容器内目录/conf"]

# 同步容器与本机时间
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone

EXPOSE 8080
RUN ["dos2unix","/容器内目录/bin/startup.sh"]

#ENTRYPOINT命令用于指定这个容器启动的时候要运行的命令(可以追加命令)
ENTRYPOINT ["sh","/容器内目录/bin/startup.sh"]

创建镜像

docker build -t xxx:1.0 .

创建容器,目录挂载必须要放在--name的前面,否则挂载不上,-e DUBBO_IP_TO_REGISTRY设置dubbo注册zookeeper时的ip地址,指定为宿主机ip,不然无法访问

docker run -d  -p 8080:8080 -v 本地目录:容器内目录  -e DUBBO_IP_TO_REGISTRY=宿主机IP --name zzz xxx:1.0 

查看全部容器,-a表示全部,不加的话,只显示运行中的容器

docker ps -a

进入容器

docker exec -it 容器ID bash

创建和停止容器

docker start 容器ID,docker stop 容器ID

开机自动重启及其他情况

# 开启容器自启动
docker update --restart=always 【容器名】
例如:docker update --restart=always tracker


# 关闭容器自启动
docker update --restart=no【容器名】
例如:docker update --restart=no tracker

##### 相关配置解析
no:
    不要自动重启容器。(默认)

on-failure: 
    如果容器由于错误而退出,则重新启动容器,该错误表现为非零退出代码。

always:
    如果容器停止,请务必重启容器。如果手动停止,则仅在Docker守护程序重新启动或手动重新启动容器本身时才重新启动。(参见重启政策详情中列出的第二个项目)

unless-stopped:
    类似于always,除了当容器停止(手动或其他方式)时,即使在Docker守护程序重新启动后也不会重新启动容器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值