使用docker容器化springboot应用

Docker官网资料地址:

官网地址:Docker Documentation | Docker Documentation

命令:https://docs.docker.com/engine/reference/commandline/container/

github的demo: GitHub - docker/labs: This is a collection of tutorials for learning how to use Docker with various tools. Contributions welcome.

Linux 下管理的docker启停

启动:systemctl start docker

停止:systemctl stop docker

查看状态:systemtcl status docker

Docker体系架构

docker使用c/s结构

使用docker容器化springboot应用_第1张图片

 【图片截自官网】

Docker client 是大多数用户主要的用于操作docker的方式。它是一个命令行工具,允许用户输入docker命令(通过REST API 与Docker daemon进行通讯)调 Docker daemon执行相关操作。

Docker daemon是一个后台服务,监听api请求,进而对docker中的各种对象进行管理(如:image、container、network等),以及与其他的daemon交互。

Docker registries是一个存放image的地方。dockerhub是docker中默认的公共的仓库。用户可以从仓库拉取、推送镜像,以及删除等管理操作。我们可以在dockerhub注册账号,使用docker push /:命令把本地的镜像推送到公共仓库

Docker objects

image:镜像是一个只读的模板,层级结构。包含着一系列用于创建容器的的指令(也可以理解为运行所需的一切要素条件),每行指令就构建镜像的一层。

container:容器是一个可运行的镜像的实例。一个容器包含了应用和它所需的所有依赖配置。从根本上说容器是一个与其他容器、主机相隔离而运行的进程。 容器与其他容器分享使用主机的内核。 当容器运行时,会在在只读的镜像层外多了一个可读写的容器层,通过容器层可以与用户文件系统交互。

使用docker容器化springboot应用_第2张图片

【图片截自官网】 

要删除一个正在运行的容器前需要停止它。

执行docker run 命令会执行以下过程

例如:docker run alpine

1、docker client 连接docker daemon

2、会现在本地docker库中找镜像,找不到就会去仓库中下载(仓库可用)

3、docker daemon 创建容器并运行它

如果是:docker run alpine ls -l

  1. 那么docker daemon 还会在容器中执行ls -l命令
  2. docker daemon将容器的直接结果输出给docker client,docker client展示给用户

使用Dockerfile构建镜像

Dockerfile:定义了构建image的指令,每一条指令都会在image上创建一个层。当修改了Dockerfile的内容需要重新构建镜像,只会重建被修改的层。

官网文档介绍:

官方demo :https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

命令 :Dockerfile reference | Docker Documentation

使用Dockerfile将springboot项目构建成一个镜像,实现容器化,需要考虑怎么将运行应用所涉及的环境进行容器化。例如:如果想将整个应用所运行的所有环境制成一个镜像,就需要从操作系统镜像开始构建,再上增加数据库、web服务器、应用程序等。然而这样并不时一种好的方式,因为操作系统可以直接使用主机,数据库可以使用相应的官方镜像,应用程序可以和web服务器一起构建一个镜像。这些容器进行编排使用,这样更合理。

运行Springboot项目有两种方式:

  1. 可以打成war包的形式放置在web服务器(如tomcat)中运行。
  2. 可以打包成jar通过java  -jar启动(因为springboot内置有tomcat)。

我们采用第二种方式。以一个jre镜像为基础,将应用程序复制到这个jre的文件目录中

Dockerfile内容:

#构建基础镜像

FROM openjdk:8u275-jre-buster

#将jar包复制到镜像中

COPY ip.jar ip.jar

#指定当容器被运行时容器需要执行的命令,此命令就是启动应用程序

ENTRYPOINT ["java","-jar","/ip.jar"]

使用docker build命令构建image

修改代码后需要重新构建image,只需要再次执行build命令

docker build -t  .

-t 表示给镜像指定tag为

构建成功后可通过run命令运行镜像

docker run -p 8080:8080

-p 8080:8080 表示将左边主机的端口绑定到右边的容器的端口上,即访问左边主机端口就能访问到右边容器的端口。

你可能感兴趣的:(docker,容器,spring,boot)