1 .简介
建议你在阅读这篇文章的时候对Docker有一定的了解。
我们先来了解一下Docker是什么。
Docker是Linux容器的一种封装,提供了一个简单易用的容器接口。它是目前最流行的Linux容器解决方案。
Docker将应用程序及其依赖项打包在一个文件中。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器中运行,就像在真实的物理机器上运行一样。有了Docker,你就不用担心环境了。
总的来说,Docker的界面相当简单,用户可以轻松地创建和使用容器,并将自己的应用程序放入其中。容器也可以被版本化、复制、共享和修改,就像管理公共代码一样。
Docker有什么用
提供一次性环境,提供灵活的云服务,搭建微服务架构,如何搭建Docker环境
使用yum安装
#检查您当前的内核版本uname -r#安装dockeryum -y安装Docker#启动Docker后台服务服务Docker启动#测试并运行hello-world。因为没有hello-world的本地映像,所以将下载hello-world的镜像并在容器中运行。Docker运行hello-world脚本安装:
#确保yum包更新到最新的sudo yum更新#执行Docker安装脚本,该脚本将添加Docker.repo源代码并安装Docker。curl-fssl https://get.docker.com/| sh #启动docker进程sudo服务docker start#验证docker是否成功安装并在容器中执行一个测试镜像sudo docker运行hello-world由于国内下载镜像的速度较慢,建议使用国产镜像源代替。
美国总统之行政命令
Vim /etc/docker/daemon.json添加以下代码{ \ ‘ registry-mirrors \ ‘ 3360[\ ‘ \ ‘]} 2。创建项目
首先我们创建一个SpringBoot项目,这个步骤就不重复了。您可以使用IDEA构建或访问SpringBoot项目来构建项目。
完整的项目结构:
boot-dockerpom.xmlsrcmainJavacom示例bootdockerBootDockerApplication.javaresources- application . properties- static-templates然后创建一个控制器。这里不太复杂的主要是演示Docker如何部署项目。
主要代码:
然后启动并打开浏览器访问接口地址:
项目已经完成,现在开始部署到Docker中。
3.部署项目
3.1使用Dockerfile
在部署项目之前,我们需要知道Dockerfile是什么。
Dockfile是由Docker程序解释的脚本。Dockerfile是由一个个指令组成的,每个指令对应一个Linux下的命令。Docker程序将这些Dockerfile指令翻译成真正的Linux命令。Dockerfile有自己的编写格式和支持的命令,Docker程序解决了这些命令之间的依赖关系,类似于Makefile。Docker程序将读取Dockerfile并根据指令生成定制的图像。相比图像的黑匣子,Dockerfile的显而易见的脚本更容易被用户接受,它清晰地展示了图像是如何产生的。有了Dockerfile,当我们需要定制自己额外的需求时,只需要在Dockerfile上添加或修改指令,重新生成镜像,就省去了敲命令的麻烦。涉及
让我们先打包并执行项目。
Mvpackage创建Dockerfile文件。
触摸文件添加以下信息触摸文件:
注意Dockerfile必须和Jar包在同一个路径下。
FROM JAVA :8 expose 8080 volume/sl madd boot-docker-0 . 0 . 1-snapshot . jar boot-docker . jarrun sh-c ‘ touch/boot-docker . jar ‘ env JAVA _ OPTS=\ ‘ \ entry point[\ ‘ sh \ ‘,\’-c \ ‘,\ ‘ JAVA $ JAVA _ OPTS-DJ ava . security . EGD=file :/dev/。/urandom-jar/boot-docker . jar \ ‘]来自基本映像是必要的,它意味着你的项目将建立在这个基础上。EXPOSE允许指定端口转发卷,并创建一个可以从本地主机或其他容器挂载的挂载点,一般用于存储需要保留的数据库和数据。将文件从路径副本添加到容器内部路径。支持远程url。如果是远程url,权限将是600ENV。ENTRYPOINT可用于设置docker容器的环境变量。指定Docker映像作为实例(即Docker容器)运行时要执行的命令或文件。CMD ENTRYPOINT都可以用来指定要开始运行的程序,这两个命令都有两个未使用的语法:CMD [\’ls\ ‘,’ ‘-l \ ‘]CMD ls-l Start build:
Docker Build-t引导-Docker。-t Boot-Docker代表您想要构建的名称
查看更多参数输入:docker构建-帮助
控制台输出:
从java:8向Docker守护程序发送构建上下文16.81 mbstep 1/7 :-d 23 BDF 5 B1 bstep 2/7 : EXPOSE 8080-使用缓存-b 2445 BF 62 da 8 step 3/7 : VOLUME/SLM-使用缓存-b 73d 0 b 73 b 868 step 4/7 : ADD boot-Docker-0 . 0 . 1-snapshot . jar boot-Docker . jar-使用缓存-2/urandom-jar/boot-docker . jar \]-使用cache-92a0da91ea19成功构建92a0da91ea19成功标记boot docker 3360最新,我们可以看到已经构建好了。句子成功构建92a0da91ea19表示刚刚构建的镜像ID。现在我们可以根据这个ID进行操作了。
输入运行命令启动。
dock Run-D-p 80803360808092 a 0 da 91 ea 19控制台输出:
root @ Izz 30 yg 92 yl 9 i3 z/# docker run-D-p 808033608092 a 091 ea 1962 b 837 AC 75 e 3d 83 a4 be 27 b 0 f 6 ede 5 f 70 c 69 a 98 BAC 4 f 74 c 7 e 6D 3 e 70282 ee root @ Izz 30 yg 92 yl 9 i3 z/#-D注意这里访问的是主机的IP plus端口,因为它映射到了主机的端口。
查看更多参数输入:docker构建-帮助
3.2使用Maven构建
上面说用Dockerfile构建,现在用Maven构建,
将docker构建依赖项添加到pom
Com。Spotify Docker-Maven-Plugin 0 . 4 . 13 $ { Docker . image . prefix }/$ { project . artifact ID }/SLM//$ { project . build . directory } $ { project . build . final name }。jar注意dockerDirectory仍然需要设置Dockerfile文件的路径。
将项目复制到Linux主机,并执行unzip命令。
解压缩boot-docker.zip CD boot-docker执行命令:
mvpackage docker :构建控制台的输出:
[信息]构建映像来自JAVA :8-d 23 BDF 5 B1 bstep 2/7 : EXPOSE 8080-使用缓存-b 2445 BF 62 da 8级3/7 :体积/SLM-使用缓存-b 73d 0 b 73 b 868第4/7级3360添加引导-docker-0。0 .1-快照。罐子启动-对接器。罐子-使用缓存/urandom-jar/boot-docker。jar \ ‘]-使用缓存-92 A0 da 91 ea 19进度消息{ id=null,状态=null,流=null,错误=null,进度=null,进度详细信息=null }成功构建92 A0 da 91 ea 19成功标记boot-docker/boot-docker 3360最新[信息]构建引导对接程序/引导对接程序[信息]-[信息]构建成功[信息]-[信息]总时间: 19.908s[信息]和上面相同。启动
来源:文章首发于乱敲代码