我的环境:win10
推荐先看视频教程,再看本教程,思路更清晰。
https://www.runoob.com/docker/centos-docker-install.html
这里主要配置阿里云的docker镜像中心,提高镜像下载速度。
按照下面截图获取镜像加速器地址。
{
"registry-mirrors": [
"https://nj2b****.mirror.aliyuncs.com"
],
"debug": true,
"experimental": false
}
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/
这里我使用之前Quartz学习案例这篇文章的项目来做讲解。
项目完整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>
上面的 imageName
中 leigq
是阿里镜像的命名空间,一定要写,不然镜像push失败。
主要看下面这部分
docker 插件使用参考:https://www.jianshu.com/p/3b91b8958c3e
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镜像了,并且已经上传至阿里镜像仓库。
我们先在本地查查镜像是否存在:
docker的基础命令在最上面的视频中已有讲解,读者也可以自己去百度下
docker images
然后我们去阿里镜像仓库看看镜像有没有push上去
接下来我们把本地的镜像删除掉,将阿里的镜像pull下来,看看能不能正常运行。
删除本地此项目的镜像,如果删除报错可能是容器正在运行,需要先停止容器,然后再删除容器,最后在删除镜像。
拉取阿里镜像:
拉取成功,运行试试:
docker run -p8080:8080 ba15ea250a0a
这条命令中的-p8080:8080
是将docker容器的8080端口映射到我们使用的主机上,不映射的话,我们在浏览器就访问不到了。
通过上面的比较决定使用Shipyard
, Portainer
作为备选方案
参考这个安装使用:Docker可视化管理工具————Shipyard
参考这个安装使用:Portainer – Docker可视化管理工具的安装配置及使用