docker创建springboot镜像

一、前言

关于docker的知识,在这里我就不再赘述,相信大家都玩过虚拟机,那么你可以把docker的镜像当做是迷你版的虚拟机,它可以宿主在多种操作系统中,容器之间相互都是独立,它的优点就是占用内存小,方便部署,有点拎包入住的意思。

二、部署步骤

1、安装docker

这里就不再细说了,网上有很多详细的安装步骤,我这边安装的18.03.1-ce


查看docker是否安装

2、将springboot打包的jar文件上传至服务器/home/springboot/docker_springboot_demo/


上传jar包

3、在jar文件同级目录创建Dockerfile文件->#vim Dockerfile


编辑Dockerfile文件

附上粘贴板:

FROM java:8

VOLUME /tmp

ADD DOCKERDEMO.jar app.jar

EXPOSE 8401

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

3、创建docker镜像

在/home/springboot/docker_springboot_demo/ 执行命令 docker build -t docker_springboot_demo .                          (温馨提示:注意最后的点)


创建镜像

创建成功,可以用docker命令查下:docker images

4、运行镜像

执行命令(这里的8080端口是映射到外界的真实访问端口):docker run -p 8080:8401 -d docker_springboot_demo

可以执行命令查看运行的镜像:docker ps


运行镜像

5、验证springboot工程是否正常启动

执行命令查看工程运行日志:docker logs {容器ID}

我们看日志是成功启动的,到浏览器访问下->


访问服务

OK,没问题,当然我们还可以启动多个服务,比如再开一个8081端口的:docker run -p 8081:8401 -d docker_springboot_demo

三、扩展

1、平常我们启动springboot服务一般会设置内存堆大小、回收模式,我们可以这样启动镜像:docker run --rm -e JAVA_OPTS='-Xmx2048m -Xms2048m'  -p 8080:8401 -d docker_springboot_demo

2、这里我还要特意提一下域名映射,有的同学平常的一些项目会会使用hostname来替代频繁变化的IP,那么这个IP在宿主机/etc/homts里面的配置的默认是不会生效的,进入到容器内部:docker exec -it {容器ID} bash    查询下:cat /etc/hosts  是没有的;解决:你可以在运行镜像的时候指定:

docker run --rm -e JAVA_OPTS='-Xmx2048m -Xms2048m' --add-host mysql_host:172.16.16.17 --add-host redis_host:172.16.16.18  -p 8080:8401 -d docker_springboot_demo

3、镜像一次创建,无限使用(有点免安装软件的味道),你可以把镜像压缩打包,然后传到其他服务器解压加载就行了

<1>导出镜像

docker save : | gzip > _.tar.gz

<2>导入镜像

gunzip -c _.tar.gz | docker load

四、采坑

1、在运行镜像时报错:WARNING: IPv4 forwarding is disabled. Networking will not work.

解决:在docker的宿主机中更改以下

[root@localhost ~]# vi /usr/lib/sysctl.d/00-system.conf

添加如下代码:

net.ipv4.ip_forward=1

重启network服务

# systemctl restart network

五、后语

小生才疏学浅,有不对的地方请指教,谢谢大家!

你可能感兴趣的:(docker创建springboot镜像)