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 上传镜像到仓库进行镜像上传

posted @ 2019-08-25 16:55  S-Mustard  阅读(282)  评论(0编辑  收藏  举报