Docker_基础运用
1 docker的好处
开箱即用;快速部署;可移植性强;环境隔离
2 docker的常用命令
查看系统存在的镜像
docker images
网络搜索镜像(镜像名称组成 repository:tag)
docker search 镜像名称
拉取镜像下载到本地(镜像名称组成 repository:tag)
docker pull 镜像名称
删除镜像(-f 强制删除)
docker rmi -f 镜像id
运行 (-d 表示守护进程,后台运行; -p表示端口映射,后面表示容器端口,前面表示物理机端口,物理机端口不能重复)(镜像名称组成 repository:tag)
当镜像在本地不存在时,该命令会自动从网络上拉取镜像到本地
docker run -d -p 物理机端口:容器端口 镜像名称 --name "指定的容器名称"
查看当前运行的容器
docker ps
查看容器内部信息
docker inspect 容器名称或者容器id
停止容器
docker stop 容器名称或者容器id
启动容器
docker start 容器名名称
访问:访问的时候还是按照物理机配置的端口访问。
3 上传镜像到仓库
存储镜像的仓库分为私有和公有。
1) 上传公有的镜像。
在阿里云上创建镜像仓库(https://www.alibabacloud.com/help/zh/doc-detail/63591.htm)
通过界面创建仓库的时候会有选择,点击公有
在本地服务器上登录在阿里云上创建的仓库,需要密码(教程阿里云官网有手册)
然后打版本,上传
docker tag 镜像id 仓库地址:[镜像版本号]
docker push 镜像id 仓库地址:[镜像版本号]
直接拉取镜像
2) 上传私有的镜像。
在阿里云上创建镜像仓库(https://www.alibabacloud.com/help/zh/doc-detail/63591.htm)
通过界面创建仓库的时候会有选择,点击私有
在本地服务器上登录在阿里云上创建的仓库,需要密码(教程阿里云官网有手册)
然后打版本,上传
docker tag 仓库地址:[镜像版本号]
docker push 仓库地址:[镜像版本号]
在本地服务器上登录在阿里云上创建的仓库,需要密码(教程阿里云官网有手册),然后拉取镜像
4 自动化部署镜像jenkins(持续构建 制作镜像->拉取镜像->运行)
5 使用Maven构建Docker镜像
使用docker的maven插件构建springboot应用
docker的maven插件可以将springboot打包成镜像,所以将一个应用制作为镜像有很多方式,这是docker的功能,我们可以在IDEA中引入docker的maven插件的方式直接打包为镜像,也可以直接将非docker的maven打包之后的项目放在linux上,用docker进行命令制作镜像。
官网介绍如下
https://spring.io/guides/gs/spring-boot-docker/
1) 简单添加一个springboot应用
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class DockerDemoApplication { @RequestMapping public String home() { return "Hello Docker World"; } public static void main(String[] args) { SpringApplication.run(DockerDemoApplication.class, args); } }
2) 转到localhost:8080以查看您的“Hello Docker World”消息。
3) create a Dockerfile in our Spring Boot project
dockerfile是一系列命令和参数构成的脚本,这些命令应用于基本镜像,最终创建一个新的镜像。
在项目的根目录下创建一个Dockerfile 文件,右键项目,点击创建。
输入以下内容
FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"]
from 命令:需要一个基础镜像,即openjdk,版本是8-jdk-alpine(springboot的应用的启动需要最基础的java环境)
volume命令:持久化dcker的工作目录打/tmp目录下
arg命令:加入的是我们打包后的jar包,即对应pom文件中的写的jar_file标签。
copy:将本地文件复制到docker容器
entrypoint: 容器启动时需要的命令
具体的其他参数可百度dockerfile查看其他参数。
3 ) 添加maven的配置
<properties> <docker.image.prefix>sunru</docker.image.prefix> </properties>
<build>
<finalName>demon_docker</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.9</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
4) 构建镜像
执行 mvn install dockerfile:build
需要本地有docker环境,否则会构建失败。
然后通过3 上传镜像到仓库进行镜像上传