Docker如何创建一个Jar服务容器

 更新时间:2023年08月23日 11:19:40   作者:çüιẋıασȷıαฅ  
这篇文章主要介绍了Docker如何创建一个Jar服务容器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Docker创建一个Jar服务容器

  • 将jar包构建成为docker镜像
  • 启动镜像生成容器
  • 将镜像上传至镜像仓库

1. 构建Docker镜像

创建一个Dockerfile文件内容如下:

// 指定镜像源
FROM java:8
MAINTAINER cuixiaojian
// 将文件复制到容器中,COPY [宿主机路径] [容器内路径]
COPY config-1.0.0.jar /usr/local/config-1.0.0.jar
// 开放端口
EXPOSE 26999
// 需要开放多个端口则多一条expose
// EXPOSE 27000
// 生成容器后,容器启动时执行的命令
ENTRYPOINT ["java -Xms256M -Xmx256M -XX:MaxMetaspaceSize=256M", "-jar", "/usr/local/config-1.0.0.jar -server -Dfile.encoding=UTF-8"]

在Dockerfile所在目录执行以下命令

build命令后的 “.” 符号代表为当前目录,会将本目录当做为docker build上下文,copy或add命令在执行时候,文件需要在上下文中可以找到,所以需要复制进容器的文件也需要和dockerfile在同一目录

此命令需要在dockerfile所在目录执行

docker build -t [自定义镜像名]:[版本号] -f Dockerfile .

构建完成后查看镜像

docker images

2. 启动镜像生成容器

执行命令:

docker run --name [自定义容器名] -it -p 26999:26999 [自定义镜像名]:[版本号] /bin/bash

指定容器后台运行(增加d参数表示后台运行):

docker run --name [自定义容器名] -itd -p 26999:26999 [自定义镜像名]:[版本号] /bin/bash

3. 上传镜像至远程仓库

标记本地镜像,将其归入某一仓库

docker tag [镜像ID] [远程文件路径 + 镜像名]:[版本号]

推送镜像至远程仓库

docker push [远程文件路径 + 镜像名]:[版本号]

Docker Jar项目启动慢

问题描述

jar包项目,启动后外面不能访问,要过很长时间才可以访问,日志也没有报错。

开始了 漫长的 填坑之路。

lsof -i:端口(方向不对)

 

第一张图带ipv4是创建容器指定了端口,并且没有配置 --network host参数

第二张图不带ipv4是创建容器配置 --network=host 没有指定端口(这种方式不能指定端口)

结果还是没有解决问题,一直以为是因为使用 --network=host 方式没有ipv4绑定呢,这里走了很多弯路,没有解决,但是为什么没有ipv4也不知道为什么。

下面说一说我对docker network的理解,安装好docker后自动创建下面三种。

 1、bridge:桥接网络 默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了

2、none:无指定网络 使用 --network=none,docker 容器就不会分配局域网的IP。

3、host: 主机网络 使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。 例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。这时配置 -p 端口参数是无效的

注:--network=host 和 --net=hos 好像是一样的,说下我的简单理解,如果所有docker 容器都在一台机器上,使用bridge或host都可以,如果是分布在不面的物理机上,必须选择host,如果不指定host那么两台物理机上的容器不能相互访问。

docker exec 不能进入容器

出现这样的问题是由于镜像系统不一,使用错误shell解释器导致,可尝试以下其中一种方案。

docker exec -it container-test /bin/bash
docker exec -it container-test /bin/sh
docker exec -it container-test /bin/csh

正确的解决方法

方法一:

进入容器的 JAVA安装目录    /jre/lib/security/

vi java.security  修改这个文件

找到 securerandom.source=file:/dev/random  修改为  securerandom.source=file:/dev/./urandom

然后重启容器,发现就正常了

方法二:

 -Djava.security.egd=file:/dev/./urandom   加入JVM的这个启动参数

也是可以的,这个主要是使用tomcat 随机数引起的,用jetty或undertow在不配置此参数时不知道会不会有这种情况,也不知道为什么会存在这么大的一个问题。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker中控制服务启动顺序的操作方法

    Docker中控制服务启动顺序的操作方法

    Docker是一种开源的应用容器引擎,允许开发者将应用及其依赖打包进容器,实现快速、一致的部署,Docker三剑客compose、machine和swarm提供了不同层面的服务管理和编排,使得在不同环境中部署应用变得简单高效
    2024-10-10
  • Docker Base Image自己创建具体实现

    Docker Base Image自己创建具体实现

    这篇文章主要介绍了Docker Base Image创建具体实现的相关资料,这里提供了详细的具体步骤,需要的朋友可以参考下
    2016-11-11
  • 关于docker启动jenkins环境的问题

    关于docker启动jenkins环境的问题

    这篇文章主要介绍了docker启动jenkins环境的问题,文中提到了jenkins基本工作原理及管理员密码获取方法,对docker启动jenkins环境相关知识感兴趣的朋友一起看看吧
    2022-04-04
  • Docker设置日志滚动的解决方案

    Docker设置日志滚动的解决方案

    Docker容器默认将日志写入同一文件,可能导致磁盘满,解决方案包括修改全局docker.service配置或针对特定容器修改hostconfig.json,下面给大家介绍Docker设置日志滚动的解决方案,感兴趣的朋友跟随小编一起看看吧
    2024-10-10
  • docker实现redis-cluster模式集群部署的示例代码

    docker实现redis-cluster模式集群部署的示例代码

    本文介绍了使用Docker部署Redis Cluster集群的完整方案,采用3台服务器,每台运行2个Redis实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-04-04
  • 聊聊使用docker安装nginx提供web服务的问题

    聊聊使用docker安装nginx提供web服务的问题

    这篇文章主要介绍了使用docker安装nginx提供web服务,docker pull nginx命令用于拉取最新版本的nginx镜像,需要的朋友可以参考下
    2022-04-04
  • Docker 仓库管理和Docker Dockerfile详解

    Docker 仓库管理和Docker Dockerfile详解

    仓库(Repository)是集中存放镜像的地方,以下介绍一下 Docker Hub,当然不止 docker hub,只是远程的服务商不一样,操作都是一样的,对Docker 仓库管理相关知识感兴趣的朋友一起看看吧
    2023-11-11
  • 手动构建自己的docker容器镜像实战

    手动构建自己的docker容器镜像实战

    这篇文章主要介绍了如何手动构建自己的镜像并上传到镜像仓库中,文中有详细的代码实例,需要的朋友可以参考阅读
    2023-04-04
  • Docker中处理持久化存储(如数据库)的方法详解

    Docker中处理持久化存储(如数据库)的方法详解

    在使用Docker容器时,容器的生命周期通常是短暂的,当容器被删除后,其内部的数据也会随之丢失,然而,对于像数据库这样需要持久化存储数据的应用来说,这是不可接受的,所以本文给大家介绍了Docker中处理持久化存储(如数据库)的方法,需要的朋友可以参考下
    2025-06-06
  • 详解docker私有仓库搭建与使用实战

    详解docker私有仓库搭建与使用实战

    这篇文章主要介绍了详解docker私有仓库搭建与使用实战,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02

最新评论