当前位置: 首页 > news >正文

【计算机常识】--docker入门+docker desktop的使用(一)

摘要

docker官网:  Docker: Accelerated Container Application Development
docker desktop官网:http://hub.docker.com/

docker文档官网:Docker Docs

Docker是基于Go语言实现的云开源项目。

Docker的主要目标是:Build, Ship and Run Any App, Anywhere(构建,装载任何应用在任何地方),也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能做到一次镜像,处处运行。

目录

摘要

解决的问题

1.docker--组成 

2.Docker Desktop安装

3.docker--命令

3.1.帮助命令

3.2.镜像命令

3.3.容器命令


解决的问题

试想如下场景,是不是经常遇到?

运维/测试: 你的程序不能跑呀!
开发:这里能跑啊!!!

(1)环境不一致导致诸多困扰。换一台机器就要重来一次费时费力。
(2)扩缩容同样也是个棘手问题(因为需要同样的环境),移植非常麻烦。

于是有人在想能不能从根本上解决问题。软件带环境安装,也就是说安装的时候把原始环境一模一样地复制过来。

有个docker后,我们就可以把跑通的程序的源码+配置+环境+版本等统一打包成一个镜像问题。也就是说以前开发提交的只是一份源代码,但是现在变成了源码+配置+环境+依赖包等等。可以以搬家进行比喻。以前搬家要收拾自己的东西,打包、运输、解包,期间肯定会丢失很多东西。有了docker之后搬家就相当于是搬楼,整栋楼移植过去。
注:其实就类似于vmware虚拟机那样,既然虚拟机能把整个系统都打包,那这里把程序依赖打包自然不是什么大问题。

虚拟机到虚拟容器:

​特性​​传统虚拟机(VM)​​容器虚拟化技术​
​虚拟化层级​硬件级虚拟化(Hypervisor + Guest OS)操作系统级虚拟化(共享主机内核)
​隔离性​强(独立内核,硬件隔离)较弱(进程隔离,依赖内核特性如cgroups/namespace)
​启动速度​慢(分钟级,需启动完整OS)快(秒级,直接复用主机内核)
​资源占用​高(每个VM需独立OS和虚拟硬件)低(共享内核,无额外OS开销)
​性能损耗​较高(硬件虚拟化开销)极低(接近原生性能)
​镜像大小​大(GB级,包含完整OS)小(MB级,仅包含应用和依赖)
​部署密度​低(单机部署少量VM)高(单机可部署数百容器)
​跨平台兼容性​强(可运行不同Guest OS)弱(依赖主机内核,需匹配OS类型)
​典型工具/平台​VMware ESXi、KVM、Hyper-VDocker、Kubernetes、containerd

 docker利用的是宿主机的内核,不需要加载操作系统os内核。当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较耗时耗资源的过程。

1.docker--组成 

docker本身是一个容器运行载体、管理引擎。其组成包括如下三要素:

​概念​​定义与特性​​功能与用途​
​镜像(Image)​- 只读的模板文件,包含运行容器所需的代码、依赖、环境配置。
- 不可直接修改,需通过新镜像版本更新。
提供标准化的应用打包方式,确保环境一致性(如 nginx:latest 镜像)。
​容器(Container)​- 镜像的运行实例,拥有隔离的进程、用户、网络空间。
- 可创建、启动、停止、删除,资源隔离但共享主机内核。
运行应用的轻量级沙箱环境(如通过 nginx 镜像启动一个 Web 服务容器)。
​仓库(Repository)​- 集中存储和管理镜像的场所,分为公开仓库(如 Docker Hub)和私有仓库(如阿里云 ACR)。
- 支持版本控制(通过标签区分镜像版本)。
实现镜像的分发与共享,支持团队协作和持续集成(如从仓库拉取 ubuntu:20.04)。

也就是说: 容器是运行在镜像里面的:

# 镜像 = 类(Class)
class NginxImage:def __init__(self):self.code = "nginx-1.25"self.deps = ["libc6", "openssl"]# 容器 = 类的实例(Object)
container1 = NginxImage()  # 容器1
container2 = NginxImage()  # 容器2(同一镜像可创建多个容器)

Docker也是典型的Client-Server架构,后端是一个搜耦合架构,众多模块各司其职。docker运行的基本流程如下:

以下是 ​​Docker 架构核心流程总结​​ 的表格和说明,结合您提供的步骤整理而成:


​Docker 核心架构与工作流程​

​步骤​​组件/角色​​功能说明​​关键交互​
(1)​Docker Client​用户通过命令行(CLI)或 API 发送请求(如 docker run)。与 Docker Daemon 建立通信(默认通过 UNIX 套接字或 TCP)。
(2)​Docker Daemon​接收 Client 请求的核心服务,包含 Docker Server 模块处理请求。解析请求并分发任务给 Docker Engine
(3)​Docker Engine​执行具体任务,每个任务以 ​​Job​​ 形式运行(如创建容器、拉取镜像)。调用底层驱动(Graph/Network/Exec Driver)完成操作。
(4)​Graph Driver​管理镜像存储(如 Overlay2、AUFS),从 ​​Docker Registry​​ 下载镜像并存储。镜像以分层(Layer)形式存储,复用相同层提高效率。
(5)​Network Driver​配置容器网络(如 bridgehost 模式),通过 libcontainer 实现隔离。创建虚拟网卡、IP 分配等(依赖 iptables/CNM 模型)。
(6)​Exec Driver​执行容器内命令,限制资源(CPU/内存),默认使用 containerd(原为 libcontainer)。调用 runc 启动容器进程,通过 cgroups 隔离资源。
(7)​libcontainer​底层容器运行时库(现集成到 runc),提供命名空间、cgroups 等隔离功能。被 Network Driver 和 Exec Driver 调用,实现容器生命周期管理。

2.Docker Desktop安装

就是docker的可视化软件

2.1 下载及安装

进入Docker官网 (www.docker.com/) ,下载对应版本并安装

安装之前需要打开:

一般windows家庭版是没有Hyper-V的,我这里看网上教程配环境的时候一直出现错误,安装好像不需要这个,所以不管.

出现其他版本不是配的问题,可以自行在网上找教程,或者call me主页

安装完成之后。docker环境也就有了:

3.docker--命令

3.1.帮助命令

#查看概要信息
docker info
#查看docker整体帮助文档
docker --help
#查看docker命令帮助文档
docker run/pull/…… --help

3.2.镜像命令

docker images

1.列出本地主机上已有的镜像

2.搜索某个镜像是否在镜像仓库

docker search xxx

3.下载镜像

从 ​​Docker Registry​​(默认 Docker Hub)拉取(下载)指定的镜像到本地,存储到 /var/lib/docker(由 Graph Driver 管理)。

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
  • NAME​:镜像名称(格式:[仓库地址/]用户名/镜像名,如 nginx 或 alpine)。
  • TAG​:镜像标签(版本),默认为 latest
  • DIGEST​:镜像内容的哈希值(唯一标识,优先级高于 TAG)。
  • ​选项​​说明​
    --all-tags / -a下载镜像的所有标签版本(慎用,可能拉取大量数据)。
    --quiet / -q静默模式,仅输出镜像 ID。
    --platform指定平台(如 linux/amd64 或 windows/arm64),多平台镜像时使用。

4.查看镜像/容器/数据卷所占的空间;盘点下鲸鱼装了多少东西了。 

docker system df

#查看每个镜像占用了多cpu、内存、网络。
docker stats    #删除某个镜像,"rmi"即remove image。
docker rmi xxx_imagename/image_id#将Docker镜像保存成tar包(镜像归档);docker load为其反操作。
docker save/load

3.3.容器命令

以下是 ​​Docker 容器核心命令总结​​,涵盖容器生命周期管理、操作、调试及资源控制等常用场景,按功能分类整理为表格和示例:

​1. 容器生命周期管理​

​命令​​作用​​常用参数​​示例​
docker create创建容器但不启动(需手动启动)--name-it-p-vdocker create --name my-nginx nginx:latest
docker run创建并启动容器-d(后台运行), -it(交互式), --rm(退出后删除), -p(端口映射)docker run -d -p 80:80 --name web nginx
docker start启动已停止的容器-a(附加输出)docker start web
docker stop停止运行中的容器(发送 SIGTERM)-t(超时时间,默认 10s)docker stop web
docker restart重启容器同 stopdocker restart web
docker kill强制停止容器(发送 SIGKILL)-s(指定信号)docker kill -s SIGKILL web
docker rm删除已停止的容器-f(强制删除运行中的容器), -v(同时删除卷)docker rm -f web
docker pause/unpause暂停/恢复容器内所有进程

​​​2. 容器操作与交互​

​命令​​作用​​常用参数​​示例​
docker exec在运行中的容器内执行命令-it(交互式), -e(环境变量)docker exec -it web bash
docker attach附加到容器的标准输入/输出(退出可能导致容器停止)--sig-proxy(信号代理)docker attach web
docker cp在容器和主机之间复制文件-L(跟随符号链接)docker cp web:/etc/nginx/nginx.conf ./
docker logs查看容器日志-f(实时跟踪), --tail N(显示最后 N 行), -t(时间戳)docker logs -f web

​3. 容器监控与资源管理​

​命令​​作用​​常用参数​​示例​
docker ps列出容器-a(显示所有容器), -q(仅显示 ID), --filter(过滤)docker ps -a --filter "status=exited"
docker stats实时监控容器资源使用(CPU/内存/网络等)--no-stream(单次输出)docker stats web
docker top查看容器内运行的进程-docker top web
docker inspect查看容器详细信息(配置、网络、卷等)--format(格式化输出)docker inspect --format='{{.NetworkSettings.IPAddress}}' web
docker update动态更新容器资源限制(需容器支持)--cpus--memory--restartdocker update --memory 512M web

​4. 容器网络与端口​

​命令​​作用​​常用参数​​示例​
docker port查看容器的端口映射-docker port web
docker network管理容器网络(子命令:create/connect/disconnect/inspect--driver(网络驱动)docker network create my-net

​5. 容器数据管理​

​命令​​作用​​常用参数​​示例​
docker volume管理数据卷(子命令:create/ls/inspect/rm--driver(卷驱动)docker volume create my-vol
绑定挂载(-v 或 --mount挂载主机目录到容器-v /host/path:/container/path

 常用命令:

#列出正在运行的容器
docker ps  #另起一个终端在linux机器下执行,而不是在ubuntu中执行()。docker ps                 # 查看运行中的容器
docker ps -a              # 查看所有容器(包括已停止的)
docker stats              # 查看容器资源占用docker start/stop/restart 容器名/ID    # 启动/停止/重启
docker pause/unpause 容器名/ID        # 暂停/恢复
docker exec -it 容器名/ID /bin/bash    # 进入运行中的容器
docker logs -f 容器名/ID              # 查看日志(实时)
docker rm 容器名/ID                   # 删除已停止的容器
docker rm -f 容器名/ID                # 强制删除运行中的容器docker images             # 列出本地镜像
docker inspect 镜像名/ID  # 查看镜像详细信息
docker history 镜像名/ID  # 查看镜像构建历史docker build -t 镜像名:标签 .    # 根据当前目录的 Dockerfile 构建镜像
docker rmi 镜像名/ID            # 删除镜像
docker prune                   # 清理未被使用的镜像

​Docker Compose​​(需单独安装)

docker-compose up -d      # 启动服务栈(根据 docker-compose.yml)
docker-compose down       # 停止并删除服务栈

http://www.lryc.cn/news/571982.html

相关文章:

  • MySQL 多表查询、事务
  • 如何使用ChatGPT快速完成一篇论文初稿?
  • Controller Area Network (CAN) 通信机制简介
  • Ubuntu服务器启动jupyter notebook,本地电脑Mobaxterm访问
  • 一个电脑装了多个python哪个生效?在 Windows 系统中修改环境变量 PATH 的优先级
  • Vue.js 按键修饰符详解:提升键盘事件处理效率
  • 筑牢安全防线:电子文件元数据驱动的 AI 知识库可控管理方案
  • TradingAgents:基于多智能体的大型语言模型(LLM)金融交易框架
  • 从零学起VIM
  • 解决sql查询中in查询项过多时很慢的问题
  • django 获取 filter后的某一个属性的list
  • 【Java学习笔记】Java绘图基础
  • 【学习笔记】2.2 Encoder-Decoder
  • Neo4j 入门到精通(Cypher语言详解)
  • 湖北理元理律师事务所小微企业债务重组方案:司法与经营的共生逻辑
  • b站视频如何下载到电脑上
  • jupter 如何修改文件位置
  • 【AI Study】第四天,Pandas(8)- 最佳实践
  • 湖北理元理律师事务所债务优化模型:法律与生活的平衡之道
  • 《汇编语言:基于X86处理器》第2章 x86处理器架构
  • 《仿盒马》app开发技术分享--未完成订单列表展示逻辑优化(61)
  • 机器学习常用评估指标
  • springboot使用nacos注册中心、配置中心的例子
  • C/Fortran多核并行计算
  • (LeetCode 面试经典 150 题 ) 26. 删除有序数组中的重复项 (双指针)
  • A 股无风不起浪!金融吸血科技
  • 黑马python(八)
  • 利用 Nginx 实现灰度环境的 H5 应用发布策略
  • 将iOS上架流程融入DevOps体系:从CI构建到App Store发布的完整实践
  • 嵌入式之硬件学习(三)通信方式、串口通信