• Docker学习教程


    我的环境:win10

    入门教程推荐

    视频教程

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

    文本教程

    安装

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

    配置镜像加速器

    获取阿里镜像加速器

    这里主要配置阿里云的docker镜像中心,提高镜像下载速度。
    按照下面截图获取镜像加速器地址。
    在这里插入图片描述
    在这里插入图片描述

    配置加速器

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

    在这里插入图片描述

    Kitematic 可视化管理 Docker

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

    项目使用Docker

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

    pom.xml 添加 docker-maven-plugin

    项目完整pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <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.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.leigq</groupId>
        <artifactId>springboot-quartz</artifactId>
        <version>0.0.1</version>
        <name>quartz</name>
        <description>Quartz demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
            <druid.version>1.0.29</druid.version>
            <mybatis.version>1.3.1</mybatis.version>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <!--必须排除掉默认的logback-->
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <!--quartz定时任务-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-quartz</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
    
            <!-- druid数据库连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
    
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.2.10</version>
            </dependency>
    
            <!--编写更少量的代码:使用apache commons工具类库:
            https://www.cnblogs.com/ITtangtang/p/3966955.html-->
            <!--apache.commons.lang3-->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
            </dependency>
    
            <!--spring-batch-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-batch</artifactId>
            </dependency>
    
            <!-- mongodb driver -->
            <!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
            <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongo-java-driver</artifactId>
                <version>3.10.1</version>
            </dependency>
    
            <!-- log4j2 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
            </dependency>
    
            <!-- 必需,否则报错 Springboot 1.5.x 使用 2.7版本-->
            <!--log4j-core-->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.9.1</version>
            </dependency>
    
            <!--需要使用log4j2的AsyncLogger需要包含disruptor-->
            <!--<dependency>
                <groupId>com.lmax</groupId>
                <artifactId>disruptor</artifactId>
                <version>3.3.7</version>
            </dependency>-->
    
            <!-- 必需,否则报错 Springboot 1.5.x 使用 2.7版本-->
            <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-nosql -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-nosql</artifactId>
                <version>2.9.0</version>
            </dependency>
        </dependencies>
    
        <profiles>
            <profile>
                <id>dev</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
                <!--自定义字段-->
                <properties>
                    <profiles.active>dev</profiles.active>
                </properties>
            </profile>
            <profile>
                <id>test</id>
                <properties>
                    <profiles.active>test</profiles.active>
                </properties>
            </profile>
            <profile>
                <id>prod</id>
                <properties>
                    <profiles.active>prod</profiles.active>
                </properties>
            </profile>
        </profiles>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
    
                <!--docker 插件,将项目打包成镜像,推送至阿里镜像仓库-->
                <!-- docker 插件使用参考:https://www.jianshu.com/p/3b91b8958c3e -->
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>0.4.12</version>
                    <configuration>
                        <!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 -->
                        <!-- 详见:https://github.com/spotify/docker-maven-plugin    Invalid repository name ... only [a-z0-9-_.] are allowed-->
                        <imageName>registry.cn-shenzhen.aliyuncs.com/leigq/${project.build.finalName}-${profiles.active}</imageName>
                        <baseImage>java:8-alpine</baseImage>
                        <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}.jar</include>
                            </resource>
                        </resources>
                        <!--对应 Maven 的 setting.xml 中的 server-id -->
                        <!-- Maven 的 setting.xml 密码加密参考:https://blog.csdn.net/taiyangdao/article/details/79500507-->
                        <serverId>docker-hub-leigq</serverId>
                        <registryUrl>https://registry.cn-shenzhen.aliyuncs.com</registryUrl>
                    </configuration>
                    <executions>
                        <execution>
                            <id>build-image</id>
                            <phase>package</phase>
                            <goals>
                                <goal>build</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>
    
    

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

    主要看下面这部分
    在这里插入图片描述
    docker 插件使用参考:https://www.jianshu.com/p/3b91b8958c3e

    获取阿里镜像访问凭证

    在这里插入图片描述

    修改 Maven 的 setting.xml 文件

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

    <!-- My 阿里云 docker 私仓 -->
    <server>
      <id>docker-hub-leigq</id>
      <username>1725880826@qq.com</username>
      <password>{OD0x/SF2v2IHc/YtaaNRR9LgiLhKQJqQIGAa+w0QFLBMe5LdQKC2fTo5QonVCt99}</password>
      <configuration>
        <email>191789784@qq.com</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镜像了,并且已经上传至阿里镜像仓库。

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

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

    docker images
    

    在这里插入图片描述
    我们尝试运行这个镜像:
    在这里插入图片描述
    运行成功。

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

    在这里插入图片描述
    镜像成功push上来了。

    接下来我们把本地的镜像删除掉,将阿里的镜像pull下来,看看能不能正常运行。
    删除本地此项目的镜像,如果删除报错可能是容器正在运行,需要先停止容器,然后再删除容器,最后在删除镜像。
    在这里插入图片描述
    拉取阿里镜像:
    在这里插入图片描述
    拉取成功,运行试试:

    在这里插入图片描述
    在这里插入图片描述
    运行成功!

    docker run -p8080:8080 ba15ea250a0a
    

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

    在这里插入图片描述

    可视化工具

    选取

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

    使用

    • Shipyard

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

    • Portainer

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

    配合Rancher管理容器

    待续…
    在这里插入图片描述


    作者:不敲代码的攻城狮
    出处:https://www.cnblogs.com/leigq/
    任何傻瓜都能写出计算机可以理解的代码。好的程序员能写出人能读懂的代码。

     
  • 相关阅读:
    开源cms系统We7插件开发准备工作全面就绪 开源CMS
    We7促销力度惊人:又开源又送iphone! 开源CMS
    开源cms系统:We7 CMS 2.5版内测版发布啦! 开源CMS
    开源cms系统的发展趋势 开源CMS
    We7 CMS支撑全新宁夏检察院门户网站 开源CMS
    We7开放式维基文档中心正式开通 开源CMS
    我公司签约成都申达科技打造校园行业网站群建设新的应用平台 开源CMS
    西部动力中标北京京能热电股份有限公司班组管理系统网站群项目 开源CMS
    SQL查数据库表,字段
    DataTable Excel
  • 原文地址:https://www.cnblogs.com/leigq/p/13406548.html
Copyright © 2020-2023  润新知