Docker 基本管理

Docker 基本管理

  • 一:Docker 概述
    • 1.容器化越来越受欢迎,因为容器是:
    • 2.Docker与虚拟机的区别:
    • 3.Docker核心概念:
  • 二:安装 Docker
    • 1.安装依赖包
    • 2.设置阿里云镜像源
    • 3.安装 Docker-CE并设置为开机自动启动
    • 4.查看 docker 版本信息
    • 5.docker 信息查看
  • 三:Docker 镜像操作
    • 1.搜索镜像
    • 2.获取镜像
    • 3.镜像加速下载
    • 4.查看镜像信息
    • 5.根据镜像的唯一标识 ID 号,获取镜像详细信息
    • 6.为本地的镜像添加新的标签
    • 7.`docker rmi`删除镜像
      • 7.1区别于 `docker rm` 命令**删除容器**
    • 8.存出镜像:将镜像保存成为本地文件
    • 9.上传镜像
  • 四:Docker 容器操作
    • 1.容器创建:就是将镜像加载到容器的过程。
    • 2.查看容器的运行状态
    • 3.启动容器
    • 4.docker run创建并启动容器
      • 当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:
    • 5.在后台持续运行 docker run 创建的容器
    • 6.终止容器运行
    • 7.容器的进入
    • 8.复制到容器中(保持容器up状态)
    • 9.从容器复制文件到主机(保持容器up状态)
    • 10.容器的导出与导入
      • 10.1.导出格式:docker export 容器ID/名称 > 文件名
      • 10.2.导入格式:cat 文件名 | docker import – 镜像名称:标签
    • 11.删除容器

一:Docker 概述

Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。

Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,
即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

1.容器化越来越受欢迎,因为容器是:

●灵活:即使是最复杂的应用也可以集装箱化。
●轻量级:容器利用并共享主机内核。
●可互换:可以即时部署更新和升级。
●便携式:可以在本地构建,部署到云,并在任何地方运行。
●可扩展:可以增加并自动分发容器副本。
●可堆叠:可以垂直和即时堆叠服务。

容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

2.Docker与虚拟机的区别:

特性Docker容器虚拟机
启动速度秒级分钟级
计算能力损耗容器相当于宿主机的进程,性能几乎没有损耗需要hypervisor虚拟机管理程序对宿主机资源虚拟访问,至少有20~50%资源损耗
性能接近原生弱于
系统支持量(单机)上千个几十个
隔离性资源隔离/限制完全隔离
内核所有容器共享宿主机内核每个虚拟机都有独立的操作系统和内核
隔离性使用namespace隔离资源,使用cgroup限制资源的最大使用量完全隔离,每个虚拟机都有独立的硬件资源
容量单机容量能够支持成百上千个容器单机容量只能支持最多几个虚拟机

容器在内核中支持2种重要技术:
docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g,只有当需要修改时才复制一份数据)。

3.Docker核心概念:

  • 镜像
    Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。
    通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
    Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。

  • 容器
    Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。
    可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

  • 仓库
    Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。

Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker

二:安装 Docker

目前 Docker 只能支持 64 位系统。

systemctl stop firewalld.service
setenforce 0

1.安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2 

yum-utils:提供了 yum-config-manager 工具。
device mapper:是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

2.设置阿里云镜像源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

3.安装 Docker-CE并设置为开机自动启动

yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker.service
systemctl enable docker.service 

安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。

4.查看 docker 版本信息

docker version

在这里插入图片描述

5.docker 信息查看

docker info

在这里插入图片描述

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)

Server:
 Containers: 0						# 容器数量
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 1							# 镜像数量
 Server Version: 24.0.4		# server 版本
 Storage Driver: overlay2			# docker 使用的是 overlay2 文件驱动
  Backing Filesystem: xfs			# 宿主机上的底层文件系统
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs			# Cgroups 驱动
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc version: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-693.el7.x86_64		# 宿主机的相关信息
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 976.3MiB
 Name: localhost.localdomain
 ID: Y4ES:FTH2:ZJL7:MRVE:RJVB:WJIB:S7BV:C5IZ:LMBR:E4G5:QWSM:SNDT
 Docker Root Dir: /var/lib/docker			# docker 数据存储目录
 Debug Mode: false
 Registry: https://index.docker.io/v1/		# registry 地址
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
  Registry Mirrors:							# 加速站点
  https://加速站点的IP地址/   #加速站点一开始是没有的,需要自行设置镜像加速,详情见下文
 Live Restore Enabled: false

三:Docker 镜像操作

1.搜索镜像

格式:docker search 关键字

docker search nginx

在这里插入图片描述

2.获取镜像

格式:docker pull 仓库名称[:标签]
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。

docker pull nginx

在这里插入图片描述

3.镜像加速下载

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置
在这里插入图片描述

mkdir -p /etc/docker #事先看下有没有,docker一般都自己建了
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["加速器的IP地址"]
}
EOF
systemctl daemon-reload
systemctl restart docker
docker info #查看下加速地址

在这里插入图片描述

4.查看镜像信息

镜像下载后存放在 /var/lib/docker
Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。

#查看下载的镜像文件信息

cat /var/lib/docker/image/overlay2/repositories.json

#查看下载到本地的所有镜像

docker images

在这里插入图片描述
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 021283c8eb95 2 weeks ago 187MB

REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;

5.根据镜像的唯一标识 ID 号,获取镜像详细信息

格式:docker inspect 镜像ID号

docker inspect ae2feff98a0c

在这里插入图片描述

  • lowerdir是镜像层,目录或者文件是只读的,其实就是rootfs,image layer可以分很多层,所以对应的lowerdir是可以有多个目录
  • upperdir是在lowerdir之上的容器层,这层是可读可写的,在启动一个容器时候会进行创建,所有的对容器数据更改都发生在这里层
  • MergedDir是表现层,是容器的挂载点
    在这里插入图片描述

6.为本地的镜像添加新的标签

格式:docker tag 名称:[标签] 新名称:[新标签]

docker tag nginx:latest nginx:web

docker images | grep nginx

在这里插入图片描述

7.docker rmi删除镜像

格式:docker rmi
docker rmi -f 强制删除

docker rmi 仓库名称:标签
			#当一个镜像有多个标签时,只是删除其中指定的标签

或者

docker rmi 镜像ID号
					#会彻底删除该镜像

注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

docker rmi nginx:web

docker rmi 021283c8eb95

在这里插入图片描述

7.1区别于 docker rm 命令删除容器

docker rm删除一个或多个容器。

-f : 通过 SIGKILL 信号强制删除一个运行中的容器。

-l : 移除容器间的网络连接,而非容器本身。

-v : 删除与容器关联的卷。

8.存出镜像:将镜像保存成为本地文件

格式:docker save -o 存储文件名 存储的镜像

docker save -o nginx nginx:latest			#存出镜像命名为nginx存在当前目录下
ls -lh

在这里插入图片描述

#载入镜像:将镜像文件导入到镜像库中
格式:

docker load < 存出的文件 或者 docker load -i 存出的文件

docker load < nginx
或
docker load -i nginx

在这里插入图片描述

9.上传镜像

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在这里插入图片描述

在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。
在linux系统输入

docker tag nginx:latest jhaiyang/nginx:web	
#添加新的标签时必须在前面加上自己的dockerhub的username
docker login								#登录公共仓库
Username:jhaiyang
password:保密
docker push jhaiyang/nginx:web					#上传镜像

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

四:Docker 容器操作

1.容器创建:就是将镜像加载到容器的过程。

新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。

格式:docker create [选项] 镜像

常用选项含义
-i让容器开启标准输入接受用户输入命令
-t让 Docker 分配一个伪终端 tty
-it合起来实现和容器交互的作用,运行一个交互式会话 shell
docker create -it nginx:latest /bin/bash

2.查看容器的运行状态

docker ps -a #-a 选项可以显示所有的容器,不加-a只显示运行的容器

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
423a9c28cca9 nginx:latest “/docker-entrypoint.…” 9 seconds ago Created elegant_northcutt

容器的ID号 加载的镜像 运行的程序 创建时间 当前的状态 端口映射 名称

在这里插入图片描述

3.启动容器

格式:docker start 容器的ID/名称

docker start 423a9c28cca9
docker ps -a

在这里插入图片描述

4.docker run创建并启动容器

可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令。
注意:容器是一个与其中运行的 shell 命令/进程共存亡的终端,命令/进程运行容器运行, 命令/进程结束容器退出。

docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。

当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:

(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
(2)利用镜像创建并启动一个容器;
(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
(5)分配一个地址池中的 IP 地址给容器;
(6)执行用户指定的应用程序,执行完毕后容器被终止运行。

docker run centos:7 /usr/bin/bash -c ls /  #没有centos:7就去pull一个
docker ps -a					#会发现创建了一个新容器并启动执行一条 shell 命令,之后就停止了

在这里插入图片描述

5.在后台持续运行 docker run 创建的容器

需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。

docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"

docker ps -a					#可以看出容器始终处于 UP,运行状态

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0680f68361e0 centos:7 “/usr/bin/bash -c 'w…” 4 seconds ago Up 4 seconds objective_bassi

在这里插入图片描述

docker run -itd --name test1 centos:7 /bin/bash   #创建容器并持续运行容器

在这里插入图片描述

6.终止容器运行

格式:docker stop 容器的ID/名称

docker stop 2370520d9434

docker ps -a

在这里插入图片描述

7.容器的进入

需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。

格式:docker exec -it 容器ID/名称 /bin/bash

-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。

docker start 2370520d9434					#进入容器前,确保容器正在运行
docker exec -it 2370520d9434 /bin/bash    #使用bin/bash环境进入
ls
exit				#退出容器后,容器仍在运行
docker ps -a

在这里插入图片描述

docker run -it centos:7 bash #不加 -d 选项会创建容器后直接进入容器进行交互,但是退出容器,容器也会停止
在这里插入图片描述

8.复制到容器中(保持容器up状态)

echo abc123 > ~/test.txt
docker cp ~/test.txt 2370520d9434:/opt/

在这里插入图片描述

9.从容器复制文件到主机(保持容器up状态)

docker cp 2370520d9434:/opt/test.txt ~/abc123.txt

在这里插入图片描述

10.容器的导出与导入

用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为容器快照文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。

10.1.导出格式:docker export 容器ID/名称 > 文件名

docker export 2370520d9434 > centos7.tar
或·
docker export -o centos7.tar1 2370520d9434

在这里插入图片描述

10.2.导入格式:cat 文件名 | docker import – 镜像名称:标签

cat centos7.tar | docker import - centos7:test			#导入后会生成镜像,但不会创建容器docker import centos7.tar -- centos7:test3

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

11.删除容器

格式:docker rm [-f] 容器ID/名称

docker stop 0d094b7da484
docker rm 0d094b7da484				#删除已经终止状态的容器

在这里插入图片描述

docker rm -f 423a9c28cca9 			#强制删除正在运行的容器

在这里插入图片描述

批量停止容器

docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash			#批量停止容器docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop

在这里插入图片描述

批量开启容器

docker ps -a | awk 'NR>=2{print "docker start "$1}' | bash			#批量开启容器docker ps -a | awk 'NR>=2{print $1}'| xargs docker start

在这里插入图片描述

批量删除所有容器

docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash				#批量删除所有容器docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm

在这里插入图片描述

批量删除镜像

docker images | awk 'NR>=2{print "docker rmi "$3}' | bash			#批量删除镜像

删除none镜像

docker images | grep none | awk '{print $3}' | xargs docker rmi		#删除none镜像

批量清理后台停止的容器

docker rm $(docker ps -a -q)		#批量清理后台停止的容器

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

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

相关文章

Storage、正则表达式

1 LocalStorage 2 SessionStorage 3 正则表达式的使用 4 正则表达式常见规则 5 正则练习-歌词解析 6 正则练习-日期格式化 Storage-Storage的基本操作 // storage基本使用// 1.token的操作let token localStorage.getItem("token")if (!token) {console.log(&q…

SpringBoot读取配置的6种方式

1. 概述 通过了解springboot加载配置&#xff0c;可以更方便地封装自定义Starter。 在SpringBoot中&#xff0c;可以使用以下6种方式读取 yml、properties配置&#xff1a; 使用Value注解&#xff1a;读取springboot全局配置文件单个配置。使用Environment接口&#xff1a;通过…

J-Flash烧录工具如何添加新的芯片类型

0 Preface/Foreword 1 添加方法 1.1 修改JLinkDevices.xm <!-- --> <!-- CMS --> <!-- --> <Device> <ChipInfo Vendor"CMS32" Name"CMS32L051" Core"JLINK_CORE_CORTEX_…

每天一点Python——day58

#第五十八天 集合间的关系&#xff1a; 类似于数学中学到的集合一样&#xff0c;关系差不多&#xff0c;譬如相等&#xff0c;子集&#xff0c;交集 如图所示&#xff1a;#①两个集合是否相等&#xff1a;运用运算符【等号】或者运算符&#xff01;【不等号】进行判断 #例&…

企业电子招标采购系统源码Spring Cloud + Spring Boot + MybatisPlus + 前后端分离 + 二次开发

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及审…

3Ds max入门教程:快捷键命令和鼠标热键大全

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 起初&#xff0c;您可能需要花一些时间查找热键&#xff0c;但是一旦您使用它们记住了它们&#xff0c;它们将使您以至少两倍的速度产生结果。例如&#xff0c;当您进行建模&#xff08;移动、缩放、旋转等…

allure环境搭建

allure环境搭建 在搭建之前你应该有python、pycharm allure介绍 官网&#xff1a;https://docs.qameta.io/allure/ 英文介绍 Allure Framework is a flexible lightweight multi-language test report tool that not only shows a very concise representation of what have…

青岛大学_王卓老师【数据结构与算法】Week05_13_队列的顺序表示和实现1_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c; 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础…

Mysql教程(一):Mysql数据模型和SQL语法分析

Mysql教程&#xff08;一&#xff09;&#xff1a;Mysql数据模型和SQL语法分析 1、Mysql数据模型 1.1 关系型数据库&#xff08;RDBMS&#xff09; 概念&#xff1a;建立在关系模型基础上&#xff0c;由多张相互连接的二维表组成的数据库。 特点&#xff1a; 使用表存储数…

XR应用云流化,多方面提升 XR 扩展现实体验!

无论是使用户能够协作设计电动赛车&#xff0c;还是帮助观众通过数字世界与自然互动&#xff0c;越来越多的企业利用XR扩展现实为用户提供沉浸式逼真的虚拟环境。 下一代沉浸式技术的应用越来越广泛&#xff0c;图形和人工智能的最新突破正在扩展XR的功能。这四种技术正在XR生态…

蓝桥杯真题:密码脱落(区间dp)

目录 题目&#xff1a; 解题思路&#xff1a; dp分析&#xff1a; 解题代码&#xff1a; 题目&#xff1a; 解题思路&#xff1a; 题目要求的为脱落的种子数&#xff08;即回文字符中没有对应回文的字符的数量&#xff09; 我们可以转换成求回文字符串最长回文字符串的长…

02.MySQL——CURD

文章目录 表的增删改查Create单行数据全列插入多行数据指定列插入插入否则更新替换——REPLACE RetrieveSELECT 列WHERE 条件结果排序筛选分页结果 UpdateDelete删除数据截断表 插入查询结果聚合函数group bywhere和having SQL查询中关键字优先级函数日期函数字符串函数数学函数…

SpringBoot 统一功能的处理

SpringBoot 统一功能的处理 文章目录 SpringBoot 统一功能的处理1. 用户登录权限校验1.1 最初用户登录验证1.2 Spring AOP 统一用户登录验证的问题1.3 SpringAOP 拦截器1.3.1 实现自定义拦截器1.3.2 将自定义拦截器加入到系统配置 1.4 拦截器实现原理1.4.1 实现流程图1.4.2 实现…

快速批量改名文件!随机字母命名,让文件名更有创意!

想要让文件名更加有创意和个性化吗&#xff1f;不妨尝试使用随机字母来批量改名文件&#xff01;无论是照片、文档还是其他文件&#xff0c;只需要简单的几个步骤&#xff0c;您就可以为它们赋予一个独特的随机字母命名。这不仅可以帮助您整理文件&#xff0c;还能增加一些乐趣…

微信原生实现一个简易的图片上传功能

一、实现原理 wx.showActionSheet()&#xff1a;显示操作菜单&#xff0c;选择是从相册选择还是相机拍摄照片wx.chooseImage()&#xff1a;从本地相册选择图片或使用相机拍照。wx.uploadFile()&#xff1a;将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求&#xff0c…

【微信小程序-uniapp】CustomDialog 居中弹窗组件

1. 效果图 2. 组件完整代码 <template><uni-popup :ref="ref" type="center" @change

编程小白的自学笔记十(python爬虫入门二+实例代码详解)

系列文章目录 编程小白的自学笔记九&#xff08;python爬虫入门代码详解&#xff09; 编程小白的自学笔记八&#xff08;python中的多线程&#xff09; 编程小白的自学笔记七&#xff08;python中类的继承&#xff09; 编程小白的自学笔记六&#xff08;python中类的静态方法…

一、音频基础-音频分析的重要工具(语谱图)

文章目录 1. 傅里叶转换2. 语谱图3. 应用1. 傅里叶转换 通过前面的描述可以知道,声音的本质就是各种声波,那么任意某一个时刻,都不可能是只有一个频率的波,而且声波也不可能是我们理解的标准的正弦波: 而一般我们对声音进行处理时,需要分析出频率当中的有哪些频率,然…

VScode 右键菜单加入使用用VSCode打开文件和文件夹【Windows】

VScode 右键菜单加入使用用VSCode打开文件和文件夹【Windows】 介绍修改注册表添加右键打开文件属性修改注册表添加右键打开文件夹属性修改注册表添加右键空白区域属性 介绍 鼠标右击文件或者文件夹&#xff0c;可直接用VSCode打开&#xff0c;非常方便。但如果我们在安装VSCo…