12. 一文快速學(xué)懂常用工具——docker 命令
本章講解知識(shí)點(diǎn)
- Docker 引擎
- Docker 常用命令
- Docker 生命周期詳解
- Containerd 與 Docker 命令對(duì)比
<br/>
- 本專欄適合于軟件開發(fā)剛?cè)肼?/strong>的學(xué)生或人士,有一定的編程基礎(chǔ),幫助大家快速掌握工作中必會(huì)的工具和指令。
- 本專欄針對(duì)面試題答案進(jìn)行了優(yōu)化,盡量做到好記、言簡(jiǎn)意賅。
- 如專欄內(nèi)容有錯(cuò)漏,歡迎在評(píng)論區(qū)指出或私聊我更改,一起學(xué)習(xí),共同進(jìn)步。
- 相信大家都有著高尚的靈魂,請(qǐng)尊重我的知識(shí)產(chǎn)權(quán),未經(jīng)允許嚴(yán)禁各類機(jī)構(gòu)和個(gè)人轉(zhuǎn)載、傳閱本專欄的內(nèi)容。
<br/>
1. Docker 引擎
1.1 核心組件
Docker 引擎是一種基于客戶端-服務(wù)器( C/S 架構(gòu))模型的應(yīng)用程序。Docker 核心組件架構(gòu)就長(zhǎng)上圖這個(gè)樣子,由如下主要的組件構(gòu)成:服務(wù)端 Docker 進(jìn)程(Server Docker Daemon)、API 接口(REST API)、Docker 客戶端命令行(Client Docker CLI)。Docker 服務(wù)端處理 Docker 客戶端的請(qǐng)求,并執(zhí)行相應(yīng)的操作,并負(fù)責(zé)管理容器(Containers)、鏡像(Images)、網(wǎng)絡(luò)(Networks)、數(shù)據(jù)卷(Data Volumes)。
核心組件的作用分別如下:
- 服務(wù)端 Docker 進(jìn)程(Server Docker Daemon):負(fù)責(zé)管理 Docker 容器和鏡像;處理客戶端的請(qǐng)求,并執(zhí)行相應(yīng)的操作。
- API 接口(REST API):為 Docker 客戶端提供與服務(wù)端 Docker daemon 交互的接口。
- Docker 客戶端命令行(Client Docker CLI):允許用戶與服務(wù)端 Docker daemon 交互,客戶端發(fā)送的一系列請(qǐng)求,例如運(yùn)行容器、構(gòu)建鏡像等操作,將最終由服務(wù)端 Docker daemon 來執(zhí)行。
- Docker 鏡像(Images):是一個(gè)輕量級(jí)、可執(zhí)行的軟件包,其中包含了運(yùn)行應(yīng)用程序所需的所有代碼、庫、配置文件等。容器鏡像可以通過運(yùn)行容器來啟動(dòng),容器會(huì)使用鏡像創(chuàng)建一個(gè)獨(dú)立的運(yùn)行環(huán)境,包含容器鏡像中的所有文件和依賴項(xiàng)。
- Docker 容器(Containers):是 Docker 中的運(yùn)行時(shí)實(shí)體,包含了應(yīng)用程序及其依賴關(guān)系,可以被啟動(dòng)、停止、重啟、刪除等操作。
- Docker 網(wǎng)絡(luò)(Networks):允許容器之間進(jìn)行通信,并提供網(wǎng)絡(luò)隔離、端口映射等功能。
- Docker 存儲(chǔ)(Data Volumes):提供容器內(nèi)部數(shù)據(jù)的持久化存儲(chǔ)功能,包括數(shù)據(jù)卷、本地文件系統(tǒng)、網(wǎng)絡(luò)存儲(chǔ)等。
1.2 小實(shí)驗(yàn)
我們通過環(huán)境實(shí)操來看看這些組件,讓我們有一個(gè)具體直觀的感受。
1.通過 MobaXterm 登錄數(shù)據(jù)節(jié)點(diǎn) node1
Last login: Wed Mar 29 07:35:27 2023 from 192.168.18.1 [mtuser@node1 ~]$ su Password: [root@node1 mtuser]# unset HISTSIZE [root@node1 mtuser]#
2.通過 docker info
命令查看客戶端與服務(wù)端
[root@node1 mtuser]# docker info Client: Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.10.2 Path: /usr/libexec/docker/cli-plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v2.16.0 Path: /usr/libexec/docker/cli-plugins/docker-compose scan: Docker Scan (Docker Inc.) Version: v0.23.0 Path: /usr/libexec/docker/cli-plugins/docker-scan Server: Containers: 21 Running: 20 Paused: 0 Stopped: 1 Images: 11 Server Version: 23.0.1 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Using metacopy: false Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: systemd Cgroup Version: 1
可以看到客戶端與服務(wù)端的各類信息,如版本等,服務(wù)端還記錄了各種狀態(tài)檢測(cè)。
3.查看服務(wù)端 Docker daemon
服務(wù)端 Docker daemon 是一個(gè)守護(hù)進(jìn)程,守護(hù)進(jìn)程就被放置在 centOS 系統(tǒng)的 /etc/systemd/system/multi-user.target.wants/
目錄下:
lrwxrwxrwx. 1 root root 38 Feb 19 00:20 docker.service -> /usr/lib/systemd/system/docker.service lrwxrwxrwx. 1 root root 39 Feb 19 00:25 kubelet.service -> /usr/lib/systemd/system/kubelet.service lrwxrwxrwx. 1 root root 46 Feb 19 07:47 NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service lrwxrwxrwx. 1 root root 36 Feb 19 07:47 sshd.service -> /usr/lib/systemd/system/sshd.service
你可以看到很多重要的進(jìn)程都被放在該目錄下,如 Docker、kubelet、sshd 等。這些進(jìn)程會(huì)在開機(jī)時(shí)被 systemd 進(jìn)程給拉起來。
4.通過 docker ps
命令來查看容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0b8403d32d32 eb516548c180 "/coredns -conf /etc…" 10 hours ago Up 10 hours k8s_coredns_coredns-5c98db65d4-dvjnt_kube-system_9a7128e8-2acb-4932-92ec-0d08987a5ac8_10 5173c3176823 eb516548c180 "/coredns -conf /etc…" 10 hours ago Up 10 hours k8s_coredns_coredns-5c98db65d4-djhf4_kube-system_8c60a86c-48df-42c5-8300-073d9ad31ab3_3 9281b678cfc0 f73640fb5061 "/metrics-server --c…" 10 hours ago Up 10 hours k8s_metrics-server_metrics-server-765bbd5859-ssfsk_kube-system_5e22dc07-7817-46ae-ae24-2c75a1511432_3 f3348ad3f43a k8s.gcr.io/pause:3.1 "/pause" 10 hours ago Up 10 hours k8s_POD_coredns-5c98db65d4-djhf4_kube-system_8c60a86c-48df-42c5-8300-073d9ad31ab3_5
可以看到我們查出來的信息記錄了容器的名稱、運(yùn)行時(shí)間、使用鏡像等。
5.通過 docker images
命令查看鏡像信息
[root@node1 multi-user.target.wants]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx my-all adb14340751e 5 weeks ago 171MB redis latest 7614ae9453d1 15 months ago 113MB k8s.gcr.io/metrics-server/metrics-server v0.5.2 f73640fb5061 16 months ago 64.3MB registry.aliyuncs.com/google_containers/kube-proxy v1.15.12 00206e1127f2 2 years ago 82.5MB k8s.gcr.io/coredns 1.3.1 eb516548c180 4 years ago 40.3MB registry.aliyuncs.com/google_containers/pause 3.1 da86e6ba6ca1 5 years ago 742kB
6.通過 docker network ls
命令查看網(wǎng)絡(luò)信息,docker network inspect
可以查看網(wǎng)絡(luò)的詳細(xì)信息。
[root@node1 multi-user.target.wants]# docker network ls NETWORK ID NAME DRIVER SCOPE 5799c2d7d17a bridge bridge local 17bce51528bb host host local d635ff5a1e25 none null local
查看具體的信息:
[root@node1 multi-user.target.wants]# docker network inspect 17bce51528bb [ { "Name": "host", "Id": "17bce51528bbf722d91619158cae222061b7982335afb3427a916c393e4cf4bd", "Created": "2023-02-19T00:20:15.348822313-05:00", "Scope": "local", "Driver": "host", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { "6255674a18b7429b0428ad1596a4e057cd3809452e43a90ee1bda6224ca50ea5": { "Name": "k8s_POD_kube-proxy-nzmw5_kube-system_1700d664-d1cb-46dc-ad0e-3d2e0eb8cac8_6", "EndpointID": "d8d11d335c4032cbdbb3e9dc89c34f363b8ece9e6196d52536768dc12293636e", "MacAddress": "", "IPv4Address": "", "IPv6Address": "" }, "f23b51b3aed38196cdf011467ac9491af868f0ea7e554706819c135d45500afb": { "Name": "k8s_POD_kube-flannel-ds-ch66n_kube-system_9efb5869-20d7-425b-b684-f422ac8248ca_6", "EndpointID": "ae6dc64f21286467504b4b979091f30e4213b98a4498e966cd4e2fd335318af8", "MacAddress": "", "IPv4Address": "", "IPv6Address": "" } }, "Options": {}, "Labels": {} } ]
7.通過 docker volume ls
命令查看卷信息,docker volume inspect
可以查看數(shù)據(jù)卷的詳細(xì)信息。
[root@node1 multi-user.target.wants]# docker volume ls DRIVER VOLUME NAME
當(dāng)前沒有給容器掛卷。
8.組件數(shù)據(jù)的存儲(chǔ)位置
我們進(jìn)入 /var/lib/docker
目錄,相關(guān)數(shù)據(jù)都是存儲(chǔ)在這里
[root@node1 docker]# ll drwx--x---. 23 root root 4096 Mar 29 07:36 containers drwx------. 3 root root 22 Feb 19 00:20 image drwxr-x---. 3 root root 19 Feb 19 00:20 net
剩余60%內(nèi)容,訂閱專欄后可繼續(xù)查看/也可單篇購買
如題:一文快速學(xué)懂常用工具——包含Git、GDB、Makefile、Linux指令等常用工具的快速入門及實(shí)操,還包含相關(guān)面試題。