Docker学习教程

我的环境:win10

文章目录

  • 入门教程推荐
    • 视频教程
    • 文本教程
  • 安装
  • 配置镜像加速器
    • 获取阿里镜像加速器
    • 配置加速器
  • Kitematic 可视化管理 Docker
  • 项目使用Docker
    • pom.xml 添加 docker-maven-plugin
    • 获取阿里镜像访问凭证
    • 修改 Maven 的 setting.xml 文件
  • 测试
    • 打包、上传至阿里镜像库及运行
  • 可视化工具
    • 选取
    • 使用
  • 配合Rancher管理容器

入门教程推荐

视频教程

推荐先看视频教程,再看本教程,思路更清晰。

  • Docker入门
  • 第一个docker化的java应用

文本教程

  • 菜鸟教程
  • Docker中文文档

安装

https://www.runoob.com/docker/centos-docker-install.html

配置镜像加速器

获取阿里镜像加速器

这里主要配置阿里云的docker镜像中心,提高镜像下载速度。
按照下面截图获取镜像加速器地址。
Docker学习教程_第1张图片
Docker学习教程_第2张图片

配置加速器

{
  "registry-mirrors": [
    "https://nj2b****.mirror.aliyuncs.com"
  ],
  "debug": true,
  "experimental": false
}

Docker学习教程_第3张图片

Kitematic 可视化管理 Docker

Kitematic是一个 Docker GUI 工具,它可以更快速、更简单的运行Docker,现在已经支持 Mac 和 Windows。Kitematic 目前在 Github 上开源,而它也早在 2015 年就已经被 Docker 收购。Kitematic 完全自动化了 Docker 安装和设置过程,并提供了一个直观的图形用户接口(GUI)来运行 Docker。通过 GUI 你可以非常容易的创建、运行和管理你的容器,不需要使用命令行或者是在 Docker CLI 和 GUI之间来回切换;同时也可以方便的修改环境变量、查看日志以及配置数据卷等。
Docker学习教程_第4张图片
详细使用参考:http://sinhub.cn/2018/06/try-to-use-kitematic-in-windows/

项目使用Docker

这里我使用之前Quartz学习案例这篇文章的项目来做讲解。

pom.xml 添加 docker-maven-plugin

项目完整pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.0.4.RELEASEversion>
        <relativePath/> 
    parent>
    <groupId>com.leigqgroupId>
    <artifactId>springboot-quartzartifactId>
    <version>0.0.1version>
    <name>quartzname>
    <description>Quartz demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
        <druid.version>1.0.29druid.version>
        <mybatis.version>1.3.1mybatis.version>
    properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
            
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-starter-loggingartifactId>
                exclusion>
            exclusions>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-quartzartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <scope>runtimescope>
        dependency>

        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>${druid.version}version>
        dependency>

        
        <dependency>
            <groupId>org.mybatis.spring.bootgroupId>
            <artifactId>mybatis-spring-boot-starterartifactId>
            <version>${mybatis.version}version>
        dependency>

        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>

        <dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelper-spring-boot-starterartifactId>
            <version>1.2.10version>
        dependency>

        
        
        <dependency>
            <groupId>org.apache.commonsgroupId>
            <artifactId>commons-lang3artifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-batchartifactId>
        dependency>

        
        
        <dependency>
            <groupId>org.mongodbgroupId>
            <artifactId>mongo-java-driverartifactId>
            <version>3.10.1version>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-log4j2artifactId>
        dependency>

        
        
        <dependency>
            <groupId>org.apache.logging.log4jgroupId>
            <artifactId>log4j-coreartifactId>
            <version>2.9.1version>
        dependency>

        
        

        
        
        <dependency>
            <groupId>org.apache.logging.log4jgroupId>
            <artifactId>log4j-nosqlartifactId>
            <version>2.9.0version>
        dependency>
    dependencies>

    <profiles>
        <profile>
            <id>devid>
            <activation>
                <activeByDefault>trueactiveByDefault>
            activation>
            
            <properties>
                <profiles.active>devprofiles.active>
            properties>
        profile>
        <profile>
            <id>testid>
            <properties>
                <profiles.active>testprofiles.active>
            properties>
        profile>
        <profile>
            <id>prodid>
            <properties>
                <profiles.active>prodprofiles.active>
            properties>
        profile>
    profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>

            
            
            <plugin>
                <groupId>com.spotifygroupId>
                <artifactId>docker-maven-pluginartifactId>
                <version>0.4.12version>
                <configuration>
                    
                    
                    <imageName>registry.cn-shenzhen.aliyuncs.com/leigq/${project.build.finalName}-${profiles.active}imageName>
                    <baseImage>java:8-alpinebaseImage>
                    <entryPoint>["java", "-jar","-Dspring.profiles.active=${profiles.active}", "/${project.build.finalName}.jar"]entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/targetPath>
                            <directory>${project.build.directory}directory>
                            <include>${project.build.finalName}.jarinclude>
                        resource>
                    resources>
                    
                    
                    <serverId>docker-hub-leigqserverId>
                    <registryUrl>https://registry.cn-shenzhen.aliyuncs.comregistryUrl>
                configuration>
                <executions>
                    <execution>
                        <id>build-imageid>
                        <phase>packagephase>
                        <goals>
                            <goal>buildgoal>
                        goals>
                    execution>
                executions>
            plugin>
        plugins>
    build>
project>

上面的 imageNameleigq 是阿里镜像的命名空间,一定要写,不然镜像push失败。

主要看下面这部分
Docker学习教程_第5张图片
docker 插件使用参考:https://www.jianshu.com/p/3b91b8958c3e

获取阿里镜像访问凭证

Docker学习教程_第6张图片

修改 Maven 的 setting.xml 文件

username、password是上面配置的阿里镜像的帐号密码。
id与项目中的一致,否则push不了。


<server>
  <id>docker-hub-leigqid>
  <username>[email protected]username>
  <password>{OD0x/SF2v2IHc/YtaaNRR9LgiLhKQJqQIGAa+w0QFLBMe5LdQKC2fTo5QonVCt99}password>
  <configuration>
    <email>[email protected]email>
  configuration>
server>

上面的密码使用了Maven自带的加密。

测试

打包、上传至阿里镜像库及运行

通过Maven命令就可以将项目打包成docker镜像并上传至阿里镜像仓库了。

mvn clean package -am -amd -Pdev -Dmaven.test.skip=true -Dpushlmage

关于命令中的 -am-amd-P-D这些参数不懂的,看这里:https://www.cnblogs.com/hiver/p/7850954.html

Docker学习教程_第7张图片
Docker学习教程_第8张图片
可以看到项目已经成功打包成docker镜像了,并且已经上传至阿里镜像仓库。

我们先在本地查查镜像是否存在:

docker的基础命令在最上面的视频中已有讲解,读者也可以自己去百度下

docker images

Docker学习教程_第9张图片
我们尝试运行这个镜像:
Docker学习教程_第10张图片
运行成功。

然后我们去阿里镜像仓库看看镜像有没有push上去

Docker学习教程_第11张图片
镜像成功push上来了。

接下来我们把本地的镜像删除掉,将阿里的镜像pull下来,看看能不能正常运行。
删除本地此项目的镜像,如果删除报错可能是容器正在运行,需要先停止容器,然后再删除容器,最后在删除镜像。
Docker学习教程_第12张图片
拉取阿里镜像:
Docker学习教程_第13张图片
拉取成功,运行试试:

Docker学习教程_第14张图片
Docker学习教程_第15张图片
运行成功!

docker run -p8080:8080 ba15ea250a0a

这条命令中的-p8080:8080是将docker容器的8080端口映射到我们使用的主机上,不映射的话,我们在浏览器就访问不到了。

Docker学习教程_第16张图片

可视化工具

选取

  • Docker的web端管理平台对比(DockerUI 、Shipyard、Portainer、Daocloud)

通过上面的比较决定使用Shipyard, Portainer作为备选方案

使用

  • Shipyard

参考这个安装使用:Docker可视化管理工具————Shipyard

  • Portainer

参考这个安装使用:Portainer – Docker可视化管理工具的安装配置及使用

配合Rancher管理容器

待续…
Docker学习教程_第17张图片

你可能感兴趣的:(Java,运维)