1.使用Dockerfile生成带有jdk的容器
Dockerfile是用来构建docker镜像的,docker镜像可以理解为一个只读的模板,使用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
# 代表注释 会在使用Dockerfile构建镜像时显示出来
#FROM 表示使用centos(镜像名)[版本号]作为基础镜像,如果本地不存在,会从dockerhub中下载
#MAINTAINER 指定维护者的信息
#RUN 构建Dockerfile时就会执行的命令,相当于执行 "/bin/bash -c xxx"
#ADD 将宿主机的文件拷贝到容器中
#COPY 和ADD的作用相同,但是会自动解压拷贝的文件
#ENV 设置环境变量
1.2使用Dockerfile构建镜像
docker build -t [-f,-m] centos-jdk:0.1 .
-t 指定镜像的名称和版本
-f 指定使用的Dockerfile路径
-m 指定容器的最大内存
centos-jdk:0.1 和-t相关,centos-jdk是名称,:0.1是版本
. 最后的点代表执行当前目录下的Dockerfile
1.3 查看镜像
docker images
1.4 检查容器jdk配置是否成功
docker run -it centos-jdk:0.1 /bin/bash
javac
-i 以交互模式运行容器,通常与 -t 同时使用;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
/bin/bash
2.使用Dockerfile构建web程序
2.1 使用Dockerfile构建一个简单的springboot程序
#基础镜像信息
FROM centos-jdk:0.1
#作者
MAINTAINER zhanglei123
VOLUME /tmp
#复制jar包到容器中
ADD app.jar /usr/local/app.jar
#程序运行的端口
EXPOSE 8090
#执行jar文件
CMD java -jar /usr/local/app.jar
FROM :表示使用centos-jdk:0.1为基础镜像
MAINTAINER :指定维护者的信息
VOLUME :VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
ADD :拷贝文件并且重命名(前面是上传jar包的名字,后面是重命名)
CMD :启动容器时执行的命令
2.2 生成镜像
docker build -t springboot-web .
2.3构建容器
docker run --name web-test -p 8090:8090 -d springboot-web
--name 容器名
-p 宿主机和容器之间的端口映射 主机端口:容器端口
-d 程序在后台运行
springboot-web 启动容器的镜像
2.4 查看程序运行日志
docker logs -tf web-test
-tf 相当于 tail -f命令
-t 显示时间戳
-f 实时显示日志