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