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

淺談docker的上下文和工作目錄

 更新時(shí)間:2025年09月30日 10:31:34   作者:小董亮出你的8塊腹肌吧!  
在編寫Dockerfile時(shí)我們總會接觸到COPY上下文和工作目錄,有時(shí)候這些位置搞不清楚,本文就來介紹一下docker的上下文和工作目錄,感興趣的可以了解一下

寫在前面

在編寫Dockerfile時(shí)我們總會接觸到COPY上下文和工作目錄,有時(shí)候這些位置搞不清楚,總是讓我們陷入困境,本文就一起來看下這2個(gè)路徑。

1:COPY上下文

Dockerfile文件的COPY指令,拷貝的源文件就是基于上下文目錄來查找的,到底什么是上下文路徑,我們需要先來看下,而要解釋清楚什么是上下文路徑,必須先看下當(dāng)執(zhí)行docker build時(shí)的執(zhí)行流程,該流程如下:

1:將當(dāng)前所在的目錄打包為.tar包并發(fā)送到docker daemon
2:docker daemon將tar包解壓到一個(gè)臨時(shí)目錄,比如docker daemon的/var/lib/tmp目錄

這里tar壓縮文件的最終解壓目錄就是我們上下文了,比如我們有如下的目錄:

dongyunqi@dongyunqi-virtual-machine:~$ tree helloworld-app/
helloworld-app/
├── docker
│   ├── hello.txt
│   └── html
│       └── index.html
└── Dockerfile

2 directories, 3 files

Dockerfile如下:

dongyunqi@dongyunqi-virtual-machine:~$ cat helloworld-app/Dockerfile 
FROM busybox
COPY hello.txt .
COPY html/index.html .

然后我們在helloworld目錄執(zhí)行docker build,如下:

dongyunqi@dongyunqi-virtual-machine:~$ docker build -t hello-app:2.0 helloworld-app/
Sending build context to Docker daemon   5.12kB # tar包成功到docker daemon,后面就是docker daemon的工作了
Step 1/3 : FROM busybox
 ---> 827365c7baf1
Step 2/3 : COPY hello.txt .
COPY failed: stat /var/lib/docker/tmp/docker-builder375982663/hello.txt: no such file or directory

COPY failed: stat /var/lib/docker/tmp/docker-builder375982663/hello.txt: no such file or directory我們可以得到如下的信息:

1:docker客戶端打包生成的tar包名字叫做`docker-builder375982663.tar`。
2:docker daemon解壓tar包的目錄是/var/lib/docker/tmp
3:這里的上下文目錄是/var/lib/docker/tmp/docker-builder375982663
4:在上下文目錄里無法找到文件hello.txt

其中4找不到文件的原因是,因?yàn)槲募?code>/var/lib/docker/tmp/docker-builder375982663/docker/hello.txt,因此我們只需要修改Dockerfiie將COPY hello.txt .修改為COPY docker/hello.txt .,如下:

dongyunqi@dongyunqi-virtual-machine:~$ cat helloworld-app/Dockerfile
FROM busybox
COPY docker/hello.txt . # 修改這一行
COPY html/index.html .

運(yùn)行:

dongyunqi@dongyunqi-virtual-machine:~$ docker build -t hello-app:2.0 helloworld-app/
Sending build context to Docker daemon  6.144kB
Step 1/3 : FROM busybox
 ---> 827365c7baf1
Step 2/3 : COPY docker/hello.txt .
 ---> 83989744c05c
Step 3/3 : COPY html/index.html .
COPY failed: file not found in build context or excluded by .dockerignore: stat html/index.html: file does not exist

此時(shí)找不到html/index.html,同樣的問題,修改為docker/html/index.html,如下:

dongyunqi@dongyunqi-virtual-machine:~$ cat helloworld-app/Dockerfile
FROM busybox
COPY docker/hello.txt .
COPY docker/html/index.html .

運(yùn)行:

dongyunqi@dongyunqi-virtual-machine:~$ docker build -t hello-app:2.0 helloworld-app/
Sending build context to Docker daemon  7.168kB
Step 1/3 : FROM busybox
 ---> 827365c7baf1
Step 2/3 : COPY docker/hello.txt .
 ---> Using cache
 ---> 83989744c05c
Step 3/3 : COPY docker/html/index.html .
 ---> Using cache
 ---> 10fa588c5565
Successfully built 10fa588c5565
Successfully tagged hello-app:2.0

到這里上下文我們已經(jīng)清楚了,

2:工作目錄

工作目錄默認(rèn)就是根目錄,如下的Dockerfile驗(yàn)證:

dongyunqi@dongyunqi-virtual-machine:~$ cat howPwd.txt 
FROM busybox
RUN pwd

運(yùn)行:

dongyunqi@dongyunqi-virtual-machine:~$ docker build -t hello-app:2.0 -f howPwd.txt helloworld-app/
Sending build context to Docker daemon  8.751kB
Step 1/3 : FROM busybox
 ---> 827365c7baf1
Step 2/3 : WORKDIR / # 這里docker daemon也輸出了當(dāng)前的工作目錄
 ---> Running in c1d493dc5ff6
Removing intermediate container c1d493dc5ff6
 ---> 4d065957678b
Step 3/3 : RUN pwd
 ---> Running in 7fc8f9b6b35a
/  # 這里我們輸出了當(dāng)前工作目錄是根目錄
Removing intermediate container 7fc8f9b6b35a
 ---> 578d72f80d16
Successfully built 578d72f80d16
Successfully tagged hello-app:2.0

當(dāng)然可以通過WORKDIR來修改工作目錄,如下:

dongyunqi@dongyunqi-virtual-machine:~$ cat howPwd.txt 
FROM busybox
WORKDIR /var
RUN pwd

運(yùn)行:

dongyunqi@dongyunqi-virtual-machine:~$ docker build -t hello-app:2.0 -f howPwd.txt helloworld-app/
Sending build context to Docker daemon  8.751kB
Step 1/3 : FROM busybox
 ---> 827365c7baf1
Step 2/3 : WORKDIR /var # 這里docker daemon也輸出了當(dāng)前的工作目錄是/var
 ---> Using cache
 ---> 89da7feb392e
Step 3/3 : RUN pwd
 ---> /var # 這里我們輸出了當(dāng)前工作目錄是/var
Successfully built 7975c01019bd
Successfully tagged hello-app:2.0

寫在后面

到此這篇關(guān)于docker的上下文和工作目錄的文章就介紹到這了,更多相關(guān)docker的上下文和工作目錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker-compose啟動(dòng)redis多機(jī)集群的實(shí)現(xiàn)(6臺服務(wù)器3主3從)

    docker-compose啟動(dòng)redis多機(jī)集群的實(shí)現(xiàn)(6臺服務(wù)器3主3從)

    本文主要介紹了docker-compose啟動(dòng)redis多機(jī)集群的實(shí)現(xiàn)(6臺服務(wù)器3主3從),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Docker Overlay2磁盤空間占用過大清理的方法實(shí)現(xiàn)

    Docker Overlay2磁盤空間占用過大清理的方法實(shí)現(xiàn)

    隨著業(yè)務(wù)量的不斷增大,容器的不斷啟動(dòng),往往會出現(xiàn)磁盤空間不足,本文主要介紹了Docker Overlay2磁盤空間占用過大清理的方法實(shí)現(xiàn),感興趣的可以了解一下
    2022-03-03
  • 淺談Docker數(shù)據(jù)持久化

    淺談Docker數(shù)據(jù)持久化

    這篇文章主要介紹了淺談Docker數(shù)據(jù)持久化,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • Docker安裝node-red、導(dǎo)入節(jié)點(diǎn)、部署查看的步驟詳解

    Docker安裝node-red、導(dǎo)入節(jié)點(diǎn)、部署查看的步驟詳解

    Node-RED設(shè)計(jì)使用的場景是IoT,但是作為一個(gè)流編排引擎,顯然它能做的事情更多,比如使用容器化的方式進(jìn)行構(gòu)建、打包、部署等操作也是可行的,這篇文章繼續(xù)介紹Docker安裝node-red、導(dǎo)入節(jié)點(diǎn)、部署查看的相關(guān)知識,感興趣的朋友一起看看吧
    2022-01-01
  • Docker從默認(rèn)網(wǎng)絡(luò)到自定義網(wǎng)絡(luò)實(shí)現(xiàn)方式

    Docker從默認(rèn)網(wǎng)絡(luò)到自定義網(wǎng)絡(luò)實(shí)現(xiàn)方式

    本文介紹了Docker默認(rèn)網(wǎng)絡(luò)機(jī)制的局限性,特別是IP地址動(dòng)態(tài)變動(dòng)導(dǎo)致的問題,通過創(chuàng)建自定義網(wǎng)絡(luò),可以有效解決這一問題,實(shí)現(xiàn)容器間通過容器名進(jìn)行通信,文章詳細(xì)講解了如何創(chuàng)建和管理自定義網(wǎng)絡(luò),包括創(chuàng)建自定義網(wǎng)絡(luò)、將容器加入網(wǎng)絡(luò)、驗(yàn)證容器名通信等功能
    2025-12-12
  • Docker?刪除鏡像的實(shí)現(xiàn)

    Docker?刪除鏡像的實(shí)現(xiàn)

    本文主要介紹了Docker?刪除鏡像的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Docker核心命令與實(shí)踐指南示例詳解

    Docker核心命令與實(shí)踐指南示例詳解

    本文系統(tǒng)整理Docker的核心概念與常用命令,涵蓋鏡像管理、容器操作、數(shù)據(jù)存儲、網(wǎng)絡(luò)配置、Compose 編排以及 Dockerfile 構(gòu)建等內(nèi)容,感興趣的朋友跟隨小編一起看看吧
    2025-06-06
  • k8s部署docker容器的實(shí)現(xiàn)

    k8s部署docker容器的實(shí)現(xiàn)

    這篇文章主要介紹了k8s部署docker容器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 兩小時(shí)入門Docker教程實(shí)踐

    兩小時(shí)入門Docker教程實(shí)踐

    這篇文章主要介紹了兩小時(shí)入門Docker教程實(shí)踐,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • Docker鏡像多架構(gòu)構(gòu)建介紹

    Docker鏡像多架構(gòu)構(gòu)建介紹

    這篇文章主要介紹了Docker鏡像多架構(gòu)構(gòu)建介紹,文章圍繞主題展開詳細(xì)的介紹,具有一點(diǎn)定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09

最新評論

宁波市| 平谷区| 景德镇市| 紫阳县| 通榆县| 邮箱| 临洮县| 松阳县| 金湖县| 拉萨市| 六盘水市| 吕梁市| 利津县| 贵州省| 亚东县| 穆棱市| 康保县| 永新县| 海淀区| 汉寿县| 如东县| 芦山县| 无为县| 长泰县| 汝州市| 沈阳市| 赤壁市| 古浪县| 万荣县| 鄯善县| 墨脱县| 揭阳市| 台州市| 襄垣县| 涞源县| 陆川县| 凤山市| 颍上县| 临湘市| 吴旗县| 文化|