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

Docker运维高级容器技术知识点总结

1、虚拟机部署和容器化部署的区别是什么?

1、技术基础:

      <1>.虚拟化技术在物理硬件上创建虚拟机,每台虚拟机运行自己完整的操作系统、从而实现资源隔离。

      <2>.容器化技术:将应用程序打包在容器内,在进程空间上实现隔离。

2、资源效率和开销:

      <1>.虚拟机比较占资源、导致资源使用率高。

      <2>.容器共享宿主机操作内核、仅隔离程序进程。

3、隔离和安全性:

      <1>.虚拟化:提供强大隔离性、提供高安全性,但资源占用率大。

      <2>.容器化:虽然实现了隔离,但共享宿主内核,但是隔离性稍差。

2、什么是docker?什么是镜像、容器、仓库?

docker是一种开源平台,允许开发者将程序部署在容器中。可以部署在任何环境中,确保一致性和可移植性。

镜像是容器的模板,用来创建容器的。一个镜像可以创建出多个容器。

容器是用来运行各种应用程序、服务的。

仓库是用来存储镜像文件的地方。仓库分为公有仓库和私有仓库,存放了大量的镜像供用户下载

3、什么是docker容器?

docker容器是运行中的实例。

4、如何从dockerfile构建镜像?

使用docker build命令进行构建镜像。

docker build -t myimage:latest   // -t用于指定镜像标签

5、如何运行一个docker?

 使用docker run命令运行docker

docker run  -d  --name  mycontainer myimage:latest 
//  运行一个基于myimage:latest镜像的容器

6、如何查看正在运行的docker容器?

可以使用docker ps 命令进行查看。

如果要查看所有的容器,包括已经停止的docker ,可以使用

docker  ps  -a // 查看所有容器(包括已经停止的docker容器)

7、如何停止和删除一个容器?

使用docker stop 和 docker rm命令进行查看。

例如停止并删除mycontainer容器。

docker  stop   mycontainer  //  停止使用mycontainer容器
docker  rm     mycontainer  //  删除mycontainer容器。

8、Docker安装失败了如何进行排查?

1、检查系统是否满足Docker的安装要求。

2、在/var/log目录下进行查看日志

3、检查防火墙或云服务的安全组设置,确保Docker需要的端口没有被阻塞。

4、确保操作系统和所有软件包都是最新的,有时旧的软件包可能会导致安装问题。

5、尝试清理环境后重新安装

9、镜像管理

在dockers中镜像是容器的模板,当用户需要从Docker镜像中查找所需要的镜像。  

1、查找镜像

docker search keyword(keyword表示要查找镜像所包含的关键词)
eg:要查找出包含mysql的关键词 // docker search mysql

 2、下载镜像

查找到合适的镜像后,可以将其下载到本地计算机中,以便创建容器。

docker pull name:tag  // name为镜像名称、tag参数指定镜像标签
eg:docker pull mysql // 将mysql镜像下载到本地计算机中

3、列出本地镜像 

docker image ls  // 列出本地镜像
docker images 

4、删除镜像 

对于当前系统中已经不需要的镜像,为了节省存储空间 。可以将其删除。

可以同时删除多个镜像,多个镜像名称使用空格进行隔开即可。

docker rmi image //image为镜像名称
docker rmi -f mysql //强行删除mysql镜像

5、查看镜像

对于下载到本地的镜像文件,可以使用docker inspect进行查看详细信息。

 root@ubuntu-virtual-machine:/home/ubuntu# docker inspect mysql

 6、构建镜像

构建docker镜像有两种方法:

1、docker commit命令进行构建

2、docker build 命令和Dockerfile文件进行构建,但是过程十分繁琐。因此一般我们使用docker commit进行构镜像。

3、使用docker commit进行构建镜像。

eg:在docker中进行创建数据库mysql并进行映射到主机的3306端口

1、在docker中创建数据库

docker  run  --name  mysqltest  -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d  mysql 

//  --name 进行对容器进行命名

//  -e 对创建的MySQL进行密码设置为123456 、账号为root

//  -p 对docker创建的MySQL进行端口映射

//  -d 后台运行容器

2、进入创建好的容器mysqltest中

docker  exec  -it   mysqltest   /bin/bash 

//  -i表示交互式,-t 表示分配一个虚拟终端。/bin/bash为要执行的命令。

3、进入交互式页面

mysql  -uroot  -p 

password:123456 // 进入数据库

7、镜像标签管理

镜像标签可以区分不同的版本,镜像和标签之间可以使用冒号进行隔开。

docker提供了docker tag命令来设置镜像的标签。

docker tag httpd local/httpd // 将名称为httpd的镜像标识为local仓库的httpd

10、容器管理 

容器是docker提供网络服务的主体,为了提供mysql,apache,nginx等网络服务,用户必须创建对应的容器。

在docker中常使用docker create 创建容器,但是创建的新容器处于停止状态。

另一种是通过docker run 创建新容器,但是容器会启动。

1、创建容器
docker create [option] image
用户可通过option为容器指定相应的选项。用来设置新的容器。
--add-host=[] //指定主机到IP地址之间的关系,格式为host:ip
--dns=[] //为容器指定域名服务器
-h //为容器指定主机名
-i //打开容器的标准输入 
--name //指定容器名称
-u //创建用户

eg1:创建一个名为yunwei的容器
docker create yunwei
eg:创建一个名为yunwei的容器,创建之后立即启动该容器,并进入交互模式
root@ubuntu-virtual-machine:/home/ubuntu# docker run -it --name yunwei ubuntu /bin/bash 
root@0dd80eac1c83:/# pwd
/
root@0dd80eac1c83:/# exit
root@ubuntu-virtual-machine:/home/ubuntu# docker run -d -it ubuntu /bin/bash
// 创建一个后台型容器
ec313748b83eeda0f07681480a27003616260b2f74566541ca8c3079f513b608

2、查看容器

docker ps //查看当前正在运行的容器
docker ps -a //查看当前系统中所有的容器,包括运行中的个处于停止状态的容器
有些容器的状态为Exited 表示已经停止运行
有些容器的状态为up 表示处于运行状态
有些容器的状态为Created 表示处于创建过,但是没有启用 

查找某些特定的容器

docker ps -a -f name=crank  // -f指定筛选条件
root@ubuntu-virtual-machine:/etc/docker# docker ps -a -f name=mysql 
field=value //field表示name,image,以及status等字段

docker ps -a --before=ubuntu //ubuntu容器之前所建的所有容器
docker ps -a --since=ubuntu //Ubuntu容器之后所建的所有容器

3、启动容器

通常使用docker start命令来进行启动容器。

使用docker restart命令来进行重启容器

使用docker stop 命令来进行停止容器

使用docker kill命令来强制终止容器

使用docker rm 命令来删除容器,加上-f参数就是强制删除容器。

11、网络管理

1、docker的网络原理

在docker安装完成后,宿主机中会创建一个虚拟网桥,通常情况下为docker 0。

网桥工作在OSI七层模型中的数据链路层,在docker中各个容器是通过一个名为docker 0的网桥进行转发流量实现互联的。

一般使用brctl show命令来查看虚拟网桥docker0的信息

root@ubuntu-virtual-machine:/home/ubuntu# brctl show 
bridge name     bridge id               STP enabled     interfaces
docker0         8000.024277a58ad4       no              vethdb861c4

 2、docker的网络模式

网络模式可以在创建容器时使用 --network选项来指定。

docker网络模式一共分为4种,分别是host,container,none,bridge。

host模式:容器不会获得一个独立的Network命名空间,而是和宿主机共用一个Network命名空间。容器将不会虚拟出 自己的网卡、配置自己的IP等,而是使用宿主机的IP和端口。

container模式(容器模式):新创建的容器和已经存在的容器共享一个Network命名空间,和指定容器共用一个IP地址,端口范围 等。

none模式(无模式):docker拥有自己的Network命名空间,但是不为docker配置任何网络,需要我们自己手动添加网络配置。

bridge模式(桥接模式):bridge模式是docker默认的网络模式,此模式会为每一个容器分配一个Network命名空间,并将主机上的 docker容器连接到一个虚拟网桥上。

docker容器的网络互联:

// 创建第一个容器
root@ubuntu-virtual-machine:/home/ubuntu# docker run -d -it centos /bin/bash
394b4650ba5bfeacc9c86217f681b79ef79dcf663f65d3021b2312be1949b628
// 创建第二个容器
root@ubuntu-virtual-machine:/home/ubuntu# docker run -d -it centos /bin/bash
720e4167f96280673f5193f025cb75eaf303b972d7dca4ecc552ef0d5b11abf2
// 查看容器运行状态
root@ubuntu-virtual-machine:/home/ubuntu# docker ps 
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
c521fb7136cc   centos    "/bin/bash"   6 seconds ago    Up 5 seconds              blissful_leakey
720e4167f962   centos    "/bin/bash"   16 seconds ago   Up 15 seconds             youthful_diffie

// 获取容器的IP地址
root@ubuntu-virtual-machine:/home/ubuntu# docker exec c521fb7136cc ip a show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
       
root@ubuntu-virtual-machine:/home/ubuntu# docker exec 720e4167f962 ip a show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
      
// ip地址分别为:172.17.0.4/16;172.17.0.3/16

// 使用icmp协议ping命令查看是否可以通信
root@ubuntu-virtual-machine:/home/ubuntu# docker exec c521fb7136cc ping 172.17.0.4
PING 172.17.0.4 (172.17.0.4) 56(84) bytes of data.
64 bytes from 172.17.0.4: icmp_seq=1 ttl=64 time=0.023 ms
64 bytes from 172.17.0.4: icmp_seq=2 ttl=64 time=0.021 ms
64 bytes from 172.17.0.4: icmp_seq=3 ttl=64 time=0.022 ms

root@ubuntu-virtual-machine:/home/ubuntu# docker exec 720e4167f962 ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.
64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.016 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.022 ms
64 bytes from 172.17.0.3: icmp_seq=3 ttl=64 time=0.021 ms

// 由此可见两容器之间都可以进行通信

// 容器与外部网络的互联通信
root@ubuntu-virtual-machine:/home/ubuntu# docker exec 720e4167f962 ping www.baidu.com 
PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data.
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=127 time=36.2 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=2 ttl=127 time=35.8 ms

12、Docker仓库

1、什么是Docker  Hub?

Docker Hub是Docker提供的一项服务,帮助用户查找和共享容器镜像  

2、Docker Hub的特点?

1、使用pull和push进行上传和拉取镜像。

docker  pull从Docker  Hub中进行拉取镜像到本地机器、创建容器进行使用。

docker push是将本地镜像上传到docker hub仓库,当对本地镜像进行修改之后想要分享给他人使用,可以使用

2、Docker官方镜像:提取并使用Docker提供的高质量容器镜像。  

3、使用Docker Hub

答:1、使用Docker Hub和Docker Desktop进行镜像管理

       2、使用docker login命令进行管理

13、Docker的数据管理

1、什么是数据卷?

数据卷是为一个或多个容器专门指定的目录。

特点:
    1、可以在容器间共享和重用。
    2、数据卷的数据改变可以直接修改
    3、数据的改变不会包括在容器中
    4、数据卷是持续的,直到没有容器使用。

2、如何创建数据卷?

docker提供volume进行管理数据卷

使用docker进行创建数据卷

docker  volume  create -d  local  volume_demo

//  创建一个volume_demo的数据卷

//  存在目录位于/var/lib/docker/volume路径下

使用docker inspect 命令可进行查看详细信息

3、数据卷的分类

在运行容器时可以通过指定-v 或 --mount参数来使用该Volume,并且可以依据数据卷类型不同挂在不同类型的数据卷。

在docker中数据卷分为三类:

volume普通数据卷,Bind绑定数据卷,tmpfs临时数据卷
volume普通数据卷:映射到特定位置:/var/lib/docker/volumes
Bind绑定数据卷:映射到主机的任意位置
tmpfs临时数据卷:只存在于内存中

查看运行的容器和数据卷信息

root@ubuntu-virtual-machine:/home/ubuntu# docker container ls 
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                               NAMES
ef9d2eed6a28   mysql     "docker-entrypoint.s…"   36 minutes ago   Up 36 minutes   3306/tcp, 33060/tcp                 mysqltest
1d65b1b42524   httpd     "httpd-foreground"       3 hours ago      Up 3 hours      0.0.0.0:80->80/tcp, :::80->80/tcp   reverent_fermat

root@ubuntu-virtual-machine:/home/ubuntu# ls -al /var/lib/docker/volumes/

数据迁移

数据卷可以有效的进行数据备份,恢复,和迁移。

14、Docker日志

1、docker  logs

作用:docker  logs主要是用来进行查看日志

docker logs  [options]  container

// 可以通过子命令来查看具体某个容器的日志

docker logs  container  (此时看到的容器日志是静态的)

// 如果想要看到动态的容器日志,加上-f参数即可

docker logs -f container 

docker  logs命令选项

Options:
      --details        显示提供给日志的其他详细信息
  -f, --follow         跟踪日志输出
      --since string   显示给定的时间戳 (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
  -n, --tail string    从日志末尾显示n行的日志
  -t, --timestamps     显示时间戳
      --until string   显示给定的时间戳 (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)

2、logging   driver

docker允许我们从运行的容器中提取日志、这个机制就被称为logging  driver

docker默认的logging  driver文件格式为json-file

快速查看nginx的日志文件路径:

root@node:/home/ubuntu# docker inspect nginx_server | grep -i logpath
        "LogPath": "/var/lib/docker/containers/1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008/1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008-json.log"

root@node:/home/ubuntu# cd /var/lib/docker/containers/1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008/
root@node:/var/lib/docker/containers/1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008# ls 
1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008-json.log  checkpoints  config.v2.json  hostconfig.json  hostname  hosts  mounts  resolv.conf  resolv.conf.hash
root@node:/var/lib/docker/containers/1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008# cat 1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008-json.log 

3、安装ELK日志监控系统

ELK是可以进行搜集、过滤、传输、存储以及实现多系统的组件日志进行集中管理,并且可以帮助运维人员进行线上业务的实时监控,以及业务异常的标准定位。

ELK优点:1、安全性、密钥库和访问控制。

                  2、可以进行管理日志和指标等

                  3、仪表盘和可视化界面

                  4、可以确定在哪里找到其他资源

1、采用docker方式进行部署
docker pull sebp/elk:640     // 下拉sebp/elk、640版本的镜像

2、启动ELK服务
docker run -it --name=elk  -p   5601:5601 -p 9200:9200 -p 5044:5044 -d sebp/elk:640

3、浏览器访问ELK页面
http://192.168.159.131:5601

4、浏览器访问
http://192.168.159.131:9200  (查看API接口是否可用)

相关文章:

Docker运维高级容器技术知识点总结

1、虚拟机部署和容器化部署的区别是什么&#xff1f; 1、技术基础&#xff1a; <1>.虚拟化技术在物理硬件上创建虚拟机&#xff0c;每台虚拟机运行自己完整的操作系统、从而实现资源隔离。 <2>.容器化技术&#xff1a;将应用程序打包在容器内&#xff0c;在进程空间…...

react-quill 富文本组件编写和应用

index.tsx文件 import React, { useRef, useState } from react; import { Modal, Button } from antd; import RichEditor from ./RichEditor;const AnchorTouchHistory: React.FC () > {const editorRef useRef<any>(null);const [isModalVisible, setIsModalVis…...

LabVIEW轴承性能测试系统

本文介绍了基于LabVIEW的高效轴承性能测试系统的设计与开发。系统通过双端驱动技术实现高精度同步控制&#xff0c;针对轴承性能进行全面的测试与分析&#xff0c;以提高轴承的可靠性和寿命。 项目背景 随着工业自动化程度的提高&#xff0c;对轴承的性能要求越来越高。传统的…...

【《游戏编程模式》实战04】状态模式实现敌人AI

目录 1、状态模式 2、使用工具 3、状态模式适用范围 4、实现内容 5、代码及思路 Enemy.cs EnemyState.cs 6、unity里的设置 7、运行效果展示 1、状态模式 “允许一个对象在其内部状态改变时改变自身的行为。对象看起来好像是在修改自身类。” 就是一个对象能随着自己…...

借助免费GIS工具箱轻松实现las点云格式到3dtiles格式的转换

在当今数字化浪潮下&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术日新月异&#xff0c;广泛渗透到城市规划、地质勘探、文化遗产保护等诸多领域。而 GISBox 作为一款功能强大且易用的 GIS 工具箱&#xff0c;以轻量级、免费使用、操作便捷等诸多优势&#xff0c;为…...

科研绘图系列:R语言科研绘图之标记热图(heatmap)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图系统信息参考介绍 科研绘图系列:R语言科研绘图之标记热图(heatmap) 加载R包 library(tidyverse) library(ggplot2) library(reshape)…...

【轻松学C:编程小白的大冒险】--- C语言简介 02

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【轻松学C&#xff1a;编程小白的大冒险】…...

《HeadFirst设计模式》笔记(上)

设计模式的目录&#xff1a; 1 设计模式介绍 要不断去学习如何利用其它开发人员的智慧与经验。学习前人的正统思想。 我们认为《Head First》的读者是一位学习者。 一些Head First的学习原则&#xff1a; 使其可视化将文字放在相关图形内部或附近&#xff0c;而不是放在底部…...

数据结构:ArrayList与顺序表

目录 &#x1f4d6;一、什么是List &#x1f4d6;二、线性表 &#x1f4d6;三、顺序表 &#x1f42c;1、display()方法 &#x1f42c;2、add(int data)方法 &#x1f42c;3、add(int pos, int data)方法 &#x1f42c;4、contains(int toFind)方法 &#x1f42c;5、inde…...

SpringBoot之核心配置

学习目标&#xff1a; 1.熟悉Spring Boot全局配置文件的使用 2.掌握Spring Boot配置文件属性值注入 3.熟悉Spring Boot自定义配置 4.掌握Profile多环境配置 5.了解随机值设置以及参数间引用 1.全局配置文件 Spring Boot使用 application.properties 或者application.yaml 的文…...

EasyExcel上传校验文件错误信息放到文件里以Base64 返回给前端

产品需求&#xff1a; 前端上传个csv 或 excel 文件&#xff0c;文件共4列&#xff0c;验证文件大小&#xff0c;类型&#xff0c;文件名长度&#xff0c;文件内容&#xff0c;如果某行某个单元格数据验证不通过&#xff0c;就把错误信息放到这行第五列&#xff0c;然后把带有…...

单片机软件定时器V4.0

单片机软件定时器V4.0 用于单片机定时执行任务等&#xff0c;比如LED GPIO等定时控制&#xff0c;内置前后台工作模式 头文件有使用例子 #ifndef __SORFTIME_APP_H #define __SORFTIME_APP_H#ifdef __cplusplus extern "C" { #endif#include <stdint.h>// #…...

超完整Docker学习记录,Docker常用命令详解

前言 关于国内拉取不到docker镜像的问题&#xff0c;可以利用Github Action将需要的镜像转存到阿里云私有仓库&#xff0c;然后再通过阿里云私有仓库去拉取就可以了。 参考项目地址&#xff1a;使用Github Action将国外的Docker镜像转存到阿里云私有仓库 一、Docker简介 Do…...

C++ 入门第26天:文件与流操作基础

往期回顾&#xff1a; C 入门第23天&#xff1a;Lambda 表达式与标准库算法入门-CSDN博客 C 入门第24天&#xff1a;C11 多线程基础-CSDN博客 C 入门第25天&#xff1a;线程池&#xff08;Thread Pool&#xff09;基础-CSDN博客 C 入门第26天&#xff1a;文件与流操作基础 前言…...

使用python将多个Excel表合并成一个表

import pandas as pd# 定义要合并的Excel文件路径和名称 file_paths [file1.xlsx, file2.xlsx, file3.xlsx, file4.xlsx, file5.xlsx]# 创建一个空的DataFrame来存储合并后的数据 merged_data pd.DataFrame()# 循环遍历每个Excel文件&#xff0c;并读取其中的数据 for file_p…...

halcon三维点云数据处理(七)find_shape_model_3d_recompute_score

目录 一、find_shape_model_3d_recompute_score例程代码二、set_object_model_3d_attrib_mod函数三、prepare_object_model_3d 函数四、create_cube_shape_model_3d函数五、获得CamPose六、project_cube_image函数七、find_shape_model_3d函数八、project_shape_model_3d函数 一…...

vue js实现时钟以及刻度效果

2025.01.08今天我学习如何用js实现时钟样式&#xff0c;效果如下&#xff1a; 一、html代码如下&#xff1a; <template><!--圆圈--><div class"notice_border"><div class"notice_position notice_name_class" v-for"item in …...

unity学习15:预制体prefab

目录 1 创建多个gameobject 2 创建prefab 2.1 创建prefab &#xff08;类&#xff09; 2.2 prefab 是一个文件 2.3 prefab可以导出 3 创建prefab variant &#xff08;子类&#xff09; 3.1 除了创建多个独立的prefab&#xff0c; 还可以创建 prefab variant 3.2 他…...

基于Thinkphp6+uniapp的陪玩陪聊软件开发方案分析

使用uni-app框架进行前端开发。uni-app是一个使用Vue.js开发所有前端应用的框架&#xff0c;支持一次编写&#xff0c;多端发布&#xff0c;包括APP、小程序、H5等。 使用Thinkphp6框架进行后端开发。Thinkphp6是一个轻量级、高性能、面向对象的PHP开发框架&#xff0c;具有易…...

MySQL - 子查询和相关子查询详解

在SQL中&#xff0c;子查询&#xff08;Subquery&#xff09;和相关子查询&#xff08;Correlated Subquery&#xff09;是非常强大且灵活的工具&#xff0c;可以用于执行复杂的数据检索和操作。它们允许我们在一个查询中嵌套另一个查询&#xff0c;从而实现更复杂的逻辑和条件…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...