赞
踩
Docker可比喻成一个装应用的容器,将应用及其依赖文件、数据等打包在容器内,直接运行容器即可把应用运行起来,而无需关心环境配置问题。
通常情况下,一个应用正常启动时,可能需要的环境要有JDK、Tomcat服务器和配置文件等等,同时又要需要考虑版本兼容问题,若出现部分配置未弄好可能导致应用无法启动。Docker就是将其集成一个容器内,解决所出现的问题。
如:在Linux上安装JDK/MySQL时,需要下载不同的Jar包,再加上配置不同的信息内容;而使用Docker只需要一条命令 docker pull mysql/java 即可。
三个概念:仓库、镜像、容器
仓库:集中存放镜像文件的地方,可想象成Gitee仓库存放代码一样。
(国外最大的开发仓库 Docker Hub,国内较为知名的是阿里云、网易云(需要配置镜像加速))
镜像:一系列所需要运行的文件/环境,可想象成Jar包、MySQL、JDK等。
容器:可看作是一个简装的Linux系统,可以独立运行一个/多个应用。
个人理解:Docker将应用及其依赖打包成一个总的镜像里面,通过docker命令,将镜像生成容器,程序就是在这个容器里面运行的,无需关心环境问题。
安装环境:Centos8、Linux操作系统
使用工具:Xftp 7
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 启动Docker
systemctl start docker
# 设置开机自启动
systemctl enable docker
# 验证安装是否成功
docker version
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 指定该Main Class为全局的唯一入口 --> <mainClass>com.lbf.Application</mainClass> <layout>ZIP</layout> </configuration> <executions> <execution> <goals> <!--可以把依赖的包都打包到生成的Jar包中--> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * Docker 测试类 */ @RestController @RequestMapping("/v1/dockers") public class DockerController { // 请求地址:http://localhost:8080/v1/dockers/get @GetMapping("/get") public String docker(){ return "Docker测试成功!!!"; } }
Docker首先会从本地查询所需要的镜像文件,若没有,则从仓库拉取;若有,则不拉取。
# 基础镜像,即运行环境 JDK 8(与SpringBoot项目中的JDK版本尽量保持一致)
FROM java:8
# SpringBoot内嵌的Tomcat容器默认使用该 /tmp 作为工作目录
VOLUME /tmp
# 拷贝文件(SpringBoot项目打包的Jar包名)并重命名(另起一个新名字)
ADD docker-1.0.jar docker.jar
# 不是真正的访问端口(标识SpringBoot项目访问端口,告知部署人员要开发的端口号)(只是标记作用,可无)
EXPOSE 8080
# 容器启动时的命令(等价于 java -jar xxxx.jar)
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/docker.jar"]
-d:后台运行容器,表明SpringBoot项目在此可以进行后台运行程序。
–name:对所构建的容器新取一个名字(dokcer1)
-p:将容器内部的8080端口映射(编写Dockerfile文件)到SpringBoot项目内的访问端口。
f0789f99cf8b:表示所构建的镜像名称
CONTAINER ID:所构建的容器ID
IMAGE:镜像名称
本文记录个人学习Docker的总结内容,安装、配置和部署等内容,在过程中,应注意命令不要写错,加上Docker插件等问题,若出现理解不到位的地方,请多指出。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。