⑴ 如何使用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