(六):maven docker 相關(guān)操作

簡介

通過maven插件,結(jié)合maven命令荐开,實現(xiàn)打包模孩、生成鏡像尖阔、推送到倉庫中心功能。

1榨咐、開啟Docker daemon服務(wù)遠(yuǎn)程訪問

修改配置

  • [x] 修改 /etc/docker/daemon.json 文件介却,沒有就創(chuàng)建,文件內(nèi)容如下:
{
  "hosts": [
    "tcp://0.0.0.0:2376",
    "unix:///var/run/docker.sock"
  ],
    "insecure-registries" : ["172.16.1.146"] 
}

重啟docker

sudo systemctl daemon-reload
sudo systemctl restart docker

驗證

[root@localhost ~]# docker -H 172.16.1.191:2376 images
REPOSITORY                                      TAG                    IMAGE ID            CREATED             SIZE
172.16.1.146:8888/wondertek/docker-test         1.0.0-20180713171831   063b60635335        25 minutes ago      727 MB
172.16.1.146:8888/wondertek/docker-test         1.0.0-20180713171646   3b8deedff90d        27 minutes ago      727 MB
172.16.1.146:8888/wondertek/docker-test         1.0.0-20180713091144   aa898d0cbd28        32 minutes ago      727 MB
172.16.1.146:8888/wondertek/docker-test         1.0.0-2018071308       a91e9e3b0678        About an hour ago   727 MB
172.16.1.146:8888/wondertek/docker-test         1.0.0-20180713083134   a91e9e3b0678        About an hour ago   727 MB
172.16.1.146:8888/wondertek/docker-test         1.0.0-20180713080550   db286edbbc18        About an hour ago   727 MB

2块茁、MAVEN配置

此處根據(jù)dockerfile生成鏡像齿坷,
pom.xml中添加插件。

插件git地址:https://github.com/spotify/dockerfile-maven

<!-- 生成時間戳 -->
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.9.1</version>
    <executions>
        <execution>
            <id>timestamp-property</id>
            <goals>
                <goal>timestamp-property</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <name>current.time</name>
        <pattern>yyyyMMddHHmmss</pattern>
        <timeZone>GMT+8</timeZone>
    </configuration>
</plugin>

<!-- 打包生成鏡像数焊、push鏡像到私有鏡像中心 -->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.4.0</version>
    <executions>
        <execution>
            <id>default</id><!-- 要綁定到的生命周期的階段 -->
            <phase>install</phase><!-- 要綁定到的生命周期的階段 -->
            <goals> <!-- 要綁定的插件的目標(biāo) -->
                <goal>build</goal>
                <goal>push</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <!-- 私有鏡像中心的用戶名 -->
        <username>registry</username>
        <!-- 私有鏡像中心的密碼 -->
        <password>******</password>
        <!-- 172.16.1.146:私有鏡像中心地址永淌; wondertek/${project.artifactId}:鏡像名稱-->
        <repository>172.16.1.146/wondertek/${project.artifactId}</repository>
        <!-- 鏡像版本號 -->
        <tag>${project.version}-${current.time}</tag>
        <buildArgs>
            <!-- 參數(shù),提供給dockerfile使用 -->
            
            <JAR_FILE>target/docker-test-1.0.0.jar</JAR_FILE>
        </buildArgs>

    </configuration>
</plugin>

3佩耳、dockerfile配置

官網(wǎng)說明:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

# 拉取基礎(chǔ)鏡像
FROM hub.c.163.com/library/java:8-jdk
# 鏡像的作者
MAINTAINER csp@xxx.com

#掛載目錄遂蛀,通過 VOLUME 指令創(chuàng)建的掛載點,無法指定主機(jī)上對應(yīng)的目錄干厚,是自動生成的
VOLUME ["/data1","/data2"]

RUN ["mkdir", "-p", "/app"]

#結(jié)合maven插件dockerfile-maven-plugin的打包使用
ARG JAR_FILE
ADD ${JAR_FILE} /app/app.jar

#為后面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令設(shè)置鏡像中的當(dāng)前工作目錄李滴。
#WORKDIR  /usr/local/docker/test

#拷貝當(dāng)前目錄文件到容器/app
#COPY .  /app

#與 COPY 類似螃宙,從 build context 復(fù)制文件到鏡像。不同的是悬嗓,如果 src 是歸檔文件(tar, zip, tgz, xz 等)污呼,文件會被自動解壓到 dest。
#ADD src dest

#設(shè)置環(huán)境變量包竹,環(huán)境變量可被后面的指令使用
ENV EVN_SET_TEST "WELCOME TO DOCKERFILE CONTAINER燕酷!"

##################
#  RUN、CDM周瞎、ENTRYPOINT 命令都包含兩種格式:Shell 格式和 Exec 格式
#  CMD還可以放在ENTRYPOINT后苗缩,為其傳遞參數(shù)。
#####  shell 格式:######
##  底層會調(diào)用 /bin/sh -c <command>

# 在容器中運行指定的命令
RUN echo $EVN_SET_TEST

# 容器啟動命令 只有最后一個生效声诸,CMD 可以被 docker run 之后的參數(shù)替換酱讶。
#只有最后一個生效
CMD echo "CMD Hello world"

#配置容器啟動時運行的命令
ENTRYPOINT echo "ENTRYPOINT Hello, $EVN_SET_TEST"

######  Exec 格式: #####
## 當(dāng)指令執(zhí)行時,會直接調(diào)用 <command>彼乌,不會被 shell 解析
# ENTRYPOINT ["/bin/echo", "Hello, $EVN_SET_TEST"]
# 正確寫法應(yīng)該為:
# ENTRYPOINT ["/bin/sh", "-c", "echo Hello, $EVN_SET_TEST"]

# 為Exec 格式的ENTRYPOINT傳遞參數(shù)泻肯,結(jié)果輸出Hello, $EVN_SET_TEST dockerfile world
# CMD ["dockerfile world"]

#只有最后一個生效
ENTRYPOINT ["java","-jar","/app/app.jar"]





#表示哪個端口提供服務(wù)的提示,宿主機(jī)如果要訪問慰照,需要結(jié)合-P參數(shù)聯(lián)合使用灶挟。
EXPOSE 8080

4、build publish鏡像

配置遠(yuǎn)程docker環(huán)境變量

export DOCKER_HOST=tcp://172.16.1.191:2376

windows直接在環(huán)境變量中添加毒租。

mvn命令執(zhí)行

build鏡像:
mvn clean package dockerfile:build -DskipTests

注意:
Image will be built as xxxxx這一步會比較慢稚铣,需要將文件上傳到服務(wù)器上(等待時間取決于文件大小和上傳速度)

發(fā)布到鏡像中心,注意墅垮,該命令不會build鏡像惕医。
mvn  dockerfile:push
配置中 build 和 publish 都綁定在install周期上。
如果不想觸發(fā)相關(guān)流程算色,可以添加相關(guān)例外參數(shù)抬伺。
mvn clean install -Ddockerfile.skip
命令 說明
dockerfile.skip Disables the entire dockerfile plugin; all goals become no-ops.
dockerfile.build.skip Disables the build goal; it becomes a no-op.
dockerfile.tag.skip Disables the tag goal; it becomes a no-op.
dockerfile.push.skip Disables the push goal; it becomes a no-op.
也可以取消pom.xml中executions的配置,通過 mvn clean install dockerfile:build dockerfile:push -DskipTests 構(gòu)建并且推送到注冊中心

遠(yuǎn)程鏡像查看:

[root@localhost log]# docker -H 172.16.1.191:2376 images
REPOSITORY                                      TAG                    IMAGE ID            CREATED             SIZE
172.16.1.146:8888/wondertek/docker-test         1.0.0-20180713171831   063b60635335        2 days ago          727 MB
172.16.1.146:8888/wondertek/docker-test         1.0.0-20180713171646   3b8deedff90d        2 days ago          727 MB
172.16.1.146:8888/wondertek/docker-test         1.0.0-20180713091144   aa898d0cbd28        2 days ago          727 MB
172.16.1.146:8888/wondertek/docker-test         1.0.0-2018071308       a91e9e3b0678        2 days ago          727 MB
172.16.1.146:8888/wondertek/docker-test         1.0.0-20180713083134   a91e9e3b0678        2 days ago          727 MB
172.16.1.146:8888/wondertek/docker-test         1.0.0-20180713080550   db286edbbc18        2 days ago          727 MB
127.0.0.1:5200/docker-test                      1.0.0-20180705042837   1e5b41afb0a1        10 days ago         727 MB
dockerlocal/docker-test                         1.0.0                  7d1c3e14aede        10 days ago         643 MB
docker.io/postgres                              10-alpine              e273e6bfba1c        2 weeks ago         39.5 MB

鏡像歷史層級查看:

--no-trunc 查看完整的命令

[root@localhost log]# docker history 172.16.1.146:8888/wondertek/docker-test:1.0.0-20180716100040 --no-trunc
IMAGE                                                                     CREATED             CREATED BY                                                                                                                                                                                                                               SIZE                COMMENT
sha256:c4cf1fc7cae80b238d46b5741834140c3188e45ba929c92cd1e35145c38a7bc1   40 minutes ago      /bin/sh -c #(nop)  EXPOSE 8080/tcp                                                                                                                                                                                                       0 B                 
sha256:539db240ca1f6ec8b260e1af3ffa0a12a160b49d470644090bb9bfc26729b53e   40 minutes ago      /bin/sh -c #(nop)  ENTRYPOINT ["java" "-jar" "./app.jar"]                                                                                                                                                                                0 B                 
sha256:cccad169f4dfa5b3fd6e2df754b10ae5f45541aa7d4964da4f60557643ac5796   40 minutes ago      /bin/sh -c #(nop)  ENTRYPOINT ["/bin/sh" "-c" "echo \"ENTRYPOINT Hello, $EVN_SET_TEST\""]                                                                                                                                                0 B                 
sha256:e16f9ebbab1b040da6332b0fd5f0e36066219b8793fad42d1f23e8d7dbd6a412   40 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo \"CMD Hello world\""]                                                                                                                                                                       0 B                 
sha256:d06785ad2059e9718e3c5a6c0334d34027232efe719dcc94b0d391ce2fad650b   40 minutes ago      |1 JAR_FILE=target/docker-test-1.0.0.jar /bin/sh -c echo $EVN_SET_TEST                                                                                                                                                                   0 B                 
sha256:2517b2a4980975b64f648b6a9104255f13db0cc409aaa72fa66dbfe61d6e4e96   40 minutes ago      /bin/sh -c #(nop)  ENV EVN_SET_TEST=WELCOME TO DOCKERFILE CONTAINER灾梦!                                                                                                                                                                    0 B                 
sha256:7daa3e4150f810e727993d1ddc99debe6c0c397e91f02ffd7dd65abe8e1b7171   40 minutes ago      /bin/sh -c #(nop) ADD file:be73bf23e734c61fa90ae97fe0b66384632a30fa3f9c967b1afa127a2f52c198 in /app/app.jar                                                                                                                              83.6 MB             
sha256:d42fa5d86ebf2508a9e3de305e04ac3e66dc8e7791c127487161a00ecd2ee710   40 minutes ago      /bin/sh -c #(nop)  ARG JAR_FILE                                                                                                                                                                                                          0 B                 
sha256:7b0922396475e204d624772921470e94b7348f52d7ceb8717d4b38871387c303   40 minutes ago      /bin/sh -c #(nop)  VOLUME [/data1 /data2]                                                                                                                                                                                                0 B                 
sha256:beb6d7c2897188c448f6e33a91cbc7110aac171cc5556663e01bbd806e9fb10f   40 minutes ago      /bin/sh -c #(nop)  MAINTAINER csp@xxx.com                                                                                                                                                                                                0 B                 
sha256:a001fc27db5aae61800c78fa1c794177f07e5422525ded583ff2ccde6f6107bc   19 months ago       /bin/sh -c /var/lib/dpkg/info/ca-certificates-java.postinst configure                                                                                                                                                                    418 kB              
<missing>                                                                 19 months ago       /bin/sh -c set -x  && apt-get update  && apt-get install -y   openjdk-8-jdk="$JAVA_DEBIAN_VERSION"   ca-certificates-java="$CA_CERTIFICATES_JAVA_VERSION"  && rm -rf /var/lib/apt/lists/*  && [ "$JAVA_HOME" = "$(docker-java-home)" ]   352 MB              
<missing>                                                                 19 months ago       /bin/sh -c #(nop)  ENV CA_CERTIFICATES_JAVA_VERSION=20140324                                                                                                                                                                             0 B                 
<missing>                                                                 19 months ago       /bin/sh -c #(nop)  ENV JAVA_DEBIAN_VERSION=8u111-b14-2~bpo8+1                                                                                                                                                                            0 B                 
<missing>                                                                 19 months ago       /bin/sh -c #(nop)  ENV JAVA_VERSION=8u111                                                                                                                                                                                                0 B                 
<missing>                                                                 19 months ago       /bin/sh -c #(nop)  ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64                                                                                                                                                                       0 B                 
<missing>                                                                 19 months ago       /bin/sh -c {   echo '#!/bin/sh';   echo 'set -e';   echo;   echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"';  } > /usr/local/bin/docker-java-home  && chmod +x /usr/local/bin/docker-java-home               87 B                
<missing>                                                                 19 months ago       /bin/sh -c #(nop)  ENV LANG=C.UTF-8                                                                                                                                                                                                      0 B                 
<missing>                                                                 19 months ago       /bin/sh -c echo 'deb http://deb.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/jessie-backports.list                                                                                                                 55 B                
<missing>                                                                 19 months ago       /bin/sh -c apt-get update && apt-get install -y --no-install-recommends   bzip2   unzip   xz-utils  && rm -rf /var/lib/apt/lists/*                                                                                                       1.29 MB             
<missing>                                                                 19 months ago       /bin/sh -c apt-get update && apt-get install -y --no-install-recommends   bzr   git   mercurial   openssh-client   subversion     procps  && rm -rf /var/lib/apt/lists/*                                                                 123 MB              
<missing>                                                                 19 months ago       /bin/sh -c apt-get update && apt-get install -y --no-install-recommends   ca-certificates   curl   wget  && rm -rf /var/lib/apt/lists/*                                                                                                  44.3 MB             
<missing>                                                                 19 months ago       /bin/sh -c #(nop)  CMD ["/bin/bash"]                                                                                                                                                                                                     0 B                 
<missing>                                                                 19 months ago       /bin/sh -c #(nop) ADD file:1d214d2782eaccc743b8d683ccecf2f87f12a0ecdfbcd6fdf4943ce616f23870 in /                                                                                                                                         123 MB          

私有鏡像中心查看沛简,這里使用的是前面介紹的harbor:

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市斥废,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌给郊,老刑警劉巖牡肉,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異淆九,居然都是意外死亡统锤,警方通過查閱死者的電腦和手機(jī)毛俏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饲窿,“玉大人煌寇,你說我怎么就攤上這事∮庑郏” “怎么了阀溶?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鸦泳。 經(jīng)常有香客問我银锻,道長,這世上最難降的妖魔是什么做鹰? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任击纬,我火速辦了婚禮,結(jié)果婚禮上钾麸,老公的妹妹穿的比我還像新娘更振。我一直安慰自己,他們只是感情好饭尝,可當(dāng)我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布肯腕。 她就那樣靜靜地躺著,像睡著了一般芋肠。 火紅的嫁衣襯著肌膚如雪乎芳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天帖池,我揣著相機(jī)與錄音奈惑,去河邊找鬼。 笑死睡汹,一個胖子當(dāng)著我的面吹牛肴甸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播囚巴,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼原在,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了彤叉?” 一聲冷哼從身側(cè)響起庶柿,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秽浇,沒想到半個月后浮庐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡柬焕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年审残,在試婚紗的時候發(fā)現(xiàn)自己被綠了梭域。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡搅轿,死狀恐怖病涨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情璧坟,我是刑警寧澤既穆,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站沸柔,受9級特大地震影響循衰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜褐澎,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一会钝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧工三,春花似錦迁酸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掸读,卻和暖如春串远,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背儿惫。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工澡罚, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肾请。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓留搔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铛铁。 傳聞我的和親對象是個殘疾皇子隔显,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容