docker建立jdk映象
阿新 • • 發佈:2018-12-26
現在有需求要用docker跑java專案,而且有多個專案,所以我的思路是自己搭建一個基於jdk8的基礎映象,後邊所有的專案映象在這個基礎上再編譯。
將要用到的技術及軟體:
- 編譯方式:dockerfile
- Linux映象:centos7
- jdk:jdk1.8.0_144
這裡要構建一個基於centos7和jdk1.8的映象。
1、 下載centos7映象
執行docker search centos
[[email protected] targeter3]# docker search centos
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/centos The official build of CentOS. 4392 [OK]
docker.io docker.io/ansible/centos7-ansible Ansible on Centos7 112 [OK]
docker.io docker.io/jdeathe/centos-ssh CentOS-6 6.9 x86_64 / CentOS-7 7.4.1708 x8... 97 [OK]
docker.io docker.io/consol/centos-xfce-vnc Centos container with "headless" VNC sessi... 55 [OK]
docker.io docker.io/tutum/centos Simple CentOS docker image with SSH access 42
docker.io docker.io/imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 41 [OK]
docker.io docker.io/gluster/gluster-centos Official GlusterFS Image [ CentOS-7 + Glu... 30 [OK]
docker.io docker.io/centos/mysql-57-centos7 MySQL 5.7 SQL database server 28
docker.io docker.io/openshift/base-centos7 A Centos7 derived base image for Source-To... 26
docker.io docker.io/centos/python-35-centos7 Platform for building and running Python 3... 23
第一個是官方的,現在使用這個
docker pull centos:7
下載完後檢視本地映象
[root@localhost targeter3]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos 7 49f7960eb7e4 2 weeks ago 199.7 MB
可以看到centos的基礎映象只有200M。
2、編譯Dockerfile
新建一個檔案,這裡命名為jdkdockerfile
vi jdkdockerfile
很多地方都是使用的Dockerfile這種固定名稱,其實建立的時候可以通過 -f 來指定dockerfile
jdkdockerfile中的內容
FROM centos:7
MAINTAINER pkk
ADD jdk-8u144-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_144
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
1、這裡使用的映象是上面下載的centos映象;
2、jdk拷貝到dockerfile同級目錄,如果在其它目錄拷貝的時候可能出現找不到目錄錯誤;
3、使用ADD指令會直接對jdk-8u144-linux-x64.tar.gz進行解壓縮,不用再單獨的tar解壓jdk了。
3、使用Dockerfile建立映象
docker build -t jdk-8u144:20180619 . -f jdkdockerfile
執行上面指令後在本地映象中就能查詢到建立的jdk映象了
[[email protected] targeter3]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jdk-8u144 20180619 f2a16d7176f4 2 hours ago 575.8 MB
docker.io/centos 7 49f7960eb7e4 2 weeks ago 199.7 MB
這時候看到jdk的映象增長到了570M。
1、 -t 指定映象的名稱和tag;
2、 使用-f 指定要使用的dockerfile,如果不指定會尋找當前目錄名為Dockerfile的檔案
3、上面有個 . ,這個表示當前目錄,必不可少的
4、 執行建立的映象
[root@localhost targeter3]# docker run -d -it jdk-8u144:20180619 /bin/bash
4b4a9120e6acbd47011e93efc4970b7fc5c6d0bcd916e13e5cbbe9a26810a639
[root@localhost targeter3]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4b4a9120e6ac jdk-8u144:20180619 "/bin/bash" 39 seconds ago Up 38 seconds hopeful_brahmagupta
上面包含兩條指令,run建立容器和檢視容器。
注意:建立容器的時候一定要使用 -it /bin/bash這種方式,要不然jdk的容器起不來。
5、驗證映象中的jdk
進入容器中檢視jdk:
[root@localhost targeter3]# docker exec -it 4b /bin/bash
[root@4b4a9120e6ac /]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
說明咱們的jdk映象建立成功了。
後面找時間把自己的jar包放入docker映象中執行的說一下。