12. 一文快速学懂常用工具——docker 命令
本章讲解知识点
- Docker 引擎
- Docker 常用命令
- Docker 生命周期详解
- Containerd 与 Docker 命令对比
<br/>
- 本专栏适合于软件开发刚入职的学生或人士,有一定的编程基础,帮助大家快速掌握工作中必会的工具和指令。
- 本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。
- 如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
- 相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。
<br/>
1. Docker 引擎
1.1 核心组件
Docker 引擎是一种基于客户端-服务器( C/S 架构)模型的应用程序。Docker 核心组件架构就长上图这个样子,由如下主要的组件构成:服务端 Docker 进程(Server Docker Daemon)、API 接口(REST API)、Docker 客户端命令行(Client Docker CLI)。Docker 服务端处理 Docker 客户端的请求,并执行相应的操作,并负责管理容器(Containers)、镜像(Images)、网络(Networks)、数据卷(Data Volumes)。
核心组件的作用分别如下:
- 服务端 Docker 进程(Server Docker Daemon):负责管理 Docker 容器和镜像;处理客户端的请求,并执行相应的操作。
- API 接口(REST API):为 Docker 客户端提供与服务端 Docker daemon 交互的接口。
- Docker 客户端命令行(Client Docker CLI):允许用户与服务端 Docker daemon 交互,客户端发送的一系列请求,例如运行容器、构建镜像等操作,将最终由服务端 Docker daemon 来执行。
- Docker 镜像(Images):是一个轻量级、可执行的软件包,其中包含了运行应用程序所需的所有代码、库、配置文件等。容器镜像可以通过运行容器来启动,容器会使用镜像创建一个独立的运行环境,包含容器镜像中的所有文件和依赖项。
- Docker 容器(Containers):是 Docker 中的运行时实体,包含了应用程序及其依赖关系,可以被启动、停止、重启、删除等操作。
- Docker 网络(Networks):允许容器之间进行通信,并提供网络隔离、端口映射等功能。
- Docker 存储(Data Volumes):提供容器内部数据的持久化存储功能,包括数据卷、本地文件系统、网络存储等。
1.2 小实验
我们通过环境实操来看看这些组件,让我们有一个具体直观的感受。
1.通过 MobaXterm 登录数据节点 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
命令查看客户端与服务端
[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
可以看到客户端与服务端的各类信息,如版本等,服务端还记录了各种状态检测。
3.查看服务端 Docker daemon
服务端 Docker daemon 是一个守护进程,守护进程就被放置在 centOS 系统的 /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
你可以看到很多重要的进程都被放在该目录下,如 Docker、kubelet、sshd 等。这些进程会在开机时被 systemd 进程给拉起来。
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
可以看到我们查出来的信息记录了容器的名称、运行时间、使用镜像等。
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
命令查看网络信息,docker network inspect
可以查看网络的详细信息。
[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
可以查看数据卷的详细信息。
[root@node1 multi-user.target.wants]# docker volume ls DRIVER VOLUME NAME
当前没有给容器挂卷。
8.组件数据的存储位置
我们进入 /var/lib/docker
目录,相关数据都是存储在这里
[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%内容,订阅专栏后可继续查看/也可单篇购买
如题:一文快速学懂常用工具——包含Git、GDB、Makefile、Linux指令等常用工具的快速入门及实操,还包含相关面试题。