Docker鏡像(Image)是一堆只讀文件(read-only layer),容器(container)的定義和鏡像(image)幾乎一模一樣,也是一堆層的統一視角,唯一區別在於容器的最上面那一層是可讀可寫的。
容器 = 鏡像 + 讀寫層。
Docker常用命令:
docker version顯示 Docker 版本信息
docker info顯示 Docker 系統信息,包括鏡像和容器數
docker pull <image-id>拉取或者更新指定鏡像
docker create <image-id>創建鏡像
docker create 命令為指定的鏡像(image)添加了一個可讀寫層,構成了一個新的容器。注意,這個容器並沒有運行。
docker start <container-id>啟動容器
docker start命令為容器文件系統創建了一個進程隔離空間。注意,每一個容器只能夠有一個進程隔離空間。
docker run <image-id>啟動鏡像
看到這個命令,讀者通常會有一個疑問:docker start 和 docker run命令有什么區別。
實際上,docker run 命令先是利用鏡像創建了一個容器,然后運行這個容器。這個命令非常的方便,並且隱藏了兩個命令的細節,但從另一方面來看,這容易讓用戶產生誤解。
docker ps 查看所有運行中的容器。
這隱藏了非運行態容器的存在,如果想要找出這些容器,我們需要使用docker ps –a這個命令。
docker images 命令會列出所有頂層鏡像。
實際上,在這里我們沒有辦法區分一個鏡像和一個只讀層,所以我們提出了top-level鏡像。只有創建容器時使用的鏡像或者是直接pull下來的鏡像能被稱為頂層(top-level)鏡像,並且每一個頂層鏡像下面都隱藏了多個鏡像層。
docker images –a命令列出了所有的鏡像,也可以說是列出了所有的可讀層。如果你想要查看某一個image-id下的所有層,可以使用docker history來查看。
docker stop <container-id>停止所有的進程docker stop命令會向運行中的容器發送一個SIGTERM的信號,然后停止所有的進程。
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關閉防火牆