目錄
1.Docker基本組成
2.鏡像選擇
2.1、鏡像推薦選擇方案
2.2版本選擇
3.Docker 命令
3.1鏡像管理
拉取鏡像:
列出鏡像:
刪除鏡像:
構建鏡像:
3.2容器管理
?運行容器?
列出運行中的容器和所有容器
停止容器
啟動重啟容器
刪除容器
查看容器日志
進入容器
3.3網絡管理
3.4卷管理
指定卷刪除(需要配合compose的隱式命令才能執行)
其他
3.5鏡像和容器清理
3.6其他常用命令
查看 Docker 系統信息和容器詳細信息
inspect詳細信息
顯示 Docker 版本
導出容器
導入鏡像
鏡像 save壓縮load 解壓
前言-與正文無關
生活遠不止眼前的苦勞與奔波,它還充滿了無數值得我們去體驗和珍惜的美好事物。在這個快節奏的世界中,我們往往容易陷入工作的漩渦,忘記了停下腳步,感受周圍的世界。讓我們一起提醒自己,要適時放慢腳步,欣賞生活中的每一道風景,享受與家人朋友的溫馨時光,發現那些平凡日子里隱藏的幸福時刻。因為,這些點點滴滴匯聚起來的,才是構成我們豐富多彩生活的本質。希望每個人都能在繁忙的生活中找到自己的快樂之源,不僅僅為了生存而工作,更為了更好的生活而生活.
送你張美圖!希望你開心!
1.Docker基本組成
docker主機(Host):安裝了Docker程序的機器(Docker直接安裝在操作系統之上);
docker倉庫(Registry):用來保存各種打包好的軟件鏡像;倉庫分為公有倉庫和私有倉庫。(很類似 maven)
docker鏡像(Images):軟件打包好的鏡像;放在docker倉庫中;
docker容器(Container):鏡像啟動后的實例稱為一個容器;容器是獨立運行的一個或一組應用
2.鏡像選擇
比如我想下個mysql,但是docker hub倉庫中有太多鏡像了,我如何選擇我想要的那個鏡像呢
2.1、鏡像推薦選擇方案
搜索官方鏡像:在 Docker Hub 上搜索 mysql
。官方鏡像通常會帶有“官方”標簽。
?找下面兩種標識的也是可以的,一個是發行商是經過驗證的,一個是oss驗證
- 下載次數和評分:查看鏡像的下載次數和評分,選擇下載量多、評分高的鏡像。
- 維護情況:閱讀鏡像頁面的詳細信息和使用說明。官方鏡像頁面通常會提供如何配置、啟動和管理容器的詳細信息。檢查鏡像的維護情況,查看最近的更新記錄和問題反饋。選擇維護頻繁、問題反饋及時的鏡像。
2.2版本選擇
- 避免使用
latest
:在生產環境中,最好避免使用latest
標簽,因為它的內容可能會隨時間變化,導致不可預見的問題。 - 使用具體版本號或 LTS 標簽:
LTS
代表長期支持(Long-Term Support)。它指的是那些被維護時間更長,通常更加穩定和可靠的版本。指定特定版本號或使用lts
標簽可以確保每次部署的鏡像是一致的,減少由于鏡像版本變動帶來的風險。
3.Docker 命令
????????
3.1鏡像管理
-
拉取鏡像:
????????拉取遠程倉庫中的鏡像到本地。
docker pull <image_name>
-
列出鏡像:
????????列出本地所有鏡像。
docker images
REPOSITORY 名稱,一般和TAG組合使用形成唯一
TAG 版本號
IMAGE ID 鏡像唯一id
CREATED是鏡像作者發布到docker外網的時間,不是拉取到本地的時間
SIZE 鏡像大小
-
刪除鏡像:
????????刪除本地的某個鏡像。
docker rmi <image_name>
例如:docker rmi? tomcat:9.0.20-jre8-alpine
除了按照名稱也可以按照image ID進行刪除,建議還是上面的名稱刪除,因為tagID在終端長度未完全顯示,ID值會出現重復
-
構建鏡像:
使用當前目錄的 Dockerfile 構建鏡像。
docker build -t <image_name> .
3.2容器管理
-
?運行容器?
?????????使用指定鏡像啟動容器,-d
表示后臺運行,-p
用于端口映射。 --name設置容器名或鏡像名
docker run -d -p 80:80 --name <container_name> <image_name> ....
常用參數 :
-d, --detach=false: 后臺運行容器,并返回容器ID ,加d就不能使用--rm了
-i, --interactive=false: 以交互模式運行容器,通常與 -t 同時使用
-P, --publish-all=false: 隨機端口映射,容器內部端口隨機映射到主機的端口。不推薦各位小伙伴 使用該參數
-p, --publish=[]: 指定端口映射,格式為:主機(宿主)端口:容器端口,推薦各位小伙伴們使用
-t, --tty=false: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用
--name="nginx-lb": 為容器指定一個名稱
-h , --hostname="laosiji": 指定容器的hostname
-e , --env=[]: 設置環境變量,容器中可以使用該環境變量
--net="bridge": 指定容器的網絡連接類型,支持 bridge/host/none/container: 四種類型
--link=[]: 添加鏈接到另一個容器;不推薦各位小伙伴使用該參數
-v, --volume : 綁定一個卷
--privileged=false: 指定容器是否為特權容器,特權容器擁有所有的capabilities
--restart=no:指定容器停止后的重啟策略
no:容器退出時不重啟
on-failure:容器故障退出(返回值非零)時重啟
always:容器退出時總是重啟,推薦各位小伙伴們使用
--rm=false: 指定容器停止后自動刪除容器,不能以docker run -d啟動的容器
-
列出運行中的容器和所有容器
????????列出當前正在運行的容器。
docker ps
????????列出所有容器(包括已停止的)。
docker ps -a
參數詳解輸出詳情介紹:
CONTAINER ID: 容器 ID。
IMAGE: 使用的鏡像。
COMMAND: 啟動容器時運行的命令。
CREATED: 容器的創建時間。
STATUS: 容器狀態。
狀態有7種:
created(已創建)
restarting(重啟中)
running(運行中)
removing(遷移中)
paused(暫停)
exited(停止)
dead(死亡)
PORTS: 容器的端口信息和使用的連接類型(tcp\udp)。
NAMES: 自動分配的容器名稱。
-
停止容器
大部分命令如果可以使用容器的id(container_id),其實也可以使用容器名
????????停止指定容器。
docker stop <container_id>
-
啟動重啟容器
????????啟動已停止的容器。
docker start <container_id>
???????重啟容器
???????
??docker restart <container_id>
-
刪除容器
刪除指定容器。
docker rm <container_id>
刪除容器并同時刪除數據卷:
????????如:sudo docker rm -v <container_name_or_id>
????????例如:
????????先以此命令運行一個容器 docker run -itd --name tomcat9 -p 8080:8080 tomcat:9.0.20-jre8-alpine
????????需要先停止運行中的容器再刪除,否則無法刪除容器
????????docker stop tomcat9
????????按照容器名稱刪除
????????docker rm tomcat9
????????按照容器ID刪除
????????docker rm 8dd95a95e687
rm可以關聯參數
????????-f :通過 SIGKILL 信號強制刪除一個運行中的容器。
????????-l :移除容器間的網絡連接,而非容器本身。
????????-v :刪除與容器關聯的卷。
?
-
查看容器日志
????????查看容器輸出的日志。
docker logs <container_id>
例如:docker logs -f tomcat9
????????-f : 跟蹤日志輸出
????????--tail :僅列出最新N條容器日志
-
進入容器
????????進入正在運行的容器,/bin/bash
是要執行的命令,通常用于進入容器的交互式終端。
docker exec -it <container_id> /bin/bash
????????/bin/bash 是有bash命令的linux系統:例如centos
????????docker exec -it tomcat9.1 /bin/bash
????????沒有bash命令的linux系統:如下命令,例如alpine系統
????????docker exec -it tomcat9.2 sh
????????????????-i :即使沒有附加也保持STDIN 打開
????????????????-t :分配一個偽終端
exit退出容器
3.3網絡管理
-
列出網絡
列出所有 Docker 網絡。
docker network ls
-
創建網絡
????????創建新的 Docker 網絡。
docker network create <network_name>
-
連接容器到網絡
????????將容器連接到指定網絡。
docker network connect <network_name> <container_name>
-
斷開容器與網絡的連接
????????將容器從指定網絡斷開。
docker network disconnect <network_name> <container_name>
3.4卷管理
指定卷刪除(需要配合compose的隱式命令才能執行)
刪除容器并同時刪除數據卷:
sudo docker rm -v <container_name_or_id>
刪除所有未使用的數據卷
如果你想要刪除所有未使用的數據卷,可以使用以下命令:這將刪除所有未使用的(即不再關聯任何容器的)數據卷。
sudo docker volume prune
?查詢閑的數據卷
你可以通過以下命令查看所有未掛載的數據卷(這些是已經刪除容器后孤立的數據卷):
sudo docker volume ls -f dangling=true
其他
-
列出卷
列出所有卷。
docker volume ls
-
創建卷
創建新的卷。
docker volume create <volume_name>
-
查看卷詳細信息
查看卷的詳細信息。
docker volume inspect <volume_name>
-
刪除卷
刪除指定卷。
???????docker volume rm <volume_name>
3.5鏡像和容器清理
-
清理未使用的鏡像、容器、卷和網絡
我們在使用 Docker 一段時間后,系統一般都會殘存一些臨時的、沒有被使用的鏡像、容器、卷和網絡,可以通過以下命令進行清理。執行完命令后,還是告訴我們釋放了多少存儲空間!???????
???????docker system prune
3.6其他常用命令
-
查看 Docker 系統信息和容器詳細信息
查看 Docker 的系統級別信息。
???????docker info
inspect詳細信息
????????尋找容器在服務器存儲位置
????????docker ps -a找到容器id/容器名稱
????????docker inspect 容器id/容器名稱 | grep UpperDir找出該容器在物理機的位置
????????cd到UpperDir所指向的地址,找到配置文件并修改,到這后,這個位置和你用exec命令進入容器內看到文件是一致的
-
顯示 Docker 版本
顯示 Docker 客戶端和服務端的版本信息。
docker version
-
導出容器
將容器導出為一個 tar 文件。
docker export <container_id> -o <filename>.tar
-
導入鏡像
從 tar 文件中導入鏡像。
docker import <filename>.tar
-
鏡像 save壓縮load 解壓
推薦-o方式,語法是save后是上圖鏡像信息的REPOSITORY冒號加TAG組合而成的,最后寫成要打包的名字
docker save tomcat:9.0.20-jre8-alpine -o tomcat9.tar
docker save tomcat:9.0.20-jre8-slim > tomcat9.slim.tar
批量打包
load:解壓至本地鏡像
將上面save保存的包解壓并放到本地倉庫,通過docker images 重新獲取信息
docker load -i linux.tar
docker load < tomcat9.0.20.tar
------------------------------------------與正文內容無關------------------------------------
?如果覺的文章寫對各位讀者老爺們有幫助的話,麻煩點贊加關注唄!作者在這拜謝了!
混口飯吃了!如果你需要Java 、Python畢設、商務合作、技術交流、就業指導、技術支持度過試用期。請在關注私信我,本人看到一定馬上回復!
這是我全部文章所在目錄,看看是否有你需要的,如果遇到覺得不對地方請留言,看到后我會查閱進行改正。
A樂神-CSDN博客
關注在文章左上角,作者信息處。