Docker(1)

文章目录

  • Docker
    • 物理机部署的缺点
    • 虚拟机
    • Docker 与虚拟机的区别
      • Docker 的优势
    • Docker 概念
    • 安装 Docker
    • Docker 架构
    • 镜像加速
    • Docker 命令
      • 进程服务相关命令
    • 镜像相关文件命令
    • 容器相关的命令
  • 镜像加载的原理
    • UnionFS(联合文件系统)
    • docker 镜像加载原理
  • 容器的数据卷
    • 数据卷概念
    • 配置数据卷
    • 数据卷容器
      • 配置数据卷容器

Docker

物理机部署的缺点

  • 部署速度慢(需要先安装操作系统,然后安装各种软件)
  • 成本较高(需要购买硬件设备)
  • 资源可能浪费(不能充分利用硬件资源)
  • 迁移和扩展困难(环境可能不一致,硬件可能不兼容)
  • 容易受到硬件供应商的限制

虚拟机

在开发、测试和生产环境中编写代码时,可能会遇到环境不一致导致的问题,比如某个库在本地存在但在其他机器上缺失。为了解决这个问题,容器技术应运而生。

容器将代码和运行环境打包在一起,无论在哪里运行,都保持一致性。

Docker 与虚拟机的区别

  • 虚拟机:虚拟机通过虚拟机管理器(如 VMWare workstation、VirtualBox)模拟整个硬件系统,每个虚拟机都运行一个完整的操作系统。
  • 容器:容器利用 Linux 的 namespace 进行资源隔离,利用 cgroup 对资源进行限制,容器之间互不影响,并且与宿主机共享操作系统内核。

Docker 与虚拟机的对比图

Docker 的优势

  1. Docker 直接利用宿主机的硬件资源,效率更高。
  2. Docker 使用宿主机的系统内核,避免了虚拟机启动时的系统引导和资源消耗,可以快速启动容器。
  3. 虚拟机的安全性通常比容器更高,因为容器共享宿主机的内核,可能存在隔离性不足的风险。

Docker 概念

  • Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,并且可以在任何 Linux 机器上运行。

安装 Docker

在 Ubuntu 上安装 Docker 可以参考Ubuntu 安装 Docker的指南。

Docker 架构

Docker 架构图

  • 客户端:通过命令如 docker builddocker pulldocker run 与 Docker 交互。
  • 宿主机
    • Image(镜像):包含应用及其运行环境的文件。
    • Container(容器):镜像的运行实例,可以被创建、启动、停止、删除等。
  • 仓库(Registries):远程存储镜像的地方,可以是公共或私有的。

镜像加速

由于很多 Docker 镜像存储在国外,可以使用镜像加速配置以提高下载速度。

Docker 命令

Docker 命令的详细列表可查看Docker 命令大全。

进程服务相关命令

启动 Docker:

systemctl start docker

观察docker状态

systemctl status docker

停止docker

systemctl stop docker

重启docker

systemctl restart docker

设置开机自动启动

systemctl enable docker

镜像相关文件命令

本地查看镜像文件

docker images

  • repository:hello-world,就是一个镜像文件,里面打包了很多 软件运行环境
  • tag:就是这个镜像文件的版本号
  • id:就是镜像的id
  • create:创建的时间
  • size:镜像的大小

查看本地的所有镜像id

docker images -q

搜索镜像文件

(sudo) docker search redis

搜索是否有redis镜像文件

name;搜索到和redis相关的镜像文件名

description:该文件的描述

official:是否是官方的


下载镜像文件

docker pull redis:(number)

:后面指定要下载的版本

如果没有指定的话,就是下载最新版本

可以登陆docker官方网站,搜索对应要下载的镜像名,查看版本号,添加在:后面即可


删除对应的镜像

docker rmi [image ID]

后面是要删除的镜像id

容器相关的命令

通过镜像文件实例出对应的对象

  • 创建容器
docker run -it --name=c1 redis /bin/bash

sudo docker run -id --name=c3 redis
  • -i :保持容器一直运行着,如果没有加的话,没有客户端连接,容器就会自动关闭,在容器关闭的时候自动关闭容器
  • -t:启动的时候可以添加一个终端
  • -d: 启动的时候不会自动进入容器,会在后台运行,退出之后容器不会关闭
  • –name=c1:给这个容器起名字为c1
  • redis :就是我们要启动的容器对应的镜像文件,可以在镜像文件后添加:,附带上版本号
  • /bin/zsh :进入容器的初始化指令,进入容器之后,就打开的bash

回车之后就进入了一个docker容器,就是一个linux的环境

  • 进入容器
    这个是需要使用-d创建出来的容器

    sudo docker exec -it c3 /bin/bash
    
    

    进入到c3这个容器中,/bin/bash后面就是指定的命令

  • 退出

    exit
    
  • 查看容器

    • 查看历史上登陆过的所有容器

      docker ps -a
      
      • container id:容器的id
      • image:容器对应的镜像
      • command:进入容器对应的命令
      • names:容器的名字
    • 查看正在在线的容器

      docker ps
      
  • 启动容器

  • 停止容器

    sudo docker stop c3 
    

    c3就是我们要关闭的容器名

  • 删除容器

    sudo docker rm c3
    

    c3就是我们要删除的容器的名字

    我们不能删除一个正在运行的容器

  • 查看容器的信息

    sudo docker inspect c2
    

镜像加载的原理

UnionFS(联合文件系统)

  • Union文件系统是一种分层,轻量级,高性能的文件系统,支持对文件系统的修改作为一次提交,来一层层的叠加,这些层是独立的,可写的,使他们逻辑上看像是一个文件系统,union文件系统通常用于创建具有多个层次的文件系统,如docker容器的镜像层,每次叠加的都不会影响底部的文件系统,使得docker可以轻松继承和共享基础镜像的文件系统
  • union允许不同目录或文件系统挂载到同一个虚拟文件系统中

例如,我们可以将应用程序的代码和配置文件放在不同的目录中,然后通过Union文件系统将它们合并到一个虚拟文件系统中。这样做可以简化应用程序的部署和管理,同时提供更灵活的文件系统组织方式,以满足不同应用程序的需求。

docker 镜像加载原理

在这里插入图片描述
在这里插入图片描述

容器的数据卷

数据卷概念

  • 数据卷是宿主机的一个 目录文件

  • 当容器目录和数据卷目录绑定之后,对方的 修改会进行同步

    在容器里面的修改,宿主机上也能看到相应的变化,同样,宿主机上的变化,在容器里面也能看到

  • 一个数据卷可以被多个容器挂载

    解决了多个容器之间的数据交互

  • 一个容器可以挂载多个数据卷

数据卷的作用

  1. 实现了容器数据的持久化,和数据的同步
  2. 外部机器和容器之间可以间接通信
  3. 容器之间可以实现数据交互
  4. 新容器挂载上原有已经存在的数据卷,可以共享里面存在的数据

配置数据卷

docker run ... -v 宿主机目录(文件):容器内目录(文件) ...
sudo docker run -id --name=c3 -v /home/zevin/docker_data:/root/docker_container redis

数据卷容器

多容器进行数据交互

  1. 多个容器可以挂载到同一个数据卷上
  2. 可以使用一个数据卷容器

数据卷容器就是一个容器,挂载到数据卷上,然后别的容器挂载到自己上,进行数据交互

相当于数据卷容器创建了宿主机目录的快捷方式,然后把快捷方式复制到了挂载的容器上,所以即使这个数据卷容器挂了也没有影响

本质就是 去中心化

同时,当容器需要挂载多个目录的时候,新容器可以照搬老容器的所有挂载,提高效率

配置数据卷容器

  1. 启动c3数据卷容器,使用-v 参数设置数据卷

    sudo docker run -it --name=c3 -v /volume redis
    
  2. 传建启动c2,c1容器,使用 --volumes-from 参数来继承数据卷容器

    sudo docker run -id --name=c1 --volumes-from c3 redis
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/114046.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一座 “数智桥梁”,华为助力“天堑变通途”

《水调歌头游泳》中的一句话,“一桥飞架南北,天堑变通途”,广为人们所熟知,其中展现出的,是中国人对美好出行的无限向往。 天堑变通途从来不易。 中国是当今世界上交通运输最繁忙、最快捷的国家之一,交通行…

2024上海国际人工智能展(CSITF)以“技术,让生活更精彩”为核心理念,以“创新驱动发展,保护知识产权,促进技术贸易”为主题

2024上海国际人工智能展(CSITF) China(Shanghai)International Technology Fair 时间:2024年6月12-14日 地点:上海世博展览馆 主办单位 中华人民共和国商务部 中华人民共和国科学技术部 中华人民共和国国家知识产权局 上海市…

C#,数值计算——求解一组m维线性Volterra方程组的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 求解一组m维线性Volterra方程组 /// Solves a set of m linear Volterra equations of the second kind using the /// extended trapezoidal rule.On input, t0 is the st…

Git 标签(Tag)实战:打标签和删除标签的步骤指南

目录 前言使用 Git 打本地和远程标签&#xff08;Tag&#xff09;删除本地和远程 Git 标签&#xff08;Tag&#xff09;开源项目标签&#xff08;Tag&#xff09;实战打标签删除标签 结语开源微服务商城项目前后端分离项目 前言 在开源项目中&#xff0c;版本控制是至关重要的…

python脚本监听域名证书过期时间,并将通知消息到钉钉

版本一&#xff1a; 执行脚本带上 --dingtalk-webhook和–domains后指定钉钉token和域名 python3 ssl_spirtime.py --dingtalk-webhook https://oapi.dingtalk.com/robot/send?access_tokenavd345324 --domains www.abc1.com www.abc2.com www.abc3.com脚本如下 #!/usr/bin…

什么是Node.js的流(stream)?它们有什么作用?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

LeetCode算法题解|​ 669. 修剪二叉搜索树​、108. 将有序数组转换为二叉搜索树、​538. 把二叉搜索树转换为累加树​

一、LeetCode 669. 修剪二叉搜索树​ 题目链接&#xff1a;669. 修剪二叉搜索树 题目描述&#xff1a; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变…

(免费领源码)java#springboot#MYSQL 电影推荐网站30760-计算机毕业设计项目选题推荐

摘 要 随着互联网时代的到来&#xff0c;同时计算机网络技术高速发展&#xff0c;网络管理运用也变得越来越广泛。因此&#xff0c;建立一个B/S结构的电影推荐网站&#xff1b;电影推荐网站的管理工作系统化、规范化&#xff0c;也会提高平台形象&#xff0c;提高管理效率。 本…

《TCP/IP详解 卷一:协议》第5章的IPv4数据报的IHL字段解释

首先说明一下&#xff0c;这里并不解释整个IPv4数据报各个字段的含义&#xff0c;仅仅针对IHL字段作解释。 我们先看下IPv4数据报格式 对于IHL字段&#xff0c; 《TCP/IP详解 卷一&#xff1a;协议》这么解释&#xff1a; IPv4数据报。头部大小可变&#xff0c;4位的IHL字段…

MongoDB系例全教程

一、系列文章目录 一、MongoDB安装教程—官方原版 二、MongoDB 使用教程(配置、管理、监控)_linux mongodb 监控 三、MongoDB 基于角色的访问控制 四、MongoDB用户管理 五、MongoDB基础知识详解 六、MongoDB—Indexs 七、MongoDB事务详解 八、MongoDB分片教程 九、Mo…

分类预测 | Matlab实现SMA-KELM黏菌优化算法优化核极限学习机分类预测

分类预测 | Matlab实现SMA-KELM黏菌优化算法优化核极限学习机分类预测 目录 分类预测 | Matlab实现SMA-KELM黏菌优化算法优化核极限学习机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现SMA-KELM黏菌优化算法优化核极限学习机分类预测(完整源码和数…

html用css grid实现自适应四宫格放视频

想同时播放四个本地视频&#xff1a; 四宫格&#xff1b;自式应&#xff0c;即放缩浏览器时&#xff0c;四宫格也跟着放缩&#xff1b;尽量填满页面&#xff08;F11 浏览器全屏时可以填满整个屏幕&#xff09;。 在 html 中放视频用 video 标签&#xff0c;参考 [1]&#xff1…

Nginx配置

localtion规则解释 #表示精确匹配&#xff0c;优先级也是最高的 ^~ #表示uri以某个常规字符串开头,理解为匹配url路径即可 ~ #表示区分大小写的正则匹配 ~* #表示不区分大小写的正则匹配 !~ #表示区分大小写不匹配的正则 !~* #表示不区分大小写不匹配的正则 / #通用匹配&#…

【Linux】Nignx的入门使用负载均衡动静分离(前后端项目部署)---超详细

一&#xff0c;Nignx入门 1.1 Nignx是什么 Nginx是一个高性能的开源Web服务器和反向代理服务器。它使用事件驱动的异步框架&#xff0c;可同时处理大量请求&#xff0c;支持负载均衡、反向代理、HTTP缓存等常见Web服务场景。Nginx可以作为一个前端的Web服务器&#xff0c;也可…

react条件渲染

目录 前言 1. 使用if语句 2. 使用三元表达式 3. 使用逻辑与操作符 列表渲染 最佳实践和注意事项 1. 使用合适的条件判断 2. 提取重复的逻辑 3. 使用适当的key属性 总结 前言 在React中&#xff0c;条件渲染指的是根据某个条件来决定是否渲染特定的组件或元素。这在构…

Pycharm安装jupyter和d2l

安装 jupyter: jupyter是d2l的依赖库&#xff0c;没有它就用不了d2l pycharm中端输入pip install jupyter安装若失败则&#xff1a; 若网速过慢&#xff0c;则更改镜像源再下载&#xff1a; pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ pip …

【Kubernetes部署】二进制部署单Master Kurbernetes集群 超详细

二进制部署K8s 一、基本架构和系统初始化操作1.1 基本架构1.2 系统初始化操作 二、部署etcd集群2.1 证书签发Step1 下载证书制作工具Step2 创建k8s工作目录Step3 编写脚本并添加执行权限Step4 生成CA证书、etcd 服务器证书以及私钥 2.2 启动etcd服务Step1 上传并解压代码包Step…

第21期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练 Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

tp6使用Spreadsheet报错:Class ‘PhpOffice\PhpSpreadsheet\Spreadsheet‘ not found

问题提示如下&#xff1a; 可能vendor下的 phpoffice是从别的项目拷贝过来的&#xff0c;所以咋都不行 解决办法是删掉vendor下的phpoffice&#xff0c;用composer重新下载 具体操作&#xff1a;1、在项目根目录下cmd执行下面这条命令 composer require phpoffice/phpspread…

2.4G合封芯片 XL2422,集成M0核MCU,高性能 低功耗

XL2422芯片是一款高性能低功耗的SOC集成无线收发芯片&#xff0c;集成M0核MCU&#xff0c;工作在2.400~2.483GHz世界通用ISM频段。该芯片集成了射频接收器、射频发射器、频率综合器、GFSK调制器、GFSK解调器等功能模块&#xff0c;并且支持一对多线网和带ACK的通信模式。发射输…