Docker鏡像(Image)是一堆只讀文件(read-only layer),容器(container)的定義和鏡像(image)幾乎如出一轍,也是一堆層的統一視角,惟一區別在於容器的最上面那一層是可讀可寫的。
容器 = 鏡像 + 讀寫層。docker
Docker經常使用命令:數據庫
docker version顯示 Docker 版本信息
docker info顯示 Docker 系統信息,包括鏡像和容器數
docker pull <image-id>拉取或者更新指定鏡像
docker create <image-id>建立鏡像
docker create 命令爲指定的鏡像(image)添加了一個可讀寫層,構成了一個新的容器。注意,這個容器並無運行。tcp
docker start <container-id>啓動容器
docker start命令爲容器文件系統建立了一個進程隔離空間。注意,每個容器只可以有一個進程隔離空間。ui
docker run <image-id>啓動鏡像
看到這個命令,讀者一般會有一個疑問:docker start 和 docker run命令有什麼區別。spa
實際上,docker run 命令先是利用鏡像建立了一個容器,而後運行這個容器。這個命令很是的方便,而且隱藏了兩個命令的細節,但從另外一方面來看,這容易讓用戶產生誤解。3d
docker ps 查看全部運行中的容器。
這隱藏了非運行態容器的存在,若是想要找出這些容器,咱們須要使用docker ps –a這個命令。blog
docker images 命令會列出全部頂層鏡像。
實際上,在這裏咱們沒有辦法區分一個鏡像和一個只讀層,因此咱們提出了top-level鏡像。只有建立容器時使用的鏡像或者是直接pull下來的鏡像能被稱爲頂層(top-level)鏡像,而且每個頂層鏡像下面都隱藏了多個鏡像層。遞歸
docker images –a命令列出了全部的鏡像,也能夠說是列出了全部的可讀層。若是你想要查看某一個image-id下的全部層,可使用docker history來查看。進程
docker stop <container-id>中止全部的進程docker stop命令會向運行中的容器發送一個SIGTERM的信號,而後中止全部的進程。cmd
docker kill <container-id>殺死進程,docker kill 命令向全部運行在容器中的進程發送了一個不友好的SIGKILL信號。
docker rm <container-id>命令會移除構成容器的可讀寫層。注意,這個命令只能對非運行態容器執行。
docker rmi <image-id>命令會移除構成鏡像的一個只讀層。你只可以使用docker rmi來移除最頂層(top level layer)(也能夠說是鏡像),你也可使用-f參數來強制刪除中間的只讀層。
docker commit <container-id>命令將容器的可讀寫層轉換爲一個只讀層,這樣就把一個容器轉換成了不可變的鏡像。
docker build咱們從上圖能夠看到,build命令根據Dockerfile文件中的FROM指令獲取到鏡像,而後重複地1)run(create和start)、2)修改、3)commit。在循環中的每一步都會生成一個新的層,所以許多新的層會被建立。
docker exec <running-container-id>docker exec 命令會在運行中的容器執行一個新進程。
docker inspect <container-id>查看這個容器的詳細信息,例如查看運行的數據庫服務的鏈接信息。
docker save <image-id>docker save命令會建立一個鏡像的壓縮文件,這個文件可以在另一個主機的Docker上使用。和export命令不一樣,這個命令爲每個層都保存了它們的元數據。這個命令只能對鏡像生效。
docker export <container-id>docker export命令建立一個tar文件,而且移除了元數據和沒必要要的層,將多個層整合成了一個層,只保存了當前統一視角看到的內容(譯者注:expoxt後的容器再import到Docker中,經過docker images –tree命令只能看到一個鏡像;而save後的鏡像則不一樣,它可以看到這個鏡像的歷史鏡像)。
docker history <image-id>docker history命令遞歸地輸出指定鏡像的歷史鏡像。
firewall-cmd --add-port=3306/tcp開放端口
systemctl stop firewalld關閉防火牆