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

微服务05-Docker基本操作

Docker的定义

1.什么是Docker

Docker是一个快速交付应用、运行应用的技术:

  • 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
  • 运行时利用沙箱机制形成隔离容器,各个应用互不干扰
  • 启动、移除都可以通过一行命令完成,方便快捷

2.为什么要用Docker

例如一个项目中,部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。
在这里插入图片描述

Docker·为了解决依赖的兼容问题的,采用了两个手段:

  • 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包

  • 将每个应用放到一个隔离容器去运行,避免互相干扰

在这里插入图片描述
这样打包好的应用包中,既包含应用本身,也保护应用所需要的Libs、Deps,无需再操作系统上安装这些,自然就不存在不同应用之间的兼容问题了。

Docker如何解决开发、测试、生产环境有差异的问题?

  • Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行

Docker的基本操作

1 Docker命令

常见的镜像操作命令如图:
在这里插入图片描述

举例:
需求:从DockerHub中拉取一个nginx镜像并查看

1)首先去镜像仓库搜索nginx镜像,比如DockerHub:

在这里插入图片描述

2)根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3)通过命令:docker images 查看拉取到的镜像
在这里插入图片描述

保存、导入镜像
命令格式:

docker save -o [保存的目标文件名称] [镜像名称]

1)使用docker save导出镜像到磁盘

运行命令:

docker save -o nginx.tar nginx:latest

结果如图:

在这里插入图片描述

2)使用docker load加载镜像

先删除本地的nginx镜像:

docker rmi nginx:latest

然后运行命令,加载本地文件:

docker load -i nginx.tar

结果:

在这里插入图片描述

2 容器相关命令

容器操作的命令如图:
在这里插入图片描述
容器保护三个状态:

  • 运行:进程正常运行
  • 暂停:进程暂停,CPU不再运行,并不释放内存
  • 停止:进程终止,回收进程占用的内存、CPU等资源

其中:

  • docker run:创建并运行一个容器,处于运行状态

  • docker pause:让一个运行的容器暂停

  • docker unpause:让一个容器从暂停状态恢复运行

  • docker stop:停止一个运行的容器

  • docker start:让一个停止的容器再次运行

  • docker rm:删除一个容器

举例
创建并运行nginx容器的命令:

docker run --name containerName -p 80:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器
  • –name : 给容器起一个名字,比如叫做mn
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx

这里的-p参数,是将容器端口映射到宿主机端口。

默认情况下,容器是隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器中的nginx。

现在,将容器的80与宿主机的80关联起来,当我们访问宿主机的80端口时,就会被映射到容器的80,这样就能访问到nginx了:
在这里插入图片描述

我们可以通过docker logs 容器名字 来查看日志

在这里插入图片描述

  1. 先利用镜像产生容器,然后再对容器进行命令执行模式
    在这里插入图片描述

exit退出容器

docker stop 容器名称:停掉容器名称,直接死掉

docker ps:默认查看运行中的容器

docker ps -a:查看所有容器

docker start 容器名字:开始容器,停掉的容器再开始

在这里插入图片描述

总结:

在这里插入图片描述
docker exec -it 容器名字 命令:是进入容器后修改文件,因为容器是隔离性的,所以我们不能使用vi命令,非常不方便修改,而且修改时没有日志记录的;

数据卷

出现问题:多个容器修改困难

在这里插入图片描述

解决方案:

我们可以利用数据卷(是一个虚拟目录),将容器挂载到数据卷上,而数据卷映射文件系统:

所以我们改动主机的文件系统,那么容器就会改变:因为容器挂载到了数据卷上->映射在主机文件系统上;

主机文件系统位置:在创建数据卷的时候就自动设置了(数据卷相当于代理帮你自动设置位置),实际上跟你你设置的数据卷名字有关;

容器挂载数据卷位置:通过创建容器的-v参数设置

在这里插入图片描述
在这里插入图片描述
容器删除,数据卷不会被删,这样有利于数据的保存与维护(直接改变数据卷,也就是可以通过主机修改数据——>容器升级),较为安全;

操作数据卷常见命令

在这里插入图片描述

作用:

将容器与数据分离,降低耦合,方便操作容器内的数据(->通过主机进行操作),方便数据维护升级——>容器删除,数据卷依然在;

注意:

docker volume prune相当于强制删除卷(未使用)

docker volume rm xx:指定删除

练习数据卷操作:

在这里插入图片描述

挂载数据卷

在这里插入图片描述

如果此时我将数据卷删除的话,创建容器直接设置数据卷挂载位置,docker非常智能会自动创建没有的数据卷
在这里插入图片描述

练习:创建并且运行mysql容器,将宿主机目录挂载到容器(目录挂载)

在这里插入图片描述
步骤:

通过mysql镜像启动mysql容器,设置主机挂载目录的位置以及容器挂载的位置(一一对应的感觉,没有代理帮你管理,自己设置两边的位置)

docker run --name mysql -p 3308:3306 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -v /tmp/mysql/data:/var/lib/mysql -d mysql:5.7.25

在这里插入图片描述

目录挂载与数据卷挂载的区别

在这里插入图片描述

在这里插入图片描述

相关文章:

微服务05-Docker基本操作

Docker的定义 1.什么是Docker Docker是一个快速交付应用、运行应用的技术: 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器,各个应用互不干扰启动、移除都可以通过一行命令完…...

OpenHarmony创新赛|赋能直播第三期

开放原子开源大赛OpenHarmony创新赛赋能直播间持续邀请众多技术专家一起分享应用开发技术知识,本期推出OpenHarmony应用开发之音视频播放器和三方库的使用和方法,助力开发者掌握多媒体应用技术的开发能力和使用三方库提升应用开发的效率和质量&#xff0…...

docker镜像详解

目录 什么是docker镜像镜像相关命令docker pulldocker imagesdocker searchdocker rmi导出 / 导入镜像 镜像分层镜像摘要镜像摘要的作用分发散列值 什么是docker镜像 Docker镜像是Docker容器的基础组件,它包含了运行一个应用程序所需的一切,包括代码、运…...

二叉树的顺序结构以及堆的实现——【数据结构】

W...Y的主页 😊 代码仓库分享 💕 上篇文章,我们认识了什么是树以及二叉树的基本内容、表示方法……接下来我们继续来深入二叉树,感受其中的魅力。 目录 二叉树的顺序结构 堆的概念及结构 堆的实现 堆的创建 堆的初始化与…...

手写一个摸鱼神器:使用python手写一个看小说的脚本,在ide中输出小说内容,同事直呼“还得是你”

文章目录 一、准备python环境二、分析小说网的章节目录三、分析小说网的章节内容四、编写python脚本五、验证一下吧 一、准备python环境 windows从0搭建python3开发环境与开发工具 Python爬虫基础(一):urllib库的使用详解 Python爬虫基础&a…...

【Python 实战】---- 实现批量图片的切割

1. 需求场景 在实际开发中,我们会遇到一种很无聊,但是又必须实现的需求,就是比如协议、大量的宣传页面、大量的静态介绍页面、或者大量静态页面,但是页面高度很高,甚至高度可能会达到50000px,但是为了渲染…...

MAYA粒子基础_场

重力场 牛顿场 径向场 均匀场和重力场的区别 空气场 推动物体 阻力场 推动物体 涡流场 湍流场 体积轴场...

趣解设计模式之《我买了宝马,为啥不让我停这?》

〇、小故事 我们怎么识别一辆汽车是宝马品牌的汽车呢?虽然宝马汽车车辆型号非常的多,而且外型也各不相同,但是只要是宝马品牌的汽车,它的车头一定会有宝马汽车的logo,那么这个就是大家最直观去确认一辆车是不是宝马牌…...

MyBatis Plus 中 LocalDateTime 引发的一些问题和解决办法

简介 在使用 MyBatis Plus 进行数据库操作时,我们经常会遇到处理日期时间类型的需求。然而,在某些情况下,使用 LocalDateTime 类型可能会引发一些问题。本文将详细介绍这些问题,并提供相应的解决办法。 问题描述: 1…...

谁懂啊!自制的科普安全手册居然火了

自制的科普安全手册居然火了 谁懂啊! 嗨嗨嗨!小仙女们,有没有见过这样的可以翻页的电子安全手册呢?自己随手就能轻松制作手册,结果一晚浏览量这么多!这可真是让人又惊又喜啊!快来分享一下我的喜…...

强化学习-论文调研-泛化性能力度量

1.[ICML2019]Quantifying Generalization in Reinforcement Learning ​ 文章提出16000多个单智能体闯关游戏CoinRun,通过智能体在分割开的训练环境和测试环境上表现的性能作为RL泛化性的度量。具体而言作者通过”奔跑硬币泛化曲线“ (CoinRun Gener…...

CSS中图片旋转超出父元素解决办法

下面的两种解决办法都会导致图片缩小&#xff0c;可以给图片进行初始化的宽高设置 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge">…...

QML、C++ 和 JS 三者之间的交互

QML、C++ 和 JS 三者之间的交互是 Qt Quick 应用开发的核心。以下是它们之间交互的常见方式: 从 QML 调用 C++ 函数要从 QML 调用 C++ 函数,您可以使用 Qt 的 QML 注册机制,例如 qmlRegisterType,将 C++ 类注册为 QML 类型。 C++ 代码: #include <QGuiApplication>…...

ProEasy机器人:TCP无协议通讯(socket通讯)时打印log日志

打印日志需要调用lua中的io相关文件函数与os相关时间函数&#xff0c;代码如下 --------TCP无协议视觉通讯------- function open_client_Vision() --连接视觉服务器 打开以太网作为客户端 repeat FreePort.ECM_CloseAll() --关闭所有链接 …...

算法通过村第六关-树白银笔记|层次遍历

文章目录 前言1. 层次遍历介绍2. 基本的层次遍历与变换2.1 二叉树的层次遍历2.2 层次遍历-自底向上2.3 二叉树的锯齿形层次遍历2.4 N叉树的层次遍历 3. 几个处理每层元素的题目3.1 在每棵树行中找出最大值3.2 在每棵树行中找出平均值3.3 二叉树的右视图3.4 最底层最左边 总结 前…...

SpringCloud理解篇

一、微服务概述 1、什么是微服务 目前的微服务并没有一个统一的标准&#xff0c;一般是以业务来划分将传统的一站式应用&#xff0c;拆分成一个个的服务&#xff0c;彻底去耦合&#xff0c;一个微服务就是单功能业务&#xff0c;只做一件事。 与微服务相对的叫巨石 。 2、微服…...

编写LED灯的驱动,实现三盏灯的控制

mychrdev.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include "head.h"unsigned int major; // 保存主设备号 char kbuf[128]{0}; unsigned int…...

Flink报错处理-1

在 flink job 运行一段时间后&#xff0c;观察日志发现出现了如下的 warn日志&#xff1a; The operator name {} exceeded the {} characters length limit and was truncated 完整的 warn 日志如下&#xff1a; The operator name TriggerWindow(GlobalWindows(), ListStat…...

bim与数字孪生智能建造的关系

随着建筑业数字化改革的推进&#xff0c;我们正迈入数字孪生时代&#xff0c;而真正实现建筑物数字孪生的智能建造&#xff0c;其基础前提是建造对象和建造过程的高度数字化&#xff0c;这样一个过程唯有依托BIM建立数据模型才能实现&#xff0c;真正达到智能建造或智慧运维。 …...

【Linux】进程篇(补):守护进程

文章目录 1. 补充1.1 查看1.2 控制进程组的方式 2. 创建守护进程step1. 忽略信号step2. 让自己不是组长step3. setsid 函数&#xff1a;给调用函数设置新的会话和进程组 IDstep4. chdir 函数&#xff1a;可以改变守护进程的工作路径step5. 处理文件描述符 0、1、2 守护进程类样…...

5000+明日方舟游戏素材库:解锁二次创作与游戏开发的完整资源解决方案

5000明日方舟游戏素材库&#xff1a;解锁二次创作与游戏开发的完整资源解决方案 【免费下载链接】ArknightsGameResource 明日方舟客户端素材 项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource 您在二次创作时是否曾为素材不全而烦恼&#xff1f;开发…...

从动画原理到嵌入式实现:赋予机器人生命感的设计与工程实践

1. 项目概述&#xff1a;当技术遇见灵魂在数字世界和物理世界的交汇处&#xff0c;我们总在尝试创造一些能与我们对话、甚至能触动我们内心的存在。无论是屏幕里那个让你牵挂的动画角色&#xff0c;还是面前这个试图与你眼神交流的服务机器人&#xff0c;一个核心的挑战始终横亘…...

AMD Ryzen嵌入式处理器在COM Express模块上的高性能应用与设计实践

1. 项目概述&#xff1a;当COM Express遇上AMD Ryzen&#xff0c;一次嵌入式设计的性能跃迁 在嵌入式系统设计领域&#xff0c;COM Express&#xff08;Computer-On-Module Express&#xff09;模块因其标准化、高集成度和易于扩展的特性&#xff0c;一直是构建紧凑型、高性能嵌…...

Ganache 快速启动与 Truffle 项目集成实战

1. 为什么选择Ganache作为开发起点 刚接触区块链开发时&#xff0c;最头疼的就是如何在本地快速搭建测试环境。以太坊主网不仅需要真实ETH&#xff0c;每笔交易还要等待区块确认&#xff0c;完全不适合开发调试。这时候Ganache就像个贴心的开发助手&#xff0c;它能在本地一键生…...

从2018到2023:Unity WebGL内存管理变迁史与你的2G内存墙突破指南

Unity WebGL内存管理演进与2G内存墙突破实战 引言 2018年的某个深夜&#xff0c;当我第一次在Chrome控制台看到"Out of Memory"的红色警告时&#xff0c;完全没意识到这会成为接下来五年与Unity WebGL缠斗的开端。那个使用Unity 2017.3构建的医疗可视化项目&#xff…...

NoSleep:告别Windows意外休眠的终极解决方案,让你的电脑始终保持清醒状态

NoSleep&#xff1a;告别Windows意外休眠的终极解决方案&#xff0c;让你的电脑始终保持清醒状态 【免费下载链接】NoSleep Lightweight Windows utility to prevent screen locking 项目地址: https://gitcode.com/gh_mirrors/nos/NoSleep 你是否经历过视频会议演示到一…...

长期使用Taotoken聚合服务对开发者日常工作效率的积极影响观察

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken聚合服务对开发者日常工作效率的积极影响观察 1. 引言&#xff1a;从分散管理到统一接入的转变 在模型应用开发过…...

从PI到PR:静止坐标系下永磁同步电机电流控制的新范式

1. 永磁同步电机控制的痛点与变革 每次调试永磁同步电机&#xff08;PMSM&#xff09;时&#xff0c;最让人头疼的就是参数漂移问题。记得去年做伺服系统项目&#xff0c;电机运行半小时后电流波形就开始畸变——电感值因温升变化了15%&#xff0c;导致PI控制器输出的d轴电流出…...

基于树莓派与AstroPrint搭建无线3D打印控制中心实战指南

1. 项目概述&#xff1a;为什么需要无线3D打印控制&#xff1f;如果你和我一样&#xff0c;是个喜欢折腾3D打印机的创客或爱好者&#xff0c;那你肯定经历过这样的场景&#xff1a;为了打印一个模型&#xff0c;需要先在电脑上用切片软件生成G-code文件&#xff0c;然后找到读卡…...

Resemble Enhance:AI语音增强的终极指南,让嘈杂录音秒变专业音频

Resemble Enhance&#xff1a;AI语音增强的终极指南&#xff0c;让嘈杂录音秒变专业音频 【免费下载链接】resemble-enhance AI powered speech denoising and enhancement 项目地址: https://gitcode.com/gh_mirrors/re/resemble-enhance 你是否曾因录音环境嘈杂而烦恼…...