Dockefile是一个能够用于编译出Docker镜像的一组自定义指令集合java
这里有必要介绍一个Maven插件dockerfile-maven-plugin,dockerfile-maven-plugin是一个用于构建和推送Docker镜像的Maven插件。下面详细介绍如何利用这个插件构建远程镜像linux
Docker提供了Remote API,能够经过REST接口进行Docker服务的控制,包括pull/push等全部操做,结果与本机的操做彻底同样。使用Docker Remote API能够经过脚本进行Docker集群的自动化控制。
git
linux上打开远程端口能够参考如下连接:Docker之开启远程访问的实现
github
在MAC上却不能按照上述方式实现,因此MAC须要经过socat实现,实现命令以下docker
$ docker pull alpine/socat $ docker run -d --restart=always \ -p 2375:2375 \ -v /var/run/docker.sock:/var/run/docker.sock \ alpine/socat \ tcp-listen:2375,fork,reuseaddr unix-connect:/var/run/docker.sock 复制代码
若是验证docker远程APi是否打开,使用命令,若是打印日志以下,则表示远程APi端口已经打开apache
$ curl 192.168.27.180:2375/version {"Version":"1.11.2","ApiVersion":"1.23","GitCommit":"56888bf","GoVersion":"go1.5.4", "Os":"linux","Arch":"amd64","KernelVersion":"4.4.12-moby", "BuildTime":"2016-06-06T23:57:32.306881674+00:00"} 复制代码
<?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> <groupId>apollo-docker</groupId> <artifactId>apollo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <dockerfile-maven-version>1.4.12</dockerfile-maven-version> </properties> <build> <plugins> <!--Docker自动化部署插件--> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>${dockerfile-maven-version}</version> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <repository>${project.artifactId}</repository> <contextDirectory>${project.basedir}</contextDirectory> <buildArgs> <RUN_SHELL>${project.basedir}/apollo-run.sh</RUN_SHELL> </buildArgs> </configuration> </plugin> </plugins> </build> </project> 复制代码
#下载openjdk jre linux环境 FROM maven:3.6.1-jdk-8-alpine #标注做者信息 MAINTAINER guohanlin@xyz.cn #配置linux服务器须要的环境 RUN apk add --no-cache git bash openssh-client tzdata #指定到工做目录 WORKDIR /usr/src/app/apollo #配置环境 ENV TZ Asia/Shanghai #定义工程远程地址 ARG GIT_URL ENV GIT_URL $GIT_URL #定义分支 ARG BRANCH ENV BRANCH $BRANCH #工程Java VM 启动参数 ARG VM_OPTIONS ENV VM_OPTIONS $VM_OPTIONS #须要启动的服务 ARG SERVER_NAME ENV SERVER_NAME $SERVER_NAME #迁移启动脚本至工做目录 ADD ${RUN_SHELL} /usr/src/app/apollo #开始运行启动脚本 CMD [ "bash", "apollo-run.sh" ] # replace this with your application's default port EXPOSE $SERVER_NAME 复制代码
关于基础镜像,能够去Docker Hub上搜索bash
window为例,配置DOCKER_HOST指向Docker服务器的2375端口,以tcp链接服务器