1. 程式人生 > >docker建立jdk映象

docker建立jdk映象

現在有需求要用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映象中執行的說一下。