Linux雲端計算教程全套影片合集:WORKDIR 指令講解
WORKDIR 指令用於宣告當前的工作目錄,以後各層的當前目錄就被改為指定的目錄。格式為 WORKDIR <工作目錄路徑>。
如該目錄不存在,WORKDIR 會幫你建立目錄。再次強調!不要以為編寫 Dockerfiel 是在寫 shell 指令碼。
下面是一個錯誤示例:
RUN cd /app
RUN echo "hello" > world.txt
如果將這個 Dockerfile 進行構建映象執行後,會發現找不到 /app/world.txt 檔案,或者其內容不是 hello。
原因其實很簡單,這兩行 RUN 命令的執行環境根本不同,是兩個完全不同的容器。這就是對 Dockerfile 構建分層儲存的概念不瞭解所導致的錯誤。
之前說過每一個 RUN 都是啟動一個容器、執行命令、然後提交儲存層檔案變更。
兩行 RUN 分別構建了並啟動了各自全新的容器。
因此如果需要改變以後各層的工作目錄的位置,那麼應該使用 WORKDIR 指令。
FROM alpine
WORKDIR /a/b
RUN touch a_b_f.txt
WORKDIR /a
RUN touch a_f.txt
[root@localhost workdir]# docker run -it alpine:workdir /bin/sh
/a # ls
a_f.txt b
/a # cd b
/a/b # ls
a_b_f.txt
插個小訊息,也方便想學習的同學,在文章下方留言即可試聽課程外加領取千鋒HTML5、UI互動設計、PHP、Java+雲資料、大資料開發、VR/AR/Unity遊戲開發、Python人工智慧、Linux雲端計算、全棧軟體測試、網路安全等全部的影片學習教程。
COPY 指令
格式:
- COPY <源路徑>... <目標路徑>
- COPY ["<源路徑1>",... "<目標路徑>"]
和 RUN 指令一樣,也有兩種格式,一種類似於命令列,一種類似於函式呼叫。
<目標路徑> 可以是容器內的絕對路徑,也可以是相對於 WORKDIR 指定的工作目錄的相對路徑。目標路徑不需要事先建立,如果目錄不存在會在複製檔案前先被建立。
COPY 指令將會從構建的上下文目錄中,把源路徑的檔案或目錄複製到新的一層的映象內的 <目標路徑> 位置。比如:
COPY qf.json /usr/src/app/
注意下面是錯誤的
COPY qf.json /usr/src/app
這樣會把 qf.json 複製成為 /usr/src/ 目錄下的 app 檔案
<源路徑> 可以是多個,支援萬用字元,如:
COPY qf* /app/
COPY q?.txt /app/
使用 COPY 指令,原始檔的各種後設資料都會保留。
比如讀、寫、執行許可權、檔案變更時間等。
ADD 指令
ADD 指令和 COPY 的格式和性質基本一致。但是在 COPY 基礎上增加了一些功能。
支援自動解壓縮,壓縮格式支援: gzip, bzip2 以及 xz
官方推薦使用 COPY 進行檔案的複製。
ADD 指定會使構建映象時的快取失效,導致構建映象的速度很慢。
COPY 和 ADD 指令中選擇的原則,所有的檔案複製均使用 COPY 指令,僅在需要自動解壓縮的場合使用 ADD。
ADD qf.tar.gz /
USER 指令
USER 則是改變執行 RUN, CMD 以及 ENTRYPOINT 這類命令的身份。
這個使用者必須是事先在容器記憶體在(建立好)的,否則無法切換。
如果以 root 執行的指令碼,在執行期間希望改變身份,比如希望以某個已經建立好的使用者來執行某個服務程式,不要使用 su 或者 sudo,這些都需要比較麻煩的配置,而且在 TTY 缺失的環境下經常出錯。建議使用 gosu。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69916964/viewspace-2681728/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux雲端計算教程全套影片合集:CMD指令講解Linux
- Linux雲端計算教程全套影片合集:關於Alpine LinuxLinux
- 千鋒Linux雲端計算教程全套影片合集:Dockerfile詳解(一)LinuxDocker
- 千鋒Linux雲端計算教程全套影片合集:Dockerfile詳解(二)LinuxDocker
- Linux雲端計算教程全套影片合集:如何用大白話解釋什麼是雲端計算Linux
- Linux雲端計算教程全套影片合集:學Mysql怎樣快速入門LinuxMySql
- 雲端計算教程:風靡B站的千鋒Linux雲端計算進階全套影片合集限時免費送Linux
- 千鋒Linux雲端計算高階全套影片合集,輕鬆帶你玩轉雲端計算Linux
- JavaScript教程全套影片合集:建構函式內容講解JavaScript函式
- 《千鋒Linux雲端計算全套影片合集》限時分享,案例加原始碼提升技術Linux原始碼
- 雲端計算教程學習入門影片課件:雲端計算終端技術講解
- 雲端計算影片教程:2020Linux新手小白影片教程Linux
- 雲端計算教程學習入門影片課件:雲端計算通訊協議講解協議
- 雲端計算教程學習入門影片課件:雲端計算基礎服務元件講解元件
- 雲端計算教程學習入門影片課件:Load Balance講解
- Java雲資料教程全套影片合集:Java學到什麼程度才算優秀?Java
- 計算機組成原理-全套影片教程計算機
- JavaScript教程全套影片合集:原型及原型鏈JavaScript原型
- JavaScript教程全套影片合集:DOM動畫效果JavaScript動畫
- 雲端計算開發學習教程,雲端計算基礎架構實現講解架構
- 雲端計算影片教程:2020年雲端計算學習路線圖
- 雲端計算教程學習入門影片課件:伺服器叢集cluster講解伺服器
- 雲端計算教程學習入門影片課件:開源作業系統講解作業系統
- 雲端計算教程學習入門影片:雲端計算的模型都有哪些模型
- 雲端計算教程學習入門影片課件:伺服器虛擬化元件講解伺服器元件
- 雲端計算教程學習入門影片:雲端計算的部署模型和服務模型
- 雲端計算學習教程,web頁面更新指令碼詳解Web指令碼
- 雲端計算教程學習入門影片課件:雲端計算的加密與金鑰管理詳解加密
- 好程式設計師Linux雲端計算教程分享Shell指令碼面試題程式設計師Linux指令碼面試題
- 學Linux雲端計算,Linux的十條危險指令Linux
- 雲端計算教程入門影片:雲端計算到底是什麼?
- 雲端計算教程學習入門影片課件:雲端計算與人工智慧人工智慧
- 雲端計算教程學習入門影片課件:互操作性與可移植性講解
- 雲端計算教程學習入門影片課件:雲端計算園區雲是什麼?
- 雲端計算教程學習入門影片課件:怎樣快速掌握Linux?Linux
- UI互動設計教程全套影片合集:輕鬆玩轉photoshop摳圖UI
- 雲端計算教程學習入門影片課件:怎麼組建雲端計算中心?
- 雲端計算教程學習入門影片課件:雲端計算中心怎麼選址?