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-pport映射-ekey=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來區別生產與開發環境
留言
張貼留言