本系列會做一個完整的Docker使用教程
上一篇:docker的安裝、卸載、運行:https://www.cnblogs.com/easyidea/p/14210376.html
下一篇:docker安裝MySQL 8:https://www.cnblogs.com/easyidea/p/14218131.html
1、Docker概述
docker實際上是一種規范,就像集裝箱一樣,不管要運算的東西是什么都要裝在集裝箱里面運輸。這就是規范,這樣的規范使得碼頭的裝貨卸貨效率提升,也使得運輸船舶、運輸車輛的大小尺寸有了進一步的規范,從而使得在整個物流運輸過程中的效率得到提升。
docker的鏡像就是遵循這種規范的集裝箱,這樣就使得每個鏡像不管里面是什么軟件程序,無論在什么地方運行都是一樣的結果,這樣做的好處就是使得在運維部署的時候解決了環境不一致的問題。
docker采用容器化技術使得每個容器隔離開來,不會相互影響,因此使用docker可以運行多個 JDK、Nginx、mysql.....甚至還能運行操作系統,並且容器是直接運行在操作系統上面的所以大大節省了資源。
2、概念理解
鏡像:docker鏡像就像一個個模具。
容器:docker容器就是模具翻模出來的東西。
倉庫:倉庫就是存放模具的地方。
下面通過運行 hello-world 來理解 docker鏡像運行過程的操作流程:
流程分析:
3、操作命令:
①:拉取鏡像
(使用該命令會從遠程倉庫拉取鏡像到本地,並且如果本地已有該鏡像會覆蓋)
docker pull hello-world
②:運行鏡像
(使用該命令會創建新的容器,相當於每次執行會翻模一次,除了ID不同其他都相同)
(該命令如果本地沒有該鏡像的話執行該命令相當於:先后執行 pull+run 兩個命令)
docker run hello-world
③:查看本地的鏡像
docker images
執行上面的命令之后輸出如下:
鏡像名稱 | 版本 | ID | 創建時間 | 大小 |
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
hello-world | latest | bf756fb1ae65 | 12 months ago | 13.3KB |
④:查看正在運行的容器
(如果容器沒事可做會被docker關閉運行狀態,因為hello-world打印輸出之后就沒事可做了,所以執行下面的命令看不到hello-world容器)
docker container ls
簡化命令:docker ps
⑥:查看所有容器
(下面的命令可以查看所有容器包括正在運行的、已經結束的)
docker container ls -a
簡化命令:docker ps -a
執行上面的命令輸出如下:
容器 ID | 鏡像名稱 | 啟動容器時運行的命令 | 容器的創建時間 | 容器的狀態 | 容器的端口 | 容器名稱 |
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
4d102af792af | hello-world | "/hello" | About an hour ago | Exited (0) About an hour ago | modest_robinson |
⑤:刪除鏡像
(刪除鏡像要輸入鏡像ID,可以只輸入前一段能區分就行了)
docker image rm bf756
簡化命令:docker rmi bf756
執行上面的命令,如果出現 :Error response from daemon: conflict: unable to delete bf756fb1ae65 (must be forced) - image is being used by stopped container 4d102af792af
說明這個鏡像還在被容器依賴,這時要先刪除它創建的容器(包括已經停止的容器)才能刪除該鏡像,也可以強制刪除:
docker images rm -f bf756
⑦:刪除容器
(刪除容器和刪除鏡像差不多 ,輸入容器ID前幾位就行了)
docker container rm 4d102
簡化命令:docker rm 4d102
如果出現:Error response from daemon: You cannot remove a running container a7...... Stop the container before attempting removal or force remove
說明該容器正在運行需要先停止運行才能刪除,也可以強制刪除:
dockers container rm -f 4d102
簡化命令:docker rm -f 4d102
⑧:啟動容器
(啟動容器 ,輸入容器ID前幾位就行了。可以同時啟動多個ID ,空格分隔開來)
docker container start 4d102
簡化命令:docker start 4d102
⑨:停止容器
(停止容器 ,輸入容器ID前幾位就行了。可以同時啟動多個ID ,空格分隔開來)
docker container stop af749
簡化命令:docker stop af749
⑩:重啟容器
(重啟容器 ,輸入容器ID前幾位就行了。可以同時啟動多個ID ,空格分隔開來)
docker container restart af7451
簡化命令:docker restart af7451