Docker 架构&命令

Docker 架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。Docker 容器通过 Docker镜像来创建

  • Docker Client 客户端

  • Docker Daemon 守护进程(服务端)

  • Docker Registry 镜像仓库

  • 容器与镜像

Docker Client(客户端):

接收你输入的终端命令(如 docker run、docker build、docker pull),然后通过 REST API 把这些指令发送给幕后的守护进程

Docker Host(本地主机 )/Docker Daemon(守护进程):

  • 这是Docker的核心部分,负责docker的开启与关闭

  • 它是一个常驻在后台的进程,专门负责监听来自 Client 的请求,并管理、创建和运行你的 Containers(容器)、Images(镜像)以及 Volumes(数据卷)和 Networks(网络)

  • Images和Containers的关系就像类和对象的关系,通过一个静态的images ,可以创建出多个动态的实例对象container ,镜像images来源于镜像仓库

  • 容器是镜像运行的实体,容器可以被创建、启动、暂停、删除

Docker Registry(镜像仓库):

  • 用来集中存储和分发 Docker 镜像(Images)

  • 一般来讲,Docker 会去官方的 Docker Hub 寻找镜像;但是官方服务器在国外速度很慢,我们可以搭建自己的镜像仓库。

Docker服务命令

Docker服务命令作用于Docker Daemon守护进程, 也就是作用于docker整体。Docker 服务通过 systemd 来管理,因此使用systemctl命令是标准方法

启动docker服务

复制代码
systemctl start docker

查看docker服务状态

复制代码
systemctl status docker

停止docker服务

复制代码
systemctl stop docker 

重启docker服务

复制代码
systemctl restart docker

注意事项

systemctl是 Linux 系统的服务管理工具 :它用于管理 Linux 下的systemd服务,比如启动、停止、查看状态等。在Windows系统中没有systemctl这个命令,简单来说,就像你无法在 Android 手机上直接运行 iPhone 的 App 一样

事实上,在 Windows 上,你不需要也不应该使用systemctl。Docker 不是以 Linux 服务的形式运行的,而是以一个桌面应用程序 (Docker Desktop) 的形式运行的,

只要你桌面上双击打开了 Docker Desktop 软件,Docker 服务就已经在后台默默启动了

使用 Docker Desktop 图形界面也可以完成docker的启动、停止、重启操作

Docker镜像命令

Docker 的镜像命令主要用于管理镜像文件本身(比如查看、下载、删除、构建)

在docker中,软件和软件的运行环境被打包成一个镜像文件,再通过镜像文件创建出对应的容器

查看镜像

复制代码
docker images

搜索镜像

复制代码
docker search redis

这里举例搜索redis镜像

拉取镜像

复制代码
docker pull redis

如果不在redis后面写版本号就默认是latest版本

删除镜像

rmi=remove images

复制代码
docker rmi redis

删除所有镜像

复制代码
docker rmi `docker images -q`

Docker容器命令

Docker 的容器(container )命令用于管理运行中的容器(比如启动、停止、进入、查看日志等),这是日常使用最频繁也是最重要的命令。

容器是镜像运行出来的实例,那么容器命令主要是如何创建容器和操作容器

创建并启动一个新容器

复制代码
docker run [参数] <镜像名>
#举例:
docker run -it  --name my-redis redis /bin/bash是什么意思
  • docker run:容器启动命令

  • -it:-i表示实时交互(你在终端写的命令会传递给容器进程),-t表示创建终端;也就是开启一个实时交互的终端窗口,如果不加这两个参数,容器启动完输出两行日志就直接退出了

  • --name:给容器起名字

  • redis:创建容器所需要的镜像

  • /bin/bash:覆盖镜像默认的启动命令,改为运行容器内部的 **Bash Shell,**相当于打开容器的powershell

其他常用参数:

  • -d:后台运行;创建完容器后不会立即进入容器而是让容器在后台独立默默地运行,输入exit也不会退出容器

  • -p:端口映射 宿主机端口:容器端口

输入exit可以退出容器

查看容器

查看现在正在运行的容器

复制代码
docker ps

显示所有容器(包括已停止的)

复制代码
docker ps -a

进入正在运行的容器(-d创建的容器)

name就是容器名称

复制代码
docker exec -it name /bin/bash

停止容器

对于-d创建的容器,输入exit并不能让它停止运行,我们需要用stop语句

复制代码
docker stop name

注意:关闭容器可能需要一段时间,可以通过docker ps -a查看容器是否关闭

重启容器

复制代码
docker restart container_id
# 等待 5 秒后重启
docker restart -t 5  container_id   

删除容器

复制代码
docker rm container_id                # 删除已停止的容器
docker rm -f container_id             # 强制删除(即使正在运行)

删除镜像的语句是docker rmi;删除容器的语句是docker rm

查看容器详情

**获取一个 Docker 对象(容器、镜像、网络、数据卷等)最完整、最底层的元数据,**这些数据以一个巨大的JSON格式文本呈现

复制代码
docker inspect

查看容器日志

复制代码
docker logs container_id
相关推荐
桌面运维家20 小时前
旧电脑跑不动课程软件,VDI云桌面怎样接着用?
运维·服务器·虚拟化·pve·vdi·云桌面
zhang1338308907521 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
知已难寻21 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
2601_949847751 天前
bcrypt.js 跨端三方库仓颉适配全流程
linux·运维·ubuntu
m0_639906941 天前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
今天重构了吗1 天前
Linux 上 rm -rf 删错了能找回吗
运维·服务器
KaiwuDB1 天前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
codezzzsleep1 天前
学术汇报 PPT 自动化生成实战指南
运维·自动化·powerpoint
古法老登瞎折腾1 天前
大数据智能运维实战(九):让 AI 查日志——找到异常,也保留上下文
java·大数据·运维·人工智能·spring ai·mcp
讯捷蓝达1 天前
IBM V3500存储 双控故障、数据怎么恢复?
运维