docker是一個依賴於linux內核的軟件。同時是一個典型的C/S架構的軟件,分爲Docker Client和Docker Server。熟悉github的同窗能夠和git作一下對比。linux
通常書上會拿面向對象編程語言的例子來解釋,鏡像至關於這類語言中的類,而容器則是new出來的對象。我是這樣理解的,動手裝過操做系統的同窗都知道iso文件吧,這個文件也叫做鏡像文件,咱們說的docker鏡像就至關於這個iso文件。將這個iso文件執行起來(就是安裝操做系統的過程),在內存中創建的模型就是容器了。git
2.鏡像的兩種獲取方式(提到的命令在下一篇中會詳細的講解,有印象便可)github
1.Dockerfiledocker
這種方式是本身寫Dockerfile腳本,同shell script相似,可是要簡單得多。下文會介紹腳本命令。寫完Docker腳本後,能夠運行docker build -t tag dockerfile-path(Dockerfile文件路徑)
,例如:docker build -t icngor/lamp:2.0 ·
(注意最後的點,表示Dockerfile就在當前目錄)shell
dockerHub是docker官方提供的鏡像下載中心,第三方網站通常是從這個網站同步的,也能夠是由公司內部搭建的。使用docker pull 鏡像名稱:版本,例如:docker pull icngor/lamp:2.0
編程
經過上面兩種方式得到了image(鏡像)。接下來使用docker images
查看鏡像 centos
* FROM centos:centos6 要構建一個新的鏡像,首先須要繼承一個已有的鏡像。這條指令就是在centos:centos6的基礎上進行構建。執行docker build時會下載centos:centos6鏡像。 * MAINTAINER 做者信息 * ENV <key> <value> 設置一個系統的環境變量 * COPY <src> <dest>,ADD <src> <dest> 都是將文件複製到容器,ADD與COPY相比多了兩個功能,下載URL和解壓. * EXPOSE 暴露容器中的端口號 * ENTERYPOINT,CMD,RUN 三者的相同點均可以運行shell命令,下面對比一下三者的不一樣點: * RUN是在building image時會運行的指令, 在Dockerfile中能夠寫多條RUN指令. * CMD和ENTRYPOINT則是在運行container (容器)時會運行的指令, 都只能寫一條, 若是寫了多條, 則最後一條生效. * CMD和ENTRYPOINT的區別是: CMD在運行時會被command覆蓋, ENTRYPOINT不會被運行時的command覆蓋 若是要覆蓋ENTRYPOINT, 那麼能夠在docker run運行時輸入 --entrypoint="....". * ONBUILD 在子鏡像構建過程當中執行的一些通用操做
docker build -t 命名鏡像 指定Dockerfile文件的位置 docker images docker run -it -d -p -P -v -e --name docker ps -a docker exec -it tag /bin/bashbash
docker run -it --rm 容器推出口,刪除容器架構