「java创建docker」JAVA创建线程

博主:adminadmin 2023-03-19 13:07:11 331

今天给各位分享java创建docker的知识,其中也会对JAVA创建线程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何使用Docker 进行Java 开发

现在有非常多的Java Web框架,但这里并不打算使用它们。只想要的是一个小的框架所以可以选择Spark,它是一个基于Java 8的极小的框架。Spark使用Maven作为构建工具。

回到顶部

源代码和配置文件

在这个例子中要增加三个文件:

Maven的配置文件: pom.xml

一个Java类:Hello.java

一个Dockerfile

如何使用 Java 和 Docker 构建微服务

在Java生态中,构建微服务的策略包括Container-less,Self-contained,以及In-container等。

Container-less微服务将应用及其依赖打包成一个单一的jar文件。

Self-contained微服务也是打包成一个单一的Jar文件,但它还包括一个嵌入式框架,这个框架含有可选的第三方lib,当然这些lib是兼容的。

In-container微服务打包成一个完整的Java EE容器,该服务在Docker镜像中实现。 基于微服务的架构给架构师和开发者带来了新的挑战,然而,随着语言的升级和工具数量的增加,开发者和架构师完全有能力应对这样的挑战。Java也不例外,本文探讨了在Java生态系统内构建微服务的不同方法。

SpringBoot+Docker项目打包(jar)和部署

一、打包SpringBoot项目

1.检查pom文件是否有maven打包插件

2.选择IDEA右侧Maven,点击install(如果配置了maven的环境变量,则可以在控制台输入:mvn install 命令,同样可以打包jar包)

等待maven打包,当控制台出现下列日志时表示打包成功

如下图所示,打包完会出现一个.jar文件,即打包好的jar包。

3.在控制台输入:java -jar /Users/heyou/Desktop/springboot-0.0.1-SNAPSHOT.jar 来检查jar包是否可以正常运行。

二、Docker部署jar包

前提条件:

1.构建Dockerfile

在已经打包好的jar包的同级目录下新建Dockerfile

Mac 可在IDEA控制台输入vim Dockerfile 进入vim编辑,输入:

其中:

FROM 命令指定运行环境和版本

VOLUME:一个特别指定的目录,用于存储数据,该命令的作用是在/var/lib/docker创建一个名为tmp的目录,在开启redis服务时,需要特别指定redis的数据存储在哪个文件夹,此时这个命令就十分有用

ADD:拷贝文件并且重命名(需要输入两个参数:即jar包名称和重命名后的名称)

ENTRYPOINT:容器启动时运行的命令,相当于我们在命令行中输入java -jar xxxx.jar,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

2.创建docker文件夹,将jar包与Dockerfile移动到该文件夹,进入该文件夹,运行命令:

此时会将该项目构建成一个image(镜像),运行命令:

3.运行镜像:

注:“:”左边的端口号是暴露给外部访问的端口,而右边端口是docker内部镜像运行的端口

4.打开浏览器访问部署的项目地址,检查项目是否运行正常

docker 使用

运行容器

sudo docker run -it -v /home/lcj/test_docker:/home/lcj/test_docker tensorflow/tensorflow:1.13.1-gpu-py3

参数:

-d 后台运行并返回容器ID,如 -itd

-e 设置环境变量,如 -e NVIDIA_VISIBLE_DEVICE=0 使用编号为 0 的GPU

-i 打开 STDIN,用于控制台交互,通常跟 -t 一起使用

--net 容器网络设置,如 --net my_network,或者 --net=contianer:NAME_or_ID,使用其他容器的网络,共享 IP 和 PORT 等资源

--restart 指定容器停止后的启动的策略,如 --restart=always

--runtime=nvidia 使用 nvidia 模式运行,跟 -e 一起使用,可以在容器里使用 GPU

-t 为容器重新分配一个伪输入终端,通常与 -i 一起使用

-v 给容器挂载存储卷,挂载到容器的某个目录,如 -v /home/lcj/test_docker:/home/lcj/test_docker

-w 指定容器的工作目录

停止容器

docker stop 容器ID

或者 docker stop `docker ps -a -q` 停止所有容器

重启容器

docker restart 容器ID

进入一个运行中的容器

docker attach 容器ID

保存容器

docker save myimage | bzip2 -9 -c /home/lcj/save.tar.bz2

加载容器

bzip2 -d -c /home/lcj/save.tar.bz2 | docker load

杀掉运行中的容器

docker kill -s KILL 容器ID

-s:向容器中发送一个信号

docker rm 命令

参数:

-f :通过 SIGKILL 强制删除一个容器,如 docker rm -f a

-l:移除容器间的网络连接,而非容器本身,如 docker rm -l b,其中 b 为连接名,而非容器名

-v:删除与容器关联的卷

docker create :创建一个容器但不运行它,语法同 docker run

docker ps

-a:显示所有的容器,包括未运行的

-f:根据条件过滤显示的内容

-l:显示最近创建的容器

-n:列出最近创建的 n 个容器

-q:静默模式,只显示容器 ID

列出所有创建的容器 ID

docker ps -a -q

停止所有容器 ID

docker stop  `docker ps -a -q`

获取容器/镜像的元数据

docker inspect 容器/镜像名

docker top :查看容器中的进程信息

docker top a(a 是容器)

docker attach :链接到正在运行的容器(该容器必须正在运行)

docker attach a (a 是容器)

docker events :从服务器获取实时事件

-f:根据条件过滤事件

--since:从指定的时间戳后显示所有的事件

--until:流水时间显示到指定的时间为止

显示docker 2016年7月1日后的所有事件

docker events -since="1467302400"

显示docker 镜像为mysql:5.6 2016年7月1日后的相关事件

docker events -f "image"="mysql:5.6" --since="1467302400"

备注:如果指定的时间是到秒级的,需要将时间转成时间戳。如果时间为日期的话,可以直接使用,如--since="2016-07-01"

docker export :将文件系统作为一个 tar 压缩文件导出到 STDOUT

docker port :列出指定的容器端口的映射,或者查找将 PRIVATE_PORT NAT 到面向公众的端口

docker port a(a 为容器名)

docker commit : 从容器创建一个新的镜像

-a:提交的镜像作者

-c:使用 Dockerfile 文件来创建镜像

-m:提交时说明的文字

-p:在 commit 时暂停容器

docker commit -a 'lcj' -m 'has update' 容器 ID 镜像名

docker cp :用于容器与主机之间的数据拷贝

将主机的 test_docker 目录拷贝到容器 /home/lcj 目录下

docker cp /home/lcj/test_docker 容器 ID:/home/lcj/

将容器 /home/lcj 目录拷贝到主机的 test_docker 目录下

docker cp 容器 ID:/home/lcj/ /home/lcj/test_docker

docker login/logout :登录或退出一个 Docker 镜像仓库,如果未指定镜像仓库地址,则默认为 官方 Docker Hub

docker login -u 用户名 -p 密码

docker logout

docker pull :从镜像仓库中拉取或者更新指定镜像

docker pull java

docker push :将本地的镜像上传到镜像仓库,需先登录到镜像仓库

docker push myapache:v1

docker search :从 Docker Hub 查找镜像

--automated,只列出 automated build(自动生成) 类型的镜像

--no-trunc,显示完整的镜像描述

-s:列出收藏数不少于指定值的镜像

从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像

docker search -s 10 java

docker images :列出本地所有的镜像

-a:列出本地所有的镜像(含中间映像层,默认情况下,过滤中间映像层)

-q:只显示镜像 ID

docker images 或 docker images ubuntu,列出本地所有镜像或本地仓库名为 ubuntu 的所有的镜像

docker  rmi :删除一个或多个镜像

-f:强制移除

--no_prune:不移除该镜像的过程镜像,默认移除

强制删除本地镜像w3cschool/ubuntu:v4

docker rmi -f w3cschool/ubuntu:v4

docker tag :标记本地镜像,将其归入到某一个仓库

将镜像ubuntu:15.10标记为 w3cschool/ubuntu:v3 镜像

docker tag ubuntu:15.10 w3cschool/ubuntu:v3

docker build:使用 Dockerfile 文件创建镜像

使用当前目录的Dockerfile创建镜像

docker build -t w3cscholl/ubuntu:v3 . (不要漏掉最后的 . 符号)

使用URL  github.com/creack/docker-firefox  的 Dockerfile 创建镜像

docker build github.com/creack/docker-firefox

docker history :查看指定镜像的创建历史

docker save :将指定镜像保存成 tar 压缩文件

-o:输出到文件

docker save -o my_ubuntu_v3.tar w3cschool/ubuntu:v3

docker import:从压缩文件中创建镜像

-c:应用 docker 指令创建镜像

-m:提交时的说明文字

从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为w3cschool/ubuntu:v4

docker import my_buntu_v3.tar w3cschool/ubuntu:v4

jdk升级17docker如何部署

关注

在将java应用部署到docker环境的过程中,一个支持运行java程序的镜像是必不可少的。由于oracle授权方面的问题,docker hub 上一般只有基于openjdk的镜像,而且open jdk的镜像不支持字体管理,在使用一些验证码功能时会报错,比如生成验证码功能等。

而且openjdk 的镜像过于庞大,openjdk:17-slim的镜像大小就有407M。基于这些原因,我们可以选择定制一个java运行环境镜像。

jre制作

由于jdk的体积比较大,我们选择jre来作为运行环境,jdk1.8及以前的版本,都是有jre的,但是jdk9以后的版本不在提供jre需要自己制作。

jlink是通过按模块打包的,但是由于目前很多库还不是按模块打包的,所以我们无法知道项目里面都用了那些模块。只好将所有的模块进行打包。这样避免以后出现缺失模块导致应用报错的问题。

下面是windows平台的打包命令

bin\jlink.exe --module-path jmods --add-modules ALL-MODULE-PATH --compress=2 --strip-debug --output jre

1

1

linux下,需要将要打包的java配置到系统环境变量中,不然生成不了,会报jlink not find错误

bin/jlink --module-path jmods --add-modules ALL-MODULE-PATH --compress=2 --strip-debug --output jre17

1

1

–strip-debug 不打包调式信息 --compress=2 开启2级别压缩,这两项减小生成的文件体积

–add-modules ALL-MODULE-PATH表示所有模块

镜像制作

基于alpine镜像

拉取alpine镜像

docker pull alpine

1

1

alpine镜像非常小,只有5.59MB,可以通过docker run -it {iamgeId} sh 运行容器,运行一些简单的命令试试

D:\repo\docker\javadocker run -it c059bfaa849c sh

/ # ls

bin dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var

1

2

3

1

2

3

编写dockerfile

FROM alpine:latest

MAINTAINER lin

#更换aline源

RUN echo "" /etc/apk/repositories

RUN echo "" /etc/apk/repositories

#update apk

RUN apk update apk upgrade

RUN apk --no-cache add ca-certificates

# bash vim wget curl net-tools

RUN apk add bash bash-doc bash-completion

RUN apk add vim wget curl net-tools

RUN rm -rf /var/cache/apk/*

RUN /bin/bash

#setup glibc

RUN wget

RUN wget

RUN wget

RUN wget

RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub

RUN apk add glibc-2.32-r0.apk

RUN apk add glibc-bin-2.32-r0.apk

RUN apk add glibc-dev-2.32-r0.apk

RUN apk add glibc-i18n-2.32-r0.apk

RUN rm -rf *.apk

#setup date

RUN apk add tzdata

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#setup language 解决中文乱码

RUN /usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8

ENV LANG=en_US.UTF-8

#copy jdk-8u251-linux-x64.tar.gz

ADD jdk-8u251-linux-x64.tar.gz /usr/local

#setup java env

ENV JAVA_HOME=/usr/local/jdk1.8.0_251

ENV PATH=$PATH:.:$JAVA_HOME/bin

ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

构建镜像

docker build -t jdk17-orcle-alpine .

1

1

总结:由于alpine缺少很多东西,比如glibc,需要安装后才能运行jvm,所以暂时放弃这条路

自己安装glibc比较麻烦,可以使用已经安装好glibc的镜像

#FROM alpine:latest

FROM frolvlad/alpine-glibc

MAINTAINER lin

COPY ./jre17 /usr/local/jre17

#setup java env

ENV JAVA_HOME=/usr/local/jre17

ENV PATH=$PATH:$JAVA_HOME/bin

ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

该方法构建的镜像体积是比较小,但是启动java应用(基于spring boot)的时候jvm会崩溃,原因不明

基于ubuntu

ubuntu镜像相对来说也不是很大,才70多M

FROM ubuntu:latest

MAINTAINER lin

#更新软件源

RUN apt-get update

#安装字体支持

RUN apt-get install fontconfig -y

#清理缓存

RUN apt-get clean

#在windows环境下构建,将/usr/share/zoneinfo/Asia/Shanghai拷贝到本地目录

COPY ./Shanghai /etc/localtime

#setup language 解决中文乱码

#设置中文支持

ENV LANG C.UTF-8

#解压jdk并删除lib目录下的源码

COPY ./jre17 /usr/local/jre17

#授执行权限

RUN chmod -R 750 /usr/local/jre17/bin

#setup java env

ENV JAVA_HOME=/usr/local/jre17

ENV PATH=$PATH:$JAVA_HOME/bin

ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

构建

docker build -t mydockerhub:5000/jdk17-orcle-ubuntu:jre-17 .

1

1

总结:除了需要处理语言问题外,其他都比较顺利,而且结果镜像211MB,比官方提供的小了很多,暂时就这样吧,以后有时间再折腾

打开CSDN,阅读体验更佳

最新发布 Docker部署SpringBoot项目(超详细)

Docker部署SpringBoot项目(超详细)

继续访问

JDK17抽取JRE并制作docker镜像

jre docker

继续访问

docker 搭建 Oracle JDK(版本可更换) 镜像

首先在本机创建jdk目录 mkdir -p /root/jdk 下载jdk到/root/jdk目录下 (版本随意)也可以直接使用 rpm 下载,各凭本事(!.!) 这里我下载的版本是jdk-8u211-linux-x64.tar.gz 在/root/jdk目录下创建Dockerfile文件 vim Dockerfile 内容为 # 基础镜像为 ce...

继续访问

Linux 安装 jdk8-17、运行 jar

前提是先把网络ip配置好官网下载地址: jdk各个版本下载 jdk各个版本档案A:网上随便兽兽道首;file–connect—hostName(linux的ip)—user name(系统用户)—prot(端口:默认)–authentication(选择password)—点击connect后----输入密码选中点击鼠标右键—Upload----- 删除 3.Ubuntu卸载jdk 4、在Linux解压文件 三、

继续访问

免密登录容器dockerfile ,docker部署openjdk-17 免密登录容器dockerfile

免密登录容器dockerfile

继续访问

笔记:Docker创建最小JDK运行环境

JDK1.8 Docker最小镜像

继续访问

jre-7u17-windows-x64.exe

JDK是一个开发环境,用于构建应用程序,applet程序,和使用Java编程语言的组成部分。 Java Development Kit(JDK)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。 定于2月19日发布的Java SE原来的重要补丁更新 - 2013年2月,但甲骨文决定加快释放该重要补丁更新,因为积极开发“野生”的Java漏洞影响在桌面浏览器,运行时环境(JRE)与该重要补丁更新解决。 更新日志:JDK 7u17 发布,该版本修复了浏览器插件的严重的安全漏洞:CVE-2013-1493,Oracle 强烈建议使用 Java 浏览器插件用户升级。 重要补丁更新是针对多个安全漏洞的补丁集合。为Java SE重要补丁更新还包括非安全修复程序。重要补丁更新是累积性的,每个公告只描述自上一个重要补丁更新和安全警报添加的安全修复。因此,以前的重要补丁更新和安全警报建议应检讨有关以前累积的安全修复程序。 请参考: 重要补丁更新和安全警报的信息,有关Oracle安全性公告。 由于一个成功的攻击所带来的威胁,Oracle强烈建议用户尽快应用CPU修复程序。该重要补丁更新包含50个新安全修复程序的Java SE的产品。 支持受影响的产品 该重要补丁更新解决的安全漏洞影响以下按类别列出的产品。请点击可用补丁列或可用补丁表中的链接来访问这些补丁的文档。

Java17 安装教程与环境配置(完整版)

Java17 安装教程与环境配置(完整版)掉坑经历安装步骤环境配置 掉坑经历 今天做项目的时候,发现新项目用的的spring-boot-starter-parent是最新的,一开始我使用2.5.7一直爆红,当时想着降低版本就能使用了,然后被告知,jdk需要最新版本的,才能运行项目。于是乎,开始找教程,但是我看了好几篇教程,都没正确找到最新jdk下载,这里拿个别人博文给的链接,结果你发现,你打开

继续访问

jre17 面向对象+集合的练习

简单的初学者综合练习

继续访问

使用docker容器运行java程序

使用docker容器运行java程序 java 18 一、文件准备 mkdir 11 cd 11 创建并进入目录 docker pull ubuntu:22.04 wget #sudo vim dockerfile内容如下 From ubuntu:22.04 Maintainer webrx "webrx@126.com" #把java添加到容器中 Add jdk-1

继续访问

docker安装JDK

docker安装jdk有很多种方式,这里使用自己构建镜像的方式。 1.下载jdk安装包 安装包下载可以自己去官网下载,如果闲速度慢可以找一些网络资源; 安装包下载好后,上传到/usr/local/docker/jdk下,这个文件目录需要自己创建 2.创建Dockerfile 在/usr/local/docker/jdk文件夹下创建Dockerfile,Dockerfile内容如下: FROM centos:centos7 MAINTAINER tao # 新建目录 RUN mkdir /usr

继续访问

jre.17_32位

jre.17_32位,适用于JAVA空间,安装在windows操作系统中!

jdk8、jdk11、jdk17版本下载

jdk8、jdk11、jdk17版本是长时间支持的版本

Java17(291)之后 , 禁用了TLS1.1 , 使JDBC无法用SSL连接SqlServer怎么办,以下是解决办法

修改java.security文件 1.找到jre的java.security文件 2.打开java.security并搜索 “jdk.tls.disabledAlgorithms=” 3.删掉TLSv1, TLSv1.1, 4.保存,可以了 修改后的样例,jre17可直接复制 修改java.security文件 1.找到jre的java.security文件 如果是jre , 在 {JAVA_HOME} / jre / lib / security中, 比如👇 C:\Java\jdk-17.0.3.1\c

继续访问

docker构建jdk基础镜像,部署程序

docker构建jdk基础镜像

继续访问

Docker工具的使用

初识 Docker jdk的版本问题,环境造成的问题很常见,称为代码的水土不服 把环境和代码一起传过去 软件跨环境迁移的问题就解决了 Docker 是一个开源的应用容器引擎 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc) Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。 容器是完全使用沙箱机制,相互隔离 容器性能开销极低。 Docker 从 1.

继续访问

热门推荐 jdk、jre各版本下载

jdk、jre各版本下载 JDK安装包中是包含JRE的。两者都可以单独下载安装。 安装包的下载官网: 当前最新版本出到了Java SE 10.0.1;官网上JRE分为JRE和ServerJRE。 JRE、ServerJRE 选择的区别如下图: 即JRE是...

继续访问

java17+javaFX17+openCV4.5.5 实现远程桌面功能 最全完整版

使用java17+javaFX17+openCV4.5.5+springboot开发的远程桌面客户端和服务端 99%通过JAVA实现,优化了CPU占用、内存占用、网络占用 新手小白也可以根据文章玩得转

继续访问

docker安装jdk并运行若依后端jar包

为了以后吹牛逼, 采用jdk8+centos镜像 =jdk镜像 吧jar包扔进持久化文件里 1 下载centos 下载指定centos镜像 docker pull centos:centos7 最新的版本docker pull centos 两百兆的系统 不可思议 2 下载jdk 就是下个linux版jdk8 传到服务器/home/docker/jdk # 路径 cd /home/docker/jdk # 解压 tar -zxvf jdk-8u291-linux-x64.tar.gz 编写D

继续访问

JDK和JRE下载大全

JDK下载和环境变量配置

继续访问

如何把java程序封装到docker

初次安装部署好docker后,大多数镜像可以从DockerHub提取,但是大多数人都希望自己可以完全自定义一个镜像,那么这里需要一个第三方工具febootstrapepel6的源提供febootstrap的RPM包yuminstalldocker-iofebootstrap-yservicedockerstartchkconfigdocker--level35on复制代码制作CentOS6.6镜像目录febootstrap-iyum-iiputils-iiproute-ibash-ivim-minimal-icoreutils-itar-inet-toolscentos6base/centos/6.6/updates/x86_64/复制代码-i表示镜像里面安装的RPM包(包括一些人为有必要的软件包)centos6表示镜像的版本说明base表示生成的镜像目录后面之后了系统安装源和更新源为USTC安装执行后,会开始一系列的RPM包下载安装,过程与yum类似,安装完成后当前目录会多了base目录,里面就是一个镜像的系统文件进入base目录等于进入镜像的根目录[root@image~]#cdbase/[root@imagebase]#lsbinbootdevetchomeliblib64mediamntoptprocrootsbinselinuxsrvsystmpusrvar复制代码可以像一般的系统文件一样先做一些修改配置,例如配置第三方yum源等等把base目录把所有文件打包成二进制文件后导入docker创建为镜像

关于java创建docker和JAVA创建线程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。