1.使用Dockerfile生成帶有jdk的容器
Dockerfile是用來(lái)構(gòu)建docker鏡像的,docker鏡像可以理解為一個(gè)只讀的模板,使用docker鏡像可以生成docker容器。
1.1 dockerfile基本了解
#centos with jdk 8
#Author zhanglei
#build a new image with centos
FROM centos
MAINTAINER zhanglei
#make a new directory to store the jdk files
RUN mkdir /usr/local/java
#copy the jdk to image /usr/local/java
ADD jdk1.8.0_201 /usr/local/java
#set enviroment variables
ENV JAVA_HOME /usr/local/java/
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
# 代表注釋? 會(huì)在使用Dockerfile構(gòu)建鏡像時(shí)顯示出來(lái)
#FROM? 表示使用centos(鏡像名)[版本號(hào)]作為基礎(chǔ)鏡像,如果本地不存在,會(huì)從dockerhub中下載
#MAINTAINER? 指定維護(hù)者的信息
#RUN? 構(gòu)建Dockerfile時(shí)就會(huì)執(zhí)行的命令,相當(dāng)于執(zhí)行 "/bin/bash -c xxx"
#ADD 將宿主機(jī)的文件拷貝到容器中
#COPY 和ADD的作用相同,但是會(huì)自動(dòng)解壓拷貝的文件
#ENV 設(shè)置環(huán)境變量
1.2使用Dockerfile構(gòu)建鏡像
docker build -t [-f,-m]? centos-jdk:0.1? .
-t 指定鏡像的名稱和版本
-f 指定使用的Dockerfile路徑
-m 指定容器的最大內(nèi)存
centos-jdk:0.1 和-t相關(guān),centos-jdk是名稱,:0.1是版本
.? 最后的點(diǎn)代表執(zhí)行當(dāng)前目錄下的Dockerfile
1.3 查看鏡像
docker images
1.4 檢查容器jdk配置是否成功
docker run -it? ?centos-jdk:0.1 /bin/bash
javac
-i 以交互模式運(yùn)行容器,通常與 -t 同時(shí)使用;
-t?為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用
/bin/bash
2.使用Dockerfile構(gòu)建web程序
2.1 使用Dockerfile構(gòu)建一個(gè)簡(jiǎn)單的springboot程序
#基礎(chǔ)鏡像信息
FROM centos-jdk:0.1
#作者
MAINTAINER zhanglei123
VOLUME /tmp
#復(fù)制jar包到容器中
ADD app.jar? /usr/local/app.jar
#程序運(yùn)行的端口
EXPOSE 8090
#執(zhí)行jar文件
CMD? java -jar /usr/local/app.jar
FROM :表示使用centos-jdk:0.1為基礎(chǔ)鏡像
MAINTAINER :指定維護(hù)者的信息
VOLUME :VOLUME 指向了一個(gè)/tmp的目錄,由于 Spring Boot 使用內(nèi)置的Tomcat容器,Tomcat 默認(rèn)使用/tmp作為工作目錄。這個(gè)命令的效果是:在宿主機(jī)的/var/lib/docker目錄下創(chuàng)建一個(gè)臨時(shí)文件并把它鏈接到容器中的/tmp目錄
ADD :拷貝文件并且重命名(前面是上傳jar包的名字,后面是重命名)
CMD :?jiǎn)?dòng)容器時(shí)執(zhí)行的命令
2.2 生成鏡像
docker build -t springboot-web .
2.3構(gòu)建容器
docker run --name web-test? -p 8090:8090 -d springboot-web
--name 容器名
-p 宿主機(jī)和容器之間的端口映射 主機(jī)端口:容器端口
-d 程序在后臺(tái)運(yùn)行?
springboot-web 啟動(dòng)容器的鏡像
2.4 查看程序運(yùn)行日志
docker logs -tf web-test
-tf? 相當(dāng)于 tail -f命令
-t 顯示時(shí)間戳
-f 實(shí)時(shí)顯示日志