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

docker之WORKDIR指令的使用及說明

 更新時間:2025年07月19日 08:48:01   作者:hero.zhong  
WORKDIR設(shè)置工作目錄,后續(xù)命令基于此路徑執(zhí)行,若目錄不存在則自動創(chuàng)建,RUN指令每層獨立,不繼承前層狀態(tài),需用WORKDIR確保文件路徑正確,避免因分層存儲導(dǎo)致的文件找不到錯誤

docker WORKDIR指令的使用

WORKDIR 指定工作目錄

  • 格式為 WORKDIR <工作目錄路徑>。
  • 使用 WORKDIR 指令可以來指定工作目錄(或者稱為當(dāng)前目錄),以后各層的當(dāng)前目錄就被改為指定的目錄,如該目錄不存在,WORKDIR 會幫你建立目錄。
#test
FROM ubuntu
MAINTAINER hello
RUN mkdir /mydir
RUN echo hello world > /mydir/test.txt
WORKDIR /mydir
CMD ["more" ,"test.txt"]

假設(shè)根據(jù)該dockerfile構(gòu)建的鏡像名為 myimage

1、運行 docker run myimage 輸出 hello world

2、運行 docker run myimage more test.txt 和上面輸出一致

可以看出,more的參數(shù)是 test.txt,但沒有指定路徑,卻能成功,說明當(dāng)前路徑就是上面WORKDIR指令設(shè)置的。

如果我們在上面的dockerfile中把WORKDIR指令去掉,創(chuàng)建的容器運行會報文件不存在錯誤。

之前提到一些初學(xué)者常犯的錯誤是把 Dockerfile 等同于 Shell 腳本來書寫,這種錯誤的理解還可能會導(dǎo)致出現(xiàn)下面這樣的錯誤:

RUN cd /app
RUN echo "hello" > world.txt

如果將這個 Dockerfile 進(jìn)行構(gòu)建鏡像運行后,會發(fā)現(xiàn)找不到 /app/world.txt 文件,或者其內(nèi)容不是 hello。原因其實很簡單,在 Shell 中,連續(xù)兩行是同一個進(jìn)程執(zhí)行環(huán)境,因此前一個命令修改的內(nèi)存狀態(tài),會直接影響后一個命令;而在 Dockerfile 中,這兩行 RUN 命令的執(zhí)行環(huán)境根本不同,是兩個完全不同的容器。這就是對 Dockerfile 構(gòu)建分層存儲的概念不了解所導(dǎo)致的錯誤。

之前說過每一個 RUN 都是啟動一個容器、執(zhí)行命令、然后提交存儲層文件變更。第一層 RUN cd /app 的執(zhí)行僅僅是當(dāng)前進(jìn)程的工作目錄變更,一個內(nèi)存上的變化而已,其結(jié)果不會造成任何文件變更。而到第二層的時候,啟動的是一個全新的容器,跟第一層的容器更完全沒關(guān)系,自然不可能繼承前一層構(gòu)建過程中的內(nèi)存變化。

因此如果需要改變以后各層的工作目錄的位置,那么應(yīng)該使用 WORKDIR 指令。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Alpine Docker鏡像字體的問題解決操作

    Alpine Docker鏡像字體的問題解決操作

    這篇文章主要介紹了Alpine Docker鏡像字體的問題解決操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 使用非root用戶安裝及啟動docker的問題(rootless模式運行)

    使用非root用戶安裝及啟動docker的問題(rootless模式運行)

    docker是使用--userns-remap容器用戶映射宿主機(jī)用戶的方式來解決問題,用戶和組的映射由兩個配置文件來控制,分別是/etc/subuid和/etc/subgid,本文給大家介紹非root用戶啟動docker的問題,感興趣的朋友一起看看吧
    2022-05-05
  • Docker部署RocketMQ的實現(xiàn)示例

    Docker部署RocketMQ的實現(xiàn)示例

    本文主要介紹了Docker部署RocketMQ的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • 構(gòu)建一個簡單的CaaS系統(tǒng)

    構(gòu)建一個簡單的CaaS系統(tǒng)

    本文主要介紹如何從零開始構(gòu)建一個簡易的CaaS(Container as a Service)系統(tǒng)。簡單易懂,希望有想學(xué)習(xí)的小伙伴可以關(guān)注下
    2016-10-10
  • docker容器因報錯無法啟動問題的檢查及修復(fù)容器錯誤并重啟

    docker容器因報錯無法啟動問題的檢查及修復(fù)容器錯誤并重啟

    隨著容器技術(shù)的發(fā)展,現(xiàn)在很多的應(yīng)用程序系統(tǒng)都會選擇使用docker容器進(jìn)行部署,下面這篇文章主要給大家介紹了關(guān)于docker容器因報錯無法啟動問題的檢查及修復(fù)容器錯誤并重啟的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 搭建Docker私有倉庫(自簽名方式)

    搭建Docker私有倉庫(自簽名方式)

    為了能集中管理我們創(chuàng)建好的鏡像,方便部署服務(wù),我們會創(chuàng)建私有的Docker倉庫。這篇文章主要介紹了搭建Docker私有倉庫(自簽名方式),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Docker-harbor私有倉庫部署與管理方式

    Docker-harbor私有倉庫部署與管理方式

    這篇文章主要介紹了Docker-harbor私有倉庫部署與管理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 詳解docker部署Jenkins新手使用教程

    詳解docker部署Jenkins新手使用教程

    這篇文章主要介紹了詳解docker部署Jenkins新手使用教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 通過Docker部署Redis 6.x集群的方法

    通過Docker部署Redis 6.x集群的方法

    這篇文章主要介紹了通過Docker部署Redis 6.x集群的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Docker v1.13.0 正式版發(fā)布

    Docker v1.13.0 正式版發(fā)布

    本文給大家分享的是Docker v1.13.0 正式版發(fā)布的信息,最近一直在學(xué)習(xí)docker中,所以關(guān)注的比較多,這里分享給大家
    2017-01-01

最新評論

虞城县| 高邮市| 博客| 天祝| 丹寨县| 芜湖县| 泸西县| 忻州市| 邵阳县| 洮南市| 阳春市| 康定县| 封丘县| 咸阳市| 兰考县| 鹤峰县| 阿鲁科尔沁旗| 云阳县| 万源市| 广饶县| 高邮市| 囊谦县| 喀喇沁旗| 阳城县| 庄浪县| 天峨县| 宁晋县| 南投市| 荥经县| 遂溪县| 甘泉县| 石柱| 永定县| 湖口县| 绥宁县| 盐城市| 阿鲁科尔沁旗| 乐山市| 嘉兴市| 海丰县| 吴旗县|