Docker(4) 制作镜像

一。docker build,使用Dockerfile文件自动化制作镜像。

1.编写Dockerfile文件

vim Dockerfile

# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER yy
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp 
# 将jar包添加到容器中并更名为app.jar
ADD demo-0.0.1-SNAPSHOT.jar app.jar 
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

解释:

java:8是指Docker Hub上官方提供的java镜像,版本号是8也就是jdk1.8,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用:

VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/var/lib/docker目录下创建了一个临时文件,并连接到容器的/tmp。

将项目的jar文件作为app.jar添加到容器

RUN表示在新创建的镜像中执行一些命令,然后把执行的结果提交到当前镜像。这里使用touch命令来改变文件的修改时间,Docker创建的所有容器文件默认状态都是“未修改”。这对于简单应用来说不需要,不过对于一些静态内容(比如:index.html)的文件就需要一个“修改时间”。

EXPOSE 容器暴露端口

ENTRYPOINT 应用启动命令 参数设定

 2.上传文件Dockerfile和demo-0.0.1-SNAPSHOT.jar到服务器的同一目录下

3.将jar包打包为镜像

docker build -t srpingbootdemo:yy .    ----------打包镜像

[root@localhost docker-build]# docker build -t springbootdemo .
Sending build context to Docker daemon   2.56kB
Step 1/6 : FROM java:8
 ---> d23bdf5b1b1b
Step 2/6 : MAINTAINER yy
 ---> Running in 8bc3ec99cc4b
Removing intermediate container 8bc3ec99cc4b
 ---> 27596ecbc4a0
Step 3/6 : VOLUME /tmp
 ---> Running in f543dbd852fd
Removing intermediate container f543dbd852fd
 ---> d97684dcdb7a
Step 4/6 : ADD demo-0.0.1-SNAPSHOT.jar app.jar
 ---> 2ff822597872
Step 5/6 : RUN bash -c 'touch /app.jar'
 ---> Running in 4a1dafe24a93
Removing intermediate container 4a1dafe24a93
 ---> 9e99256a6bd1
Step 6/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
 ---> Running in 23995d8597ec
Removing intermediate container 23995d8597ec
 ---> a932202f69ca
Successfully built a932202f69ca
Successfully tagged springbootdemo:latest
[root@localhost docker-build]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
springbootdemo      latest              a932202f69ca        16 seconds ago      643MB
nginx               yy                  18fdcae238b6        2 hours ago         133MB

打包完成后,可以docker images查看镜像

4. 运行镜像

[root@localhost docker-build]# docker run -d -p 8082:8081 springbootdemo
994b80a87bbbe53c569ae5e0c66c876e41141cadbc97495363a6c675e2e8e811

前台http://192.168.31.211:8082/hello就能访问了

5. 将镜像导出文件,可以在别的服务器运行

也可以推送到私服,别的服务器直接拉去

docker save -o springbootdemo.tar springbootdemo   ---------保存为本地文件

docker load -i springbootdemo.tar  导入镜像

6.查看日志的方式

方式一:docker logs 容器id

方式二:数据卷的形式 

docker run -d -v /home/vincent/logs/:/logs/ -p 8081:8080 springbootdemo:y1

前边的是宿主机中日志的目录,后边是容器中日志文件的输出目录

 

posted @ 2020-10-22 11:49  haohao1234  阅读(145)  评论(0编辑  收藏  举报