最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

dockerfile的使用及使用dockerfile部署springboot項(xiàng)目的過(guò)程

 更新時(shí)間:2023年04月10日 09:52:52   作者:禿了也弱了。  
Dockerfile是用來(lái)構(gòu)建Docker鏡像的文本文件,是由一條條構(gòu)建鏡像所需的指令和參數(shù)構(gòu)成的腳本,這篇文章主要介紹了dockerfile的使用,使用dockerfile部署springboot項(xiàng)目,需要的朋友可以參考下

一、dockerfile概述

Dockerfile是用來(lái)構(gòu)建Docker鏡像的文本文件,是由一條條構(gòu)建鏡像所需的指令和參數(shù)構(gòu)成的腳本。

官網(wǎng):https://docs.docker.com/engine/reference/builder/

1、dockerfile基礎(chǔ)

1:每條保留字指令都必須為大寫字母且后面要跟隨至少一個(gè)參數(shù)
2:指令按照從上到下,順序執(zhí)行
3:#表示注釋
4:每條指令都會(huì)創(chuàng)建一個(gè)新的鏡像層并對(duì)鏡像進(jìn)行提交

2、Docker執(zhí)行Dockerfile的大致流程

(1)docker從基礎(chǔ)鏡像運(yùn)行一個(gè)容器
(2)執(zhí)行一條指令并對(duì)容器作出修改
(3)執(zhí)行類似docker commit的操作提交一個(gè)新的鏡像層
(4)docker再基于剛提交的鏡像運(yùn)行一個(gè)新容器
(5)執(zhí)行dockerfile中的下一條指令直到所有指令都執(zhí)行完成

3、鏡像、容器、dockerfile的關(guān)系

從應(yīng)用軟件的角度來(lái)看,Dockerfile、Docker鏡像與Docker容器分別代表軟件的三個(gè)不同階段,

  • Dockerfile是軟件的原材料
  • Docker鏡像是軟件的交付品
  • Docker容器則可以認(rèn)為是軟件鏡像的運(yùn)行態(tài),也即依照鏡像運(yùn)行的容器實(shí)例
    Dockerfile面向開發(fā),Docker鏡像成為交付標(biāo)準(zhǔn),Docker容器則涉及部署與運(yùn)維,三者缺一不可,合力充當(dāng)Docker體系的基石。

1 Dockerfile,需要定義一個(gè)Dockerfile,Dockerfile定義了進(jìn)程需要的一切東西。Dockerfile涉及的內(nèi)容包括執(zhí)行代碼或者是文件、環(huán)境變量、依賴包、運(yùn)行時(shí)環(huán)境、動(dòng)態(tài)鏈接庫(kù)、操作系統(tǒng)的發(fā)行版、服務(wù)進(jìn)程和內(nèi)核進(jìn)程(當(dāng)應(yīng)用進(jìn)程需要和系統(tǒng)服務(wù)和內(nèi)核進(jìn)程打交道,這時(shí)需要考慮如何設(shè)計(jì)namespace的權(quán)限控制)等等;
2 Docker鏡像,在用Dockerfile定義一個(gè)文件之后,docker build時(shí)會(huì)產(chǎn)生一個(gè)Docker鏡像,當(dāng)運(yùn)行 Docker鏡像時(shí)會(huì)真正開始提供服務(wù);
3 Docker容器,容器是直接提供服務(wù)的。

基本構(gòu)建步驟:(1)編寫Dockerfile文件(2)docker build命令構(gòu)建鏡像(3)docker run依鏡像運(yùn)行容器實(shí)例

二、dockerfile常用保留字

1、FROM

基礎(chǔ)鏡像,當(dāng)前新鏡像是基于哪個(gè)鏡像的,指定一個(gè)已經(jīng)存在的鏡像作為模板,第一條命令必須是FROM

# 命令格式
FROM [--platform=<platform>] <image> [AS <name>]
FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]
FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]
# 實(shí)例:
FROM centos:7.0

2、MAINTAINER與LABEL

鏡像維護(hù)者的姓名和郵箱地址

# 命令格式
MAINTAINER <name>

該命令已經(jīng)廢棄了。推薦使用LABEL,它可以設(shè)置您需要的任何元數(shù)據(jù)。

# 命令格式
LABEL <key>=<value> <key>=<value> <key>=<value> ...

LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."

3、RUN

容器構(gòu)建時(shí)需要運(yùn)行的命令,RUN是在 docker build時(shí)運(yùn)行

(1)shell格式(常用)

# <命令行命令> 等同于,在終端操作的shell命令
RUN <命令行命令>

(2)exec格式

# 錄入:RUN ["./test.php", "dev", "offline"] 等價(jià)于RUN ./test.php dev offline
RUN ["可執(zhí)行文件", "param1", "param2"]

4、EXPOSE

當(dāng)前容器對(duì)外暴露出的端口

EXPOSE 80
EXPOSE 80/tcp
EXPOSE 80/udp

5、WORKDIR

指定在創(chuàng)建容器后,終端默認(rèn)登陸的進(jìn)來(lái)工作目錄,一個(gè)落腳點(diǎn)

WORKDIR /path/to/workdir

6、USER

指定該鏡像以什么樣的用戶去執(zhí)行,如果都不指定,默認(rèn)是root

# 命令格式
USER <user>[:<group>]
USER <UID>[:<GID>]

# 實(shí)例
USER cxf

7、ENV

用來(lái)在構(gòu)建鏡像過(guò)程中設(shè)置環(huán)境變量

# 命令格式
ENV <key>=<value> ...

# 實(shí)例
ENV MY_PATH /usr/mytest
#這個(gè)環(huán)境變量可以在后續(xù)的任何RUN指令中使用,這就如同在命令前面指定了環(huán)境變量前綴一樣;也可以在其它指令中直接使用這些環(huán)境變量,
#比如:WORKDIR $MY_PATH

8、ADD

將宿主機(jī)目錄下的文件拷貝進(jìn)鏡像且會(huì)自動(dòng)處理URL和解壓tar壓縮包

ADD a.tar.gz /mydir/

9、COPY

類似ADD,拷貝文件和目錄到鏡像中。
將從構(gòu)建上下文目錄中 <源路徑> 的文件/目錄復(fù)制到新的一層的鏡像內(nèi)的 <目標(biāo)路徑> 位置

COPY src dest
COPY ["src", "dest"]
<src源路徑>:源文件或者源目錄
<dest目標(biāo)路徑>:容器內(nèi)的指定路徑,該路徑不用事先建好,路徑不存在的話,會(huì)自動(dòng)創(chuàng)建。

10、VOLUME

容器數(shù)據(jù)卷,用于數(shù)據(jù)保存和持久化工作

11、CMD

指定容器啟動(dòng)后的要干的事情

注意!Dockerfile 中可以有多個(gè) CMD 指令,但只有最后一個(gè)生效,CMD 會(huì)被 docker run 之后的參數(shù)替換

CMD ["executable","param1","param2"]
CMD ["param1","param2"]
CMD command param1 param2

# 覆蓋默認(rèn)的CMD,不會(huì)啟動(dòng)tomcat
docker exec -it comcat /bin/bash

CMD是在docker run 時(shí)運(yùn)行。RUN是在 docker build時(shí)運(yùn)行。

12、ENTRYPOINT

也是用來(lái)指定一個(gè)容器啟動(dòng)時(shí)要運(yùn)行的命令。

類似于 CMD 指令,但是ENTRYPOINT不會(huì)被docker run后面的命令覆蓋,而且這些命令行參數(shù)會(huì)被當(dāng)作參數(shù)送給 ENTRYPOINT 指令指定的程序

# 命令格式
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2

ENTRYPOINT可以和CMD一起用,一般是變參才會(huì)使用 CMD ,這里的 CMD 等于是在給 ENTRYPOINT 傳參。
當(dāng)指定了ENTRYPOINT后,CMD的含義就發(fā)生了變化,不再是直接運(yùn)行其命令而是將CMD的內(nèi)容作為參數(shù)傳遞給ENTRYPOINT指令,他兩個(gè)組合會(huì)變成:<ENTRYPOINT> “<CMD>”

FROM ubuntu
ENTRYPOINT ["top", "-b"] # 定參
CMD ["-c"] # 變參
# 最終執(zhí)行top -c,而如果使用命令行指定 -H,會(huì)替換CMD的-c

在執(zhí)行docker run的時(shí)候可以指定 ENTRYPOINT 運(yùn)行所需的參數(shù)。如果 Dockerfile 中如果存在多個(gè) ENTRYPOINT 指令,僅最后一個(gè)生效。

三、使用dockerfile構(gòu)建一個(gè)自帶jdk的centos

1、下載jdk并上傳至linux

java8下載地址:https://www.oracle.com/java/technologies/downloads/#java8

2、編寫Dockerfile

# 注意大寫字母D
vi Dockerfile
# 指定基礎(chǔ)鏡像,需要保證本地有這個(gè)鏡像
FROM centos
# 指定作者郵箱
MAINTAINER cxf
# 工作目錄
ENV MYPATH /usr/local
WORKDIR $MYPATH
# 準(zhǔn)備工作
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum makecache
RUN cd /usr/local
#安裝vim編輯器
RUN yum -y install vim
#安裝ifconfig命令查看網(wǎng)絡(luò)IP
RUN yum -y install net-tools
#安裝java8及l(fā)ib庫(kù)
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相對(duì)路徑j(luò)ar,把jdk-8u351-linux-x64.tar.gz添加到容器中,安裝包必須要和Dockerfile文件在同一位置
ADD jdk-8u351-linux-x64.tar.gz /usr/local/java/
#配置java環(huán)境變量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_351
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash

3、構(gòu)建Dockerfile

注意!本目錄下只有一個(gè)Dockerfile并且包含jdk安裝包

在這里插入圖片描述

# 構(gòu)建新鏡像命令格式 。注意,上面TAG后面有個(gè)空格,有個(gè)點(diǎn)
docker build -t 新鏡像名字:TAG .
# 構(gòu)建我們的鏡像,等一會(huì)就會(huì)構(gòu)建成功
docker build -t centosjava8:1.0 .

[root@localhost myfile]# docker images
REPOSITORY                    TAG       IMAGE ID       CREATED          SIZE
centosjava8                   1.0       4dbff0755585   34 seconds ago   747MB
centos                        latest    5d0da3dc9764   19 months ago    231MB

4、運(yùn)行一下試試

docker run -it 4dbff0755585 /bin/bash

#我們發(fā)現(xiàn),新的鏡像攜帶著vim、ifconfig和java環(huán)境了!

四、虛懸鏡像

倉(cāng)庫(kù)名、標(biāo)簽都是<none>的鏡像,俗稱dangling image

1、制造一個(gè)虛懸鏡像

(1)創(chuàng)建Dockerfile

FROM centos
CMD echo 'action is success'

(2)構(gòu)建

docker build .

(3)查看

[root@localhost xu]# docker images
REPOSITORY                    TAG       IMAGE ID       CREATED          SIZE
centosjava8                   1.0       4dbff0755585   31 minutes ago   747MB
<none>                        <none>    9818ccf3738e   19 months ago    231MB
centos                        latest    5d0da3dc9764   19 months ago    231MB

# 查看所有虛懸鏡像
[root@localhost xu]# docker image ls -f dangling=true
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
<none>       <none>    9818ccf3738e   19 months ago   231MB

(4)刪除

# 刪除虛懸鏡像
docker image prune

虛懸鏡像已經(jīng)失去存在價(jià)值,可以刪除

五、docker運(yùn)行springboot項(xiàng)目

1、準(zhǔn)備一個(gè)springboot項(xiàng)目

編寫一個(gè)測(cè)試Controller,以供測(cè)試。

@RestController
@RequestMapping
public class TestController {

    @GetMapping("/test")
    public String test(){
        return "啟動(dòng)成功 ===================test";
    }
}

2、手動(dòng)構(gòu)建jar包

我們使用maven package命令手動(dòng)打包并上傳到服務(wù)器上。

[root@localhost ~]# cd mydocker/
[root@localhost mydocker]# ll
total 17084
-rw-r--r--. 1 root root 17491177 Apr  9 14:18 demo-0.0.1-SNAPSHOT.jar

注!通常來(lái)說(shuō)這一步可以使用jenkins自動(dòng)構(gòu)建。

3、編寫Dockerfile

# 基礎(chǔ)鏡像使用java
FROM centosjava8:1.0
# 作者
MAINTAINER cxf
# VOLUME 指定臨時(shí)文件目錄為/tmp,在主機(jī)/var/lib/docker目錄下創(chuàng)建了一個(gè)臨時(shí)文件并鏈接到容器的/tmp
VOLUME /tmp
# 將jar包添加到容器中并更名為cxf_docker.jar
ADD demo-0.0.1-SNAPSHOT.jar /cxf_docker.jar
# 運(yùn)行jar包
RUN bash -c 'touch /cxf_docker.jar'
ENTRYPOINT ["java","-jar","/cxf_docker.jar"]
#暴露6001端口作為微服務(wù)
EXPOSE 8088

4、構(gòu)建鏡像

docker build -t mydemo:1.0 .

[root@localhost mydocker]# docker images
REPOSITORY                    TAG       IMAGE ID       CREATED          SIZE
mydemo                        1.0       7124eca083ad   26 seconds ago   764MB
centosjava8                   1.0       4dbff0755585   7 hours ago      747MB

5、運(yùn)行容器

docker run -d -p 8088:8088 7124eca083ad

6、訪問(wèn)測(cè)試

訪問(wèn)服務(wù)器我們的接口,發(fā)現(xiàn)測(cè)試成功!

到此這篇關(guān)于dockerfile的使用,使用dockerfile部署springboot項(xiàng)目的文章就介紹到這了,更多相關(guān)dockerfile部署springboot項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker容器中的OpenCV如何輕松構(gòu)建可移植的計(jì)算機(jī)視覺(jué)環(huán)境

    Docker容器中的OpenCV如何輕松構(gòu)建可移植的計(jì)算機(jī)視覺(jué)環(huán)境

    計(jì)算機(jī)視覺(jué)是一門涉及圖像和視頻處理的領(lǐng)域,可以應(yīng)用于目標(biāo)檢測(cè)、圖像識(shí)別、人臉識(shí)別等各種任務(wù),本文給大家介紹Docker容器中的OpenCV如何輕松構(gòu)建可移植的計(jì)算機(jī)視覺(jué)環(huán)境,感興趣的朋友一起看看吧
    2023-12-12
  • docker-compose安裝Jenkins的實(shí)踐筆記

    docker-compose安裝Jenkins的實(shí)踐筆記

    jenkins是一個(gè)比較強(qiáng)大的自動(dòng)構(gòu)建工具, Jenkins是開源CI&CD軟件領(lǐng)導(dǎo)者,提供超過(guò)1000個(gè)插件來(lái)支持構(gòu)建、部署、自動(dòng)化,本文給大家介紹docker-compose安裝Jenkins的實(shí)踐筆記,感興趣的朋友一起看看吧
    2021-09-09
  • Windows11安裝Docker Desktop教程的圖文教程

    Windows11安裝Docker Desktop教程的圖文教程

    本文主要介紹一下Windows11安裝Docker Desktop教程的圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • Docker如何打包本地環(huán)境為tar包給別人使用

    Docker如何打包本地環(huán)境為tar包給別人使用

    這篇文章主要介紹了Docker如何打包本地環(huán)境為tar包給別人使用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Docker CentOS7的系統(tǒng)上安裝部署以及基礎(chǔ)教程

    Docker CentOS7的系統(tǒng)上安裝部署以及基礎(chǔ)教程

    這篇文章主要介紹了Docker CentOS7的系統(tǒng)上安裝部署以及基礎(chǔ)教程的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法

    docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法

    這篇文章主要介紹了docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • Docker鏡像拉取報(bào)錯(cuò):Error response from daemon: Get https://registry-1.docker.io/v2/的問(wèn)題解決

    Docker鏡像拉取報(bào)錯(cuò):Error response from daemon: 

    這篇文章主要介紹了Docker鏡像拉取報(bào)錯(cuò):Error response from daemon: Get https://registry-1.docker.io/v2/的問(wèn)題解決,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 詳解Shell腳本控制docker容器啟動(dòng)順序

    詳解Shell腳本控制docker容器啟動(dòng)順序

    這篇文章主要介紹了Shell腳本控制docker容器啟動(dòng)順序的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 詳解docker下的Mysql鏡像的使用方法

    詳解docker下的Mysql鏡像的使用方法

    本篇文章主要介紹了詳解docker下的Mysql鏡像的使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 寶塔面板配合docker安裝gogs的全過(guò)程

    寶塔面板配合docker安裝gogs的全過(guò)程

    Gogs?是一款極易搭建的自助?Git?服務(wù),如果想自己?jiǎn)为?dú)搭建屬于自己私人的Git?服務(wù),那么Gogs不容錯(cuò)過(guò)。這篇文章主要介紹了寶塔面板配合docker安裝gogs,需要的朋友可以參考下
    2021-12-12

最新評(píng)論

凌海市| 锦屏县| 桂林市| 静乐县| 海伦市| 通州市| 嘉荫县| 儋州市| 桑植县| 遂平县| 青田县| 喀喇沁旗| 绥化市| 成安县| 康马县| 曲水县| 团风县| 临潭县| 常宁市| 乌拉特后旗| 遂溪县| 锡林浩特市| 丘北县| 巴中市| 阜阳市| 哈巴河县| 沽源县| 雷州市| 静宁县| 天柱县| 晋州市| 太和县| 宜章县| 新晃| 巫溪县| 伊宁市| 余庆县| 南木林县| 文水县| 星子县| 乐陵市|