Docker 筆記 連環境也一起打包工具
將環境打包成image並直接運行,由於打包的關係,所以互不影響
- image是打包好的映象檔
- container是映像檔被執行後產稱的一堆檔案
基本套路: 寫好Dockerfile然後build,他就會照你的Dockerfile建立出image檔
docker run
執行 from imageIdocker exec
執行 from containerdocker logs <container ID>
查log--rm
當container變成Exited時,自動移除container-d
背景執行docker rm -f
強制移除container,可省略stop-p
port映射-e
key=value 設定到環境變數$pwd
神奇變數: 當下的目錄-w
進入container後預設在哪個目錄下執行指令
volume 倉庫
原本container玩自己的,但是你指定他的一些玩具只能在倉庫(volume)中玩,於是你就可以透過存取倉庫,在container以外的地方備份或存取資料了
-v [/host]:[/container][param]
將volume掛載到container上(將/host目錄 Mapping到 /container目錄),param可以設定讀寫權限--volumes-from [container]
直接使用某個container現在的volume
Network 網路
讓很多container加入倒network裡面,就可以利用container name來互相呼叫與使用 (像是-link)
$docker netowrk create my-net
建立network$docker run --network my-net
加入倒my-net的network
Dockerfile
$docker build .
拆解Dockerfile並一一執行-t=[image]:[version]
指定tag,使用的image與產出image的版本號--no-cache
不快取- 檔案
.dockerignore
像是.gitignore,用來避開在build的時候不要的檔案 FROM
從哪個image為基底開始WORKDIR $path
切換到某個目錄COPY $host $container
複製本機某個目錄到容器的某個目錄RUN ...
執行指令(會產生commit,所以通常是建置過程中會使用到的指令)CMD ...
執行指令(不會產生commit,所以通常為建置完後的預設指令),後面的指令會覆蓋前面的docker run $image [CMD]
此CMD就會覆蓋ENTRYPOINT
與CMD一樣的功能,但是與CMD分開,執行順序在CMD之前,一樣會有後面指令覆蓋前面的特性
Multi-stage Build 利用多個 FROM 搭配AS來區別生產與開發環境
留言
張貼留言