导航:首页 > 源码编译 > 反编译docker中的jar包

反编译docker中的jar包

发布时间:2022-08-28 11:29:37

⑴ 如何使用Docker 进行java 开发

1、java项目开发,假定已有一个java项目能够编译成jar/war并且运行了。

2、编写dockerfile,docker是一个容器技术每一个容器就是一个“完整”的linux系统,这个dockerfile需要提供这个系统包含内容的描述,比如FROM maven:3.3.3、FROM ubuntu:16.04。如果这个java项目是个web项目那么还需要提供tomcat环境。添加项目构建信息。比如采用maven编译项目的话该如何如何。

ADDpom.xml/tmp/build/
RUNcd/tmp/build&&mvn-qdependency:resolve

ADDsrc/tmp/build/src
#构建应用RUNcd/tmp/build&&mvn-q-DskipTests=truepackage
#拷贝编译结果到指定目录
&&rm-rf$CATALINA_HOME/webapps/*
&&mvtarget/*.war$CATALINA_HOME/webapps/ROOT.war
#清理编译痕迹
&&cd/&&rm-rf/tmp/build

3、暴漏接口:EXPOSE 8080
CMD ["catalina.sh","run"]

4、执行镜像构建

dockerbuild-tdocker-demo-java-tomcat.

5、基于创建好的镜像创建容器

dockerrun-d-p8080:8080docker-demo-java-tomcat

6、访问

http://127.0.0.1:8080/demo

来源于dockercloud文档,可自去查看。

⑵ 如何在docker中运行java程序

pom.xml文件定义mainClass为sparkexample.Hello,需要在src/main/java/sparkexample/目录下创建Hello.java文件。Dockerfile
最后我们来编写Dockerfile文件,这个Dockerfile使用到了Java镜像(java:oracle-java8),并从安装Maven开始做起。下一步它会安装项目依赖。我们通过pom.xml来解析这些依赖,正如你所看到的,它允许Docker缓存这些依赖。下一步,要编译打包应用,并启动应用。如果重建应用时,pom.xml文件没有任何修改,之前的步骤都被缓存下来了,直接到最后一步启动应用。这可以加快应用的重新构建速度。
创建和运行
一旦这三个文件已经完成,那创建Docker镜像就变得轻而易举了。
$ docker build -t giantswarm/sparkexample .
注意:首次启动时会花费一些时间,因为它要安装Maven并下载所有的依赖。之后再启动就需要几秒钟,因为所有的东西都已经缓存了。
镜像创建之后,用下面的命令创建容器:
docker run -d -p 4567:4567 giantswarm/sparkexample
用下面的命令访问:
curl localhost:4567 hello from sparkjava.com

⑶ 请教,如何在ubuntu环境下编译Docker的安装文件

Docker 的基本用法
在本节中,我将向您介绍 Docker 命令的常用选项。例如如何下载一个 docker image,打造一个容器,以及如何访问容器。
要创建一个新的容器,你应该选择一个基本 image 的操作系统,例如启动 Ubuntu 或者 CentOS 或其他系统。您可以搜索一个基本 image 使用 Docker 搜索命令:
docker search ubuntu
该命令将显示所有 ubuntu images,你可以自己尝试一下搜索 centos Images。

现在我们现在 base image到我们的服务中,使用命令:
docker pull ubuntu

现在,您可以通过使用命令来查看所有已下载的images:
docker images

Ubuntu 镜像从DockerHub/Docker Registry下载。下一步骤是创建从该镜像的容器。
要创建容器,可以使用docker create 或 docker run
docker create ubuntu:14.04
docker create 命令会创建一个新的容器,但不会启动它。所以现在你需要使用运行命令:
docker run -i -t ubuntu:14.04 /bin/bash
此命令将创建并运行一个基于 Ubuntu14.04 镜像的容器,容器内并运行一个命令/bin/bash,您将在容器内自动运行命令。

当你输入 Exit 命令退出容器时,容器也是停止运行,如果你想容器在后台运行需要在命令后面添加 -d 参数。
docker run -i -t -d ubuntu:14.04 /bin/sh -c “while true; do echo hello world; sleep 1; done”
/bin/sh -c “while true; do echo hello world; sleep 1; done” this is bash script to echo “hello word” forever.
现在你可以看到容器在后台运行通过命令:
docker ps
如果你想从 bash 命令看日志结果,使用命令:
docker logs NAMES/ContainerID

怎样在后台访问容器 shell?这个命令将会连接你的容器 shell:
docker exec -i -t NAMES/ContainerID

你可以看到主机名和容器ID是相等的,这意味着你在容器shell内。当你在shell 上键入’exit`,会离开的shell,但容器仍在运行。
你会经常使用的另一个命令是:
docker stop NAME/ContainerID
这将停止容器而不将其删除,这样你就可以用命令重新启动它:
docker start NAME/ContainerID
如果你想删除的容器,先停止它,然后用命令将其删除:
docker rm NAME/ContainerID

⑷ 如何在docker容器中运行一个jar而不会被退出

假设你的容器名字叫做container,试试这样:

1

docker run container tail -f /dev/null

后面加命令tail -f /dev/null,就可以保持你的容器一直在前台运行了。

⑸ 如何在mips架构编译docker之github源码动态编译

经过研究docker的官方编译脚步,发现本地编译也很简单,只需要在docker源码的目录下执行如下命令即可: ./hack/make.sh binary 上面这条命令就只会生成docker的二进制文件,不过肯定不会这么顺利的,执行这个命令你就会发现错误。如果第一次执行...

⑹ 想使用docker来进行Android源码编译,对电脑配置要求怎么样

这个配置足够了,还需要配置好对应的环境和编译工具。

⑺ 如何利用docker在linux上部署jar包

#vim
/etc/yum.repos.d/docker.repo
[dockerrepo]
name=Docker
Repository
baseurl=http://yum.dockerproject.org/repo/main/centos/7/
enabled=1

gpgcheck=0
#vim
/etc/sysctl.conf
#在文件最后添加,以一下红色标记内容
net.ipv4.ip_forward
=1
#
sysctl-p
#使用配置生效
net.ipv4.ip_forward
=1
#cat
/proc/sys/net/ipv4/ip_forward
#查看

1
#yum-yinstall
docker-engine
#systemctlstart
docker
#启动docker服务

#systemctlenable
docker#设置开机启动docker服务
#docker
info
#docker
searchcentos#从DockerHub中搜索符合条件的镜像
方法1:从公网docker
hub拉取(下载)imagepull:拉
#docker
pullcentos#从DockerHub中拉取或者更新指定镜像
方法2:把之前下载好的image镜像导入image:
#dockerload
-i
/root/centos-latest-docker-image.tar

#-i"centos-latest-docker-image.tar
"指定载入的镜像归档。
docker
images#列出本地所有镜像

⑻ 如何在"特殊"的网络环境下编译 Docker

由于 Docker 编译需要依赖于 Docker Daemon ,所以只能在 64 位的 Linux 环境下先安装 Docker 程序,再从 Github 上克隆 Docker 的代码进行编译。
在 Docker 的目录下执行 make 命令将默认执行 Makefile 中 make binary 指令进行编译。
?

default: binary

all: build
$(DOCKER_RUN_DOCKER) hack/make.sh

binary: build
$(DOCKER_RUN_DOCKER) hack/make.sh binary

cross: build
$(DOCKER_RUN_DOCKER) hack/make.sh binary cross

从以上的 Makefile 可以看出,执行 make、make binary、make all 或 make cross 都可以得到可运行的 Docker 程序。
在 Mac OS 环境下使用 brew 的命令安装 Docker ,只能得到一个 docker client 的二进制程序,如果以 daemon 的方式运行,会得到 ‘This is a client-only binary - running the Docker daemon is not supported.’ 的错误提示信息。
方法 1.
使用 VirtualBox 或者 VMWare Workstation 安装一个 Linux 的虚拟机。宿主机使用 VPN 等方案使网络“正常”访问各种“服务”,虚拟机网卡使用 NAT 模式。在 Linux 虚拟机内使用 make 进行编译 Docker 不会有任何网络问题。只是编译速度受限于 VPN 等网络解决方案,有可能等待时间很长。
方法 2.
Docker 每次发布新版本,都会在 docker-dev 的镜像仓库发布一个新的标签,这个镜像仓库包含了编译 Docker 镜像所依赖的所有环境,只需替换 Docker 代码目录下的 Dockerfile 即可实现编译 Docker 。
?

FROM docker.cn/docker/docker-dev:v1.2.0
VOLUME /var/lib/docker
WORKDIR /go/src/github.com/docker/docker
ENV DOCKER_BUILDTAGS apparmor selinux
ENTRYPOINT [“hack/dind”]
COPY . /go/src/github.com/docker/docker

Dockerfile 中只保留必要的步骤就可以实现编译了。

⑼ openJDK 编译的jar包和oracleJDK编译的能通用吗

在此,Oracle与OpenJDK之间的区别
他是从组织、开源、市场等角度比较的,我这里主要从开源、前景、相关源码底层…等等角度分析,有兴趣的朋友可以一起来建议,学习

一、前景
这里我只能抛出几个疑问点,欢迎大家一起来解决,抛出疑问

1、为什么 Docker 容器的Java环境,几乎都是 openJdk ?

2、其实ORACLE jdk是开放了大部分源码的,openJDK是开放所有源码的,迄今我所想看到的实现,在Oracle JDK中都是开放源码的,Oracle JDK没有开放的部分在哪里?
答:已解决,Oracle JDK 没有开放的源码,在openJDK中的实现,这里先说明一下,OracleJDK只开放了不到7%,后面我会摘录部分,只是部分哈,有兴趣可以安装一个OpenJDK比较一下区别

3、为什么 OpenJDK开源了 OracleJDK不想开源的东西,

二、开源
open-source,开源,这是一种共享,集智的概念

openJDK 是对外开放源码的,Oracle JDK则没有(部分开源)

三、相关底层架构,实现比较
这里就windows版本分析

3.1-1、Oracle JDK架构1
安装包就一个,如图,官网地址
在这里插入图片描述

3.1-2、Open JDK架构1
链接地址,在此
如下图
在这里插入图片描述
这里比较出 openJDK的JRE和JDK是分开放的

3.2 Oracle JDK 与 Open JDK 目录结构比较
在这里插入图片描述

这里看得出 Oracle JDK 是基于 SDK(Jar)进行版本的维护的,部分提供了源码集
OpenJDK 是基于 package 进行版本维护,提供了所有的源码集,目录更清晰,部分实现还变更于与Oracle JDK 不同的包下,后面我摘出部分事例参考

还要注意 IntelliJ IDEA 中也集成了部分的 SDK,注意开发时确保正确的开发环境

3.3 JVM
openJDK已经不显示 JVM了

在这里插入图片描述

3.4 不同的命令行操作
在这里插入图片描述

四、常用对象的不同的实现(OracleJDK源码在OpenJDK中的不同实现)
摘录部分,常用对象,这里总结会有点乱(我还没仔细地观察真正的源码区别)

4.1、Object
在这里插入图片描述

4.2、ArrayLi

阅读全文

与反编译docker中的jar包相关的资料

热点内容
游戏旧版安卓怎么玩 浏览:261
冗余单片机 浏览:846
cad抽壳命令怎么用 浏览:26
服务器第一地址怎么改 浏览:494
单片机最小系统电路设计流程图 浏览:663
steam源码 浏览:29
关于对数的运算法则及公式 浏览:775
明星谈如何缓解压力 浏览:141
androidlistview隐藏列 浏览:396
plc跑马灯编程 浏览:816
ios开发之网络编程 浏览:421
处理照片视频哪个app好 浏览:386
logback压缩 浏览:888
冰箱压缩机可以用气割吗 浏览:531
菜鸟如何加密商品信息 浏览:316
程序员那么可爱小说结局 浏览:868
zenity命令 浏览:570
监禁风暴哪个app有 浏览:871
程序员的爱心是什么 浏览:597
java中对字符串排序 浏览:296