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

Docker学习: Docker介绍和安装以及常用命令

1、Docker学习

文章目录

  • 1、Docker学习
    • 1. Docker介绍和安装
    • 2. Docker常用命令

1. Docker介绍和安装

  1. Docker解决什么问题
    1. 传统的开发模式中,由开发者编写源码后直接把源码打包,这时候如果想要运行则必须配置相应的环境和依赖,使得运行的成本很高,且很容易出错,仅仅将源码打包,此时运行时要重新配置相应的环境和依赖,故使用Docker,将项目的环境和配置全部打包为镜像文件,此时直接对镜像文件创建容器运行即可,且容器相对于VM,不需要虚拟整个硬件和OS,其运行在宿主机的内核上
    2. 传统的虚拟机技术中可以实现在一个OS中运行另一个OS,但要虚拟化所有硬件并安装完整的OS镜像才可以运行,此时会耗费大量的资源,且冗余步骤过多,且启动慢
    3. 为了解决这一问题,引入了容器虚拟化技术,将应用运行所需的所有环境和依赖配置全部打包为一个镜像文件,然后当使用时直接根据镜像文件创建一个容器实例来运行该镜像
    4. 镜像就相当于一个类模板,根据镜像来创建具体的容器实例,容器就是一个实际运行的应用,仓库中存放各种镜像
    5. 镜像类似于一个类模板,当需要使用时创建一个容器实例来运行该镜像,仓库中存放了各种镜像文件
  2. Docker基本组成
    1. Docker由镜像、容器和仓库构成
    2. 镜像就是将应用源码以及环境配置依赖全部打包后的文件容器就是根据镜像所运行的实例,仓库中存放各种镜像
    3. 镜像中只包含了应用运行所需的最小资源,仅仅是runtime资源
    4. Docker依赖于运行的Linux内核故必须部署在Linux系统中
    5. Docker必须部署在Linux系统上
  3. Docker架构
    1. Docker是Clint-Server结构的系统,后台守护进程运行在主机上客户端通过socket连接访问由守护进程接受客户端命令并管理运行在主机上的容器
    2. 容器是一个运行时环境![[Pasted image 20241106185502.png]]
  4. Docker安装:必须部署在Linux系统上
    1. Docker必须部署在Linux系统上依赖于允许的Linux内核,只可以在Linux系统下部署Docker,对于Windows系统要先下载一个Linux的虚拟机,然后在虚拟机上部署Docker![[Pasted image 20241106191104.png]]
    2. 设置stable镜像仓库![[Pasted image 20241106191511.png]]![[Pasted image 20241106191556.png]]
    3. 更新yum软件包索引![[Pasted image 20241106191630.png]]
    4. 安装DockerCE引擎![[Pasted image 20241106191715.png]]
    5. 启动Docker:systemctl start docker
    6. 测试:docker version![[Pasted image 20241106192141.png]]
    7. 运行容器:docker run hello-world;当docker执行一个镜像时,如果本地有则直接创建一个容器实例运行,否则去仓库中拉取镜像后再创建docker容器
  5. Docker卸载
    1. ![[Pasted image 20241106192128.png]]
  6. 阿里云镜像加速器
    1. 为了使Docker拉取镜像以及发布镜像更快速,可以使用阿里云提供的镜像加速器,镜像要从阿里云拉取并发布到阿里云,故使用加速器可以更加快速
    2. 容器镜像服务 - 镜像加速器![[Pasted image 20241106192946.png]]
    3. 在linux上配置镜像加速器![[Pasted image 20241106193013.png]]
  7. Docker run hello-world
    1. 当安装好docker后就可以根据指定的镜像来运行容器,如果本地没有指定的镜像,则会从配置的stable仓库中拉取镜像到本地然后再创建容器实例运行该镜像当dockerHub也没有指定的镜像时会报错
    2. docker run 的执行流程:1、先在本地找指定的镜像,如果找到则直接创建容器实例运行,2、当本地没有时会从仓库中找指定的镜像,找到了先拉取到本地,然后创建容器实例运行镜像,找不到则返回错误 ![[Pasted image 20241106193414.png]]
  8. 为什么Docker比VM快
    1. 为什么在Docker上运行应用创建一个虚拟机再运行应用更快?VM要虚拟一整套硬件和OS,然后启动后才可运行应用,占用资源多,冗余步骤多,启动慢;而Docker容器部署在Linux系统上,使用Linux内核运行容器,只需要把镜像拉取到本地然后创建容器实例来运行即可
    2. 区别:Docker利用宿主机的内核不需要一套完整的硬件和OS,不需要硬件资源虚拟化 ![[Pasted image 20241106193854.png]]
    3. VM必须包含操作系统的所有硬件以及软件资源然后启动才可以运行应用,而Docker只需要runtime资源,且利用宿主机的内核,故速度比VM快![[Pasted image 20241106195419.png]]![[Pasted image 20241106195250.png]]
    4. Docker就是一个软件,在软件中运行应用,因为要使用Linux内核,故只可部署在Linux系统上

2. Docker常用命令

Docker命令是 docker command [options] 格式,命令之后直接输入可选参数

  1. 帮助启动命令
    1. docker info:查看docker概要信息
    2. docker --help:总体帮助文档
    3. docker 命令 --help:具体命令文档,给出某个命令的使用方法以及可选的各个参数,参数类型有 -x 和 --xxx ,-x 一般都是 --xxx 的简化,且 -x 后面加值,–xxx=xx 来赋值
    4. ![[Pasted image 20241106195612.png]]
  2. 镜像命令
    1. Docker运行流程
      1. 当在Docker运行一个容器时,会先从本地找镜像,如果本地没有则去仓库中拉取镜像到本地,然后再创建容器实例运行一个镜像可以创建多个容器实例,一个镜像可以创建多个容器,通过 REPOSITORY:TAG 表示一个镜像,TAG是版本号,默认为LATEST
    2. docker images:列出本地仓库中的镜像
      1. 列出本地主机上的镜像;OPTIONS:-a(列出本地所有的镜像)-q(只显示镜像ID)
      2. 给出各个镜像的仓库源(镜像名称)版本TAG、镜像的ID、创建时间、虚拟大小
      3. 用 REPOSITORY:TAG 来定义镜像
      4. 同一个仓库源(镜像名称)可以有多个不同版本TAG的镜像用REPOSITORY:TAG来定义不同的镜像,如果不指定仓库源的TAG默认LATEST镜像
      5. ![[Pasted image 20241106201124.png]]
    3. docker search 镜像名称
      1. 在远程仓库中查找指定的镜像![[Pasted image 20241106202708.png]]
      2. OPTIONS:–limit N只列出前N个镜像,默认25;命令之后先输入可选参数
    4. docker pull(push) 镜像名称[:TAG]
      1. 从远程仓库中拉取指定的镜像保存到本地仓库中,可以指定镜像的TAG版本不指定时默认拉取LATEST最新版![[Pasted image 20241106203357.png]]
    5. docker system df
      1. 查看镜像/容器/数据卷所占的空间
    6. docker rmi 镜像名字/ID
      1. 从本地仓库中删除指定的镜像![[Pasted image 20241106204252.png]]
      2. docker可以实现命令的虚传通过 $(docker images -qa) 可以将该命令的结果作为参数传入另一个命令中
    7. docker的虚悬镜像是什么?
      1. 虚悬镜像:仓库名和TAG版本标签均为none的对象![[Pasted image 20241106205734.png]]
    8. ![[Pasted image 20241106200947.png]]
  3. 容器命令
    有镜像才可以创建容器,根据镜像创建容器实例Docker必须部署到Linux系统上依赖于Linux内核运行,必须有镜像才可以启动容器
    1. 新建+启动容器
      1. 当使用VM创建Ubuntu时,必须先安装Linux系统,虚拟相应的硬件资源,然后启动Linux后才可以启动Ubuntu,但当使用Docker时,此时直接从远程仓库中 PULL Ubuntu 镜像,然后根据镜像启动容器运行即可
      2. docker run [OPTIONS] IMAEG [COMMAND][ARG]![[Pasted image 20241106213927.png]]
      3. 通过 -it 启动交互式容器-i以交互模式启动容器-t分配一个伪终端),还可以在后面添加命令![[Pasted image 20241106215104.png]]
      4. 通过 -d 后台运行容器并返回容器ID,启动守护式容器
      5. -P是随机端口,-p是指定端口,通过宿主机端口去找容器的端口
    2. 列出所有正在运行的容器实例
      1. docker ps OPTIONS ![[Pasted image 20241106220212.png]]
      2. 同一个镜像IMAGE可以创建多个容器实例,且每个容器实例相互独立,有唯一的容器ID,且可以通过 --name=xxx 为容器实例指定名字,当不使用 --name=xxx 指定名字时,会自动分配一个名字

http://www.mrgr.cn/news/67385.html

相关文章:

  • Linux运维-Prometheus监控系统搭建
  • SSM中maven
  • 15分钟学 Go 第 36 天:Go的反射基础
  • 初始JavaEE篇 —— 网络编程(1):基础的网络知识
  • 使用GitHub Actions实现CI/CD流程
  • 深度学习中的 Layer Normalization:轻松搞懂原理和实现
  • Stable Diffusion Web UI - ControlNet 景深 Depth
  • [数组排序] 0912. 排序数组
  • C++入门基础知识139—【关于C++ 类访问修饰符】
  • 「Mac畅玩鸿蒙与硬件32」UI互动应用篇9 - 番茄钟倒计时应用
  • C/C++」C++类型转换 之 dynamic_cast 操作符
  • 【Golang】validator库的使用
  • Unity网络通信(part5.编写服务端与客户端)
  • Redis集群模式之Redis Sentinel vs Redis Cluster
  • 基于特征工程的勒索软件检测方法研究项目申请
  • AI - 使用LangChain请求LLM结构化生成内容
  • 科研绘图系列:python语言连线图(linechart)
  • 小鹏AI机器人XPENG Iron亮相 采用端到端AI鹰眼视觉系统
  • 【系统集成项目管理工程师教程】第12章 执行过程组
  • Java | Leetcode Java题解之第542题01矩阵
  • 构建 Tencent SGX 机密计算环境
  • 十二:java web(4)-- Spring核心基础
  • GPU释放威力:在Gymnasium环境中使用稳定基线3在AMD GPU上训练强化学习代理
  • 科比投篮预测的数据处理与分析
  • 网络初始:TCP/IP 五层协议模型 网络通信基本流程
  • 解释Python的排序方法sort和sorted的区别。