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鏈接服務器