访问量
访客数

SpringBoot整合Docker

2020.08.30 阅读量

Linux上安装Docker

2017年的3月1号之后,Docker的版本命名开始发生变化,同时将CE版本和EE版本进行分开。

  • Docker社区版(CE):为了开发人员或小团队创建基于容器的应用,与团队成员分享和自动化的开发管道。docker-ce提供了简单的安装和快速的安装,以便可以立即开始开发。docker-ce集成和优化,基础设施。(免费)
  • Docker企业版(EE):专为企业的发展和IT团队建立谁。docker-ee为企业提供最安全的容器平台,以应用为中心的平台。(付费)

以下是CentOSRHEL上使用yum来安装Docker示例。

  1. Docker依赖于系统的一些必要的工具,所以先安装依赖。
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  2. 通过使用yum-config-manager来设置Docker的稳定仓库。(在阿里云镜像站上面可以找到docker-ce的软件源,使用国内的源速度比较快)。
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  3. 安装docker-ce,社区版,免费。
    yum clean allyum makecache fastyum -y install docker-ce
    
  4. 启动服务。
     #service 命令的用法
    $ sudo service docker start
    
    #systemctl 命令的用法
    $ sudo systemctl start docker
    
  5. 查看安装版。
    docker version
    
  6. Docker需要用户具有sudo权限,为了避免每次命令都输入sudo,可以把用户加入Docker用户组。
    sudo usermod -aG docker $USER
    

创建测试

/**
 * <p>
 * Hello Controller
 * </p>
 */
@RestController
@RequestMapping
public class HelloController {
    @GetMapping
    public String hello() {
        return "Hello,From Docker";
    }
}

application.yml文件。

server:
  port: 8080
  servlet:
    context-path: /demo

Dockerfile

创建一个名字叫Dockerfile的文件,路径任意。 DockerFile

# 基础镜像
FROM openjdk:8-jdk-alpine

# 作者信息
MAINTAINER "whitepure"

# 添加一个存储空间 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp

# 暴露8080端口
EXPOSE 8080

# 添加变量,获取target下的jar包; 如果使用dockerfile-maven-plugin,则会自动替换这里的变量内容
ARG JAR_FILE=target/demo-docker.jar

# 往容器中添加jar包
ADD ${JAR_FILE} app.jar

# 启动镜像自动运行程序
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]

pom文件

pom文件加入Docker插件。

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <dockerfile-version>1.4.9</dockerfile-version>
</properties>

<build>
    <finalName>demo-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>${dockerfile-version}</version>
            <configuration>
                <repository>${project.build.finalName}</repository>
                <tag>${project.version}</tag>
                <buildArgs>
                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

使用maven打包 docker打包

Docker镜像测试

  1. 前往 Dockerfile 目录,打开并命令行执行。

    执行docker build命令,docker就会根据Dockerfile里你定义好的命令进行构建新的镜像。 -t代表要构建的镜像的 tag.代表当前目录,也就是 Dockerfile所在的目录。

    docker build -t demo-docker .
    
  2. 查看Docker镜像列表。
    docker images
    
  3. 运行该镜像。使用镜像demo-docker,将容器的8080端口映射到主机的9090端口。
    docker run -d -p 9090:8080 demo-docker
    
  4. 打开浏览器访问地址http://localhost:9090/demohellodocker

如果要停止Docker镜像,首先获取镜像id,然后在用stop命令停止运行镜像。

docker ps -a: 显示所有的容器,包括未运行的

whitepure@MacBook-Pro demo-docker % docker ps -a
CONTAINER ID   IMAGE      ...    NAMES
421fcff1be87   demo-docker   ...  affectionate_nightingale
whitepure@MacBook-Pro demo-docker % docker stop 421fcff1be87
421fcff1be87

如果要删除镜像,也需要先获取镜像id,再用rm命令进行删除。

whitepure@MacBook-Pro demo-docker % docker ps -a
CONTAINER ID   IMAGE         ...    NAMES
421fcff1be87   demo-docker    ...     affectionate_nightingale
whitepure@MacBook-Pro demo-docker % docker rm 421fcff1be87
421fcff1be87
发表评论