能夠簡單的認爲docker容器是一個虛擬機,封裝就是把這個虛擬機打包,打包後能在任何系統跑,docker裝上即用。也能夠形象的比喻成一個集裝箱,把全部貨物都打包好放到箱子裏,不須要再分類運輸,集裝箱不互相影響node
Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)
鏡像鏡像只是一個虛擬的概念,且是分層存儲的,其實際體現並不是由一個文件組成,而是由一組文件系統組成,或者說,由多層文件系統聯合組成。linux
1.鏡像(Image)和容器(Container)的關係,就像是面向對象程序設計中的 類 和 實例 同樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器能夠被建立、啓動、中止、刪除、暫停等。
2.容器的本質是進程,可是和宿主執行的進程不同,它有獨立的命名空間,所以有本身的root文件系統,網絡配置、進程空間
3.容器存儲層的生存週期和容器同樣,容器消亡時,容器存儲層也隨之消亡,所以任何保存於容器存儲層的信息都會隨容器刪除而丟失。
注: Docker 最佳實踐的要求nginx
1.容器不該該向其存儲層內寫入任何數據,容器存儲層要保持無狀態化。 2.全部的文件寫入操做,都應該使用 數據卷(Volume)、或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主(或網絡存儲)發生讀寫,其性能和穩定性更高 3.數據卷的生存週期獨立於容器,容器消亡,數據卷不會消亡
一個 Docker Registry 中能夠包含多個倉庫(Repository);每一個倉庫能夠包含多個標籤(Tag);每一個標籤對應一個鏡像。git
docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標籤] docker pull ubuntu:16.04 docker run 運行容器的命令 docker run -it --rm \ ubuntu:16.04 \ bash -it: -i:交互式操做 -t:終端 咱們這裏打算進入bash執行一些命令並查看返回結果,所以須要交互式終端 --rm:這個參數是說容器退出後隨之將其刪除 bash:放在鏡像名後的是命令,這裏咱們但願有個交互式 Shell,所以用的是 bash。
docker image ls docker image ls -f dangling=true 虛懸鏡像 docker image prune 刪除虛懸鏡像 docker image ls -a 中間層鏡像 docker image ls ubuntu 列出部分鏡像 docker image ls -f since=mongo:3.2 docker image ls -f before=mongo:3.2
docker image rm [選項] <鏡像1> [<鏡像2> ...] docker image rm ID docker image rm 鏡像名 docker image rm 摘要 docker rmi 鏡像名
FROM 指定基礎鏡像 RUN 執行命令 構建鏡像 docker build -t nginx:v3 .
COPY package.json /usr/src/app/
Add 比COPY多了些特性,好比 <源路徑> 能夠是一個 URLgithub
CMD echo $HOME CMD [ "sh", "-c", "echo $HOME" ]
ENV NODE_VERSION 7.2.0 或者ENV NODE_VERSION=7.2.0 好比使用: RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION
$ docker container run \ -d \ -p 127.0.0.2:8080:80 \ --rm \ --name mynginx \ nginx
docker container start
docker stop ID
docker attach ID /exit 會致使容器退出 docker exec -it ID /exit 不會致使容器退出
linux安裝docker
$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose
卸載shell
$ sudo rm /usr/local/bin/docker-compose
docker-compose up docker-compose down docker-compose --version