docker 容器的基本使用
docker 容器
一、docker是什么?
软件的打包技术,就是将算乱的多个文件打包为一个整体,打包技术在没有docker容器之前,一直是有这种需求的,比如上节课我把我安装的虚拟机给你们打包了,前面的这种打包方式是将整个虚拟机打包了,对吧,样打包出来的体积太大了,而且如果你只是单纯的想要一个安装好的程序,比如sqlserver数据库,不想自己安装,就想要个安装好的,按照之前的打包方式,太费事费力的,你打包个安装了sqlserver数据库的虚拟机,光虚拟机本身的操作系统可能就占用了20个G,sqlserver本身可能也就1个G,这是不是就太不合适了,当然我们自己不会或者不想安装sqlserver的时候,可以选择找个哥们帮你安装一下,但是如果100个人都找你安装,你是不是累死了,所以在这种情况,容器技术就诞生了,容器技术中的佼佼者,就是docker,它的底层实现原理我们现在不用纠结。用它来打包出来的软件,体积会非常小。比如如果在一个虚拟机上安装了nginx,那么这个虚拟机怎么也要1G以上,但是用docker打包的已经安装好的nginx,可能也就100M左右,体积小很多。接下来我们感受一下docker的使用。后面我们可以将很多部署起来很繁琐的靶场环境都通过docker来打包。所以现在网上也有很多使用docker跑起来的靶场,复用性非常好,别人打包好的,你直接拿来就用。而且docker有个东西叫做仓库,打包的东西直接放在仓库里面,全世界都可以共享。docker是2013年诞生的。
docker打包出来的每个软件,称之为docker镜像。可以说整个IT领域,不管是哪个工种,都需要好好学习docker。
docker是CS架构的程序,客户端控制服务端来做各种事情。
概念
镜像:images,是个压缩包文件,里面存放着安装好的程序。
容器:Container,Docker利用容器来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停
止、删除。每个容器都是相互隔离的、保证安全的平台。
二、docker的安装
docker对windows系统支持不是很好,主要是运行在linux上的,所以我们需要一个linux系统的主机来玩。
centos7安装docker
# centos7上面用yum安装
yum install docker -y
#启动docker
systemctl start docker
#设置开机自启
systemctl enable docker#体验docker版nginx最新版
docker run -d -p 80:80 nginx
#体验docker版nginx 1.16
docker run -d -p 81:80 nginx:1.16#体验wordpress
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -d --link mysql:mysql -p 86:80 wordpress:5.6
kali安装docker
#添加docker的gpg密钥,签名用的
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -#添加docker的apt源
echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list#更新apt缓存
apt update#安装docker
sudo apt-get install docker.io#安装docker docker-compose
sudo apt-get install docker docker-compose -y#安装完成之后,docker就自动启动了
systemctl status docker#查看docker版本
docker -v#查看docker-compose版本
docker-compose -v
centos用yum安装,kali上面用apt安装,kali属于debian系列的操作系统。
安装好docker之后,后面不管是centos还是kali,后续docker的操作指令都是一样的。
网络安全有一项工作叫做漏洞复现,有些软件、框架、webserver等等他们某些版本会有各种漏洞,官方看到之后肯定会修复升级,但是某个使用了这些软件的公司可能并没有升级,那么就需要我们检测一下是否真的存在这个漏洞,不能直接再生产环境上去测试,需要在测试环境或者开发环境或者自己搭建的环境中进行漏洞测试,这就是漏洞复现的工作。所以我们好多时候都需要自己来搭建相同版本的软件
环境来进行漏洞复现,搭建的环境的时候我们就可以使用docker,很方便。
很多软件的官网都会有漏洞声明,比如nginx:https://nginx.org/en/security_advisories.html
可以看到某些漏洞影响的版本的,进行漏洞复现就需要安装特定版本的软件.
体验一下docker下载安装运行nginx镜像
#体验docker版nginx最新版,本地没有nginx镜像的话,会自动去仓库中拉去镜像并运行
docker run -d -p 80:80 nginx
#体验docker版的特定版本的nginx 1.16
docker run -d -p 81:80 nginx:1.16
#docker run -d -p 82:80 nginx:1.18#直接浏览器访问:http://192.168.2.121/ 就能看到nginx首页了。在响应数据中就能看到nginx的版本
#是不是感受到了安装不同版本nginx的便利之处了,如果不是用docker,你想去安装一些特定的老版本还是比较麻烦的,好多时候只能编译安装#体验wordpress,需要启动两个docker镜像,一个数据库的,一个代码程序,这个比较大,所以速度可能会慢一些
# 5.7版本的MySQL,镜像名称是mysql
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 # 5.6版本的wordpress,最新版本应该已经到了6.x了,但是值得说明的一点就是封装wordpress的人为了将镜像做的比较小,没有安装中文包,所以只能是看英文的了,他会自动连接数据库。如果你发现你安装的镜像不是你要的版本,那么可能是版本指定错误了,或者是官方镜像仓库中的wordpress镜像版本有点问题了。
docker run -d --link mysql:mysql -p 86:80 wordpress:5.6 # 可以更改docker镜像库的源
cd /etc/docker
vim docker.json
# 添加如下内容,并保存退出
{"registry-mirrors": ["https://registry.docker-cn.com"]
}
# 可以重启docker服务
systemctl restart docker
systemctl start docker
systemctl enable docker
systemctl stop docker#Docker中国区官方镜像
https://registry.docker-cn.com
#阿里云容器,不过这个好像不更新了,大家可以去阿里官方关注一下
https://cr.console.aliyun.com/
虚拟机搞环境,需要安装、手动开机、手动运行软件。
docker run首先检测你本地是否已经有了软件镜像,如果没有,他会自动去下载镜像,然后运行,运行起来的镜像,我们称之为容器,可以理解为每个软件都安装在了一个自己的小空间里面。
docker 镜像 容器
镜像–>安装了某些特定程序的文件 -->压缩文件
容器–>镜像运行起来之后,就叫做容器。
三、镜像常用命令
docker search#搜索镜像(只搜索官方仓库的,官方仓库地址:hub.docker.com)# docker search tomcat# docker search apache# 我们拉取的镜像tomcat\apache等名字很短对吧,这都是官方仓库中的官方镜像,官方仓库中支持用户上传自己封装的镜像,用户镜像和官方镜像的差别在名字上面,比如我们可以去docker官方去注册一个账号,用户自己的镜像前面都会有作者的用户名或者用户所在组织的名字,比如jaden/nginx、jaden/tomcat等。docker images#查看本地镜像列表,image就是图像、镜像的意思# 本地有的镜像,就不要再去下载了,而且可以将本地镜像导出来分享给别人docker pull#下载镜像,拉取镜像# docker pull tomcat:latest# docker imagesdocker push#上传镜像,推送镜像,推到官方仓库,推送不是那么简单的,不然早就满了,需要在本地登录一下官方账号才能推,后面再演示docker rmi#删除镜像,rm image的意思,直接rm不加i表示要删除容器,可以通过名称加版本来删除,或者直接通过镜像id值来删除#docker rmi tomcat:latest 或者 docker rmi imageid值#可以同时删除多个镜像:docker rmi tomcat:latest tomcat:jre17-temurin-jammy#如果这个镜像处于运行状态的是删除不了的,比如有容器在使用这个镜像,就不能删除镜像,比如docker rmi nginx:1.16会报错#查看镜像的运行状态docker container ls,其实这是查看容器的状态,但是可以看到哪些镜像被使用了docker save#导出镜像(压缩包) docker save 镜像名称:版本 -o docker_nginx1.20.tar.gz#docker save nginx:1.16 -o docker.nginx1.16.tar.gz#ls 就看到了 docker.nginx1.16.tar.gz
docker load#导入镜像 docker load -i docker_nginx1.20.tar.gz,会自动解压并导入到docker服务中#从容器复制文件到宿主机
docker cp my_container:/path/in/container /path/on/host#从宿主机复制文件到容器
docker cp arl.txt my_container:/path/in/container
四、容器的常用命令
#docker 常见命令
docker run 运行一个新容器
docker ps === docker container ls #参数: 默认之显示up状态的容器,-a查看所有容器,或者--all
docker stop 停止容器 #例子 docker stop 容器id或者容器名字
docker kill 杀掉容器 #强制关闭容器,尽量不要用,很容易就启动不了了
docker start 启动容器 #例子 docker start 容器id或者容器名字
docker restart 重启重启 #例子 docker restart 容器id或者容器名字
docker rm 删除容器 #例子 docker rm 容器id或者容器名字,同时删除多个,就空格隔开,处于up状态是不能直接删除的,强制删除是可以删除up状态的容器的,docker rm f 容器名称或者iddocker rm -f `docker ps -a -q` #删除所有容器,-q是只显示容器id,反引号中的指令优先执行docker top 查看容器内的进程 #例子docker top 容器id或者容器名字
docker stats 查看容器的资源占用情况
docker exec 进入容器 #例子: docker exec -it 容器id或者容器名字# 直接交互指令:docker exec -it 76738703b7b2 ls # 执行ls指令
# 进入终端:docker exec -it 76738703b7b2 /bin/bash 或者/bin/sh #/bin/bash打开一个终端窗口,exit指令退出终端,但是docker容器内容一般不会安装额外的软件,所以导致大量的指令是用不了的,比如ifconfig、ps、ip addr等docker inspect -f '{{.Name}} => {{.NetworkSettings.IPAddress }}' $(docker ps -
aq) #可以查看所有容器的ip地址的,容器的ip地址是从`172.17.0.1`开始分的。docker容器类似于一个微型的虚拟机,它占用的都是宿主机(物理机)的资源。在物理机上是可以看到容器所运行的程序的。每个容器都有自己的ip地址。docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) | grep "容器名称或者id"# curl -I 加网址,可以看到http响应数据
┌──(root㉿kali)-[/home/]
└─# curl -I http://172.17.0.4
HTTP/1.1 200 OK
Server: nginx/1.23.4#netstat -lntup可以看到给docker的端口映射
# docker run -d -p 80:80 nginx #-p 80:80,端口映射,表示宿主机的80端口映射到了nginx容器的80端口。
网络结构:
docker run参数,有很多参数,最后一个肯定是镜像
-d #放后台运行
-p 端口映射 #例子: -p 宿主机端口:容器端口
--name 指定容器的名字 # docker run -it --name jaden 镜像id或者名称
--link 关联另一个容器 # 了解即可
-e MYSQL_ROOT_PASSWORD #设置容器的一些属性,了解一下即可
-it #是给运行起来的这个容器分配一个终端,就可以进入到容器内部操作了
# 后面想部署什么,直接网上搜索即可。
五、制作docker镜像并上传
学习了怎么下载,你就知道官方的镜像是怎么来的。
docker pull debian:latest
docker run -it --name weicoll_nginx -p 90:80 debian:latest
# 进入容器
docker exec -it weicoll_debian /bin/bash
# 安装nginx
apt update # 更新apt缓存
apt install nginx -y # 安装nginx
nginx -v # 查看nginx版本,安装好了
# ip addr
# apt install procps # 安装ps指令
# ps -ef
nginx #启动nginx,systemctl是没有的,没有安装这个指令
exit
# 打包之前做好先停止容器
docker stop jaden_debian
docker commit jaden_nginx syrjaden/debian_nginx:v1 # 根据名字或者id都可以提交,后面加个镜像名称和版本,syrjaden是docker仓库用户名#上传到官方仓库
docker login #登录官方仓库
#docker tag debian_nginx:v2 syrjaden/debian_nginx:v2 # 这是改名字,如果名称不冲突就不用改名字
docker push syrjaden/debian_nginx:v2 # 直接push即可
六、docker-compose
docker-compose是批量管理docker容器的工具
比如前面我们启动的wordpress项目,需要启动两个容器才行,有时候就是这样,需要同时启动多个容器来完成你想要做的事情,但是到底启动多少个容器呢?比如wordpress那个,我们记不住,换一个机器不看笔记很难起来,有了docker-compose就可以解决这个问题了。
#centos7安装docker-compose,我们前面已经安装了,不需要再次安装了
yum install epel-release.noarch -y
yum install docker-compose -y#kali安装docker-compose
apt install docker-compose -y# 查看版本
docker-compose -v
这里给大家补充个点 systemctl restart docker 重启docker服务会自动关闭所有的容器。
#启动容器的时候,如果加上了--restart=always,那么重启服务之后,这个容器会自动启动
docker run -it -d --restart=always nginx:1.16 # 实现了开机自启动的效果
配置文件docker-compose.yml,有了这个配置文件,就可以通过docker-compose来控制多个容器了
# 为了避免端口冲突,我们可以先关闭所有docker容器
docker stop `docker ps -a -q`# 为了演示方便,我们可以先创建一个wordpress文件夹,进入到里面创建一个docker-compose.yml名字的文件
mkdir wordpresscd wordpress/
touch docker-compose.yml
vim docker-compose.yml# 将如下内容拷贝到文件中保存退出,注意拷贝的时候,把里面我标记的注释去掉。# 注意,下面这个文件内容是严格要求格式的,多一个空格都不行,通过缩进来表示等级关系,下面的这种配置语法叫做yaml语法
version: '3' # docker-compose.yml的文件格式版本
services:db: #容器名称image: mysql:5.7restart: always # 开机自启动的意思environment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: 123456 # 和下面的WORDPRESS_DB_PASSWORD值要对应上wordpress:depends_on:- dbimage: wordpress:5.6ports:- "83:80" # 端口映射restart: alwaysenvironment:WORDPRESS_DB_HOST: dbWORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: 123456
常用docker-compose命令
创建并启动
docker-compose up -d # 启动之后就可以通过浏览器访问了
#停止并删除
docker-compose down
#重启
docker-compose restart
#停止
docker-compose stop
#启动
docker-compose start
#查看启动环境
docker-compose ps -a
七、docker-compose启动靶场环境
https://vulhub.org/#/environments/
vulhub部署文章以及拉去镜像失败解决的方法https://blog.csdn.net/qq_22701869/article/details/138545663
https://blog.csdn.net/qq_22701869/article/details/138545663
相关文章:

docker 容器的基本使用
docker 容器 一、docker是什么? 软件的打包技术,就是将算乱的多个文件打包为一个整体,打包技术在没有docker容器之前,一直是有这种需求的,比如上节课我把我安装的虚拟机给你们打包了,前面的这种打包方式是…...

css让按钮放在最右侧
要将 el-button 按钮放在最右侧,可以使用多种方法,具体取决于使用的布局方式和样式库。以下是几种常见的解决方案: 方法 1:使用 CSS Flexbox Flexbox 是一种非常灵活的布局方式,可以轻松实现水平或垂直对齐。你可以将…...

8K+Red+Raw+ProRes422分享5个影视级视频素材网站
Hello,大家好,我是后期圈! 在视频创作中,电影级的视频素材能够为作品增添专业质感,让画面更具冲击力。无论是广告、电影短片,还是品牌宣传,高质量的视频素材都是不可或缺的资源。然而ÿ…...

Linux网络——UDP的运用
Linux网络——UDP的运用 文章目录 Linux网络——UDP的运用一、引入二、服务端实现2.1 创建socket套接字2.2 指定网络接口并bind2.3 接收数据并处理2.4 整体代码2.5 IP的绑定的细节 三、用户端实现3.1 创建套接字3.2 指定网络接口3.3 发生数据并接收3.4 绑定问题 四、代码五、UD…...

项目亮点案例
其实对我来说是日常操作,但是如果在面试的时候面试者能把日常的事情总结好发出来,其实足矣。 想让别人认同项目,选取的示例需要包含以下要素: 亮点项目四要素:明确的目标,问题点,解决方法和结果…...

Retrofit源码分析:动态代理获取Api接口实例,解析注解生成request,线程切换
目录 一,Retrofit的基本使用 1.定义api接口 2.创建Retrofit实例 3.获取api接口实例发起请求 二,静态代理和动态代理 1,静态代理 2,动态代理 三,动态代理获取Api接口实例 四,解析接口方法注解&…...

范德蒙矩阵(Vandermonde 矩阵)简介:意义、用途及编程应用
参考: Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares Stephen Boyd and Lieven Vandenberghe 书的网站: https://web.stanford.edu/~boyd/vmls/ Vandermonde 矩阵简介:意义、用途及编程应用 在数学和计算科学中&a…...

【中标麒麟服务器操作系统实例分享】java应用DNS解析异常分析及处理
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://document.kylinos.cn 情况描述 中标麒麟服务器操作系统V7运行在 ARM…...

网安瞭望台第17期:Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析
国内外要闻 Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析 在网络安全的复杂战场中,近期出现了一个值得关注的动态:名为 Rockstar 2FA 的钓鱼即服务(PhaaS)工具包遭遇变故,意外推动了另一个新生服务 Flo…...

玩转OCR | 探索腾讯云智能结构化识别新境界
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 玩转OCR 腾讯云智能结构化识别产品介绍服务应用产品特征行业案例总结 腾讯云智能结构化识别 腾讯云智能结构化OCR产品分为基础版与高级版&am…...

idea2024创建JavaWeb项目以及配置Tomcat详解
今天呢,博主的学习进度也是步入了JavaWeb,目前正在逐步杨帆旗航,迎接全新的狂潮海浪。 那么接下来就给大家出一期有关JavaWeb的配置教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正…...

外连接转AntiJoin的应用场景与限制条件 | OceanBase SQL 查询改写系列
在《SQL 改写系列:外连接转内连接的常见场景与错误》一文中,我们了解到谓词条件可以过滤掉连接结果中的 null 情形的,将外连接转化为内连接的做法是可行的,正如图1中路径(a)所示。此时,敏锐的你或许会进一步思考&#…...

华为实训课笔记 2024 1223-1224
华为实训 12/2312/24 12/23 [Huawei]stp enable --开启STP display stp brief --查询STP MSTID Port Role STP State Protection 实例ID 端口 端口角色 端口状态 是否开启保护[Huawei]display stp vlan xxxx --查询制定vlan的生成树计算结…...

MySQL超详细安装配置教程(亲测有效)
目录 1.下载mysql 2.环境配置 3.安装mysql 4.navicat工具下载与连接 5总结 1.下载mysql mysql下载--MySQL :: 下载 MySQL 社区服务器 下载的时候这里直接逃过就行 我这里的版本是最新的mysql8.0.37 下载完成之后,将压缩包进行解压 这里我建议大…...

MySQL 8.0:explain analyze 分析 SQL 执行过程
介绍 MySQL 8.0.16 引入一个实验特性:explain formattree ,树状的输出执行过程,以及预估成本和预估返 回行数。在 MySQL 8.0.18 又引入了 EXPLAIN ANALYZE,在 formattree 基础上,使用时,会执行 SQL &#…...

信管通低代码信息管理系统应用平台
目前,国家统一要求事业单位的电脑都要进行国产化替代,替代后使用的操作系统都是基于linux的,所有以前在WINDOWS下运行的系统都不能使用了,再者,各单位的软件都很零散,没有统一起来。需要把日常办公相关的软…...

git推送本地仓库到远程(Gitee)
目录 一、注册创建库 二、创建仓库 三、推送本地仓库到远程 1.修改本地仓库用户名和邮箱 2.本地库关联远程仓库 3.拉取远程仓库的文件 4.推送本地库的文件 5.查看远程仓库 四、远程分支查看 1.查看远程分支 2.修改test.txt文件 一、注册创建库 Gitee官网࿱…...

【C++语言】多态
一、多态的概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某种行为,当不同的对象去完成时会产生出不同的状态。 我们可以举一个例子: 比如买票这种行为,当普通人买票时,是全价买票&am…...

ThinkPHP 吸收了Java Spring框架一些特性
ThinkPHP 吸收了Java Spring框架一些特性,下面介绍如下: 1、controller 控制器层 存放控制器层的文件,用于处理请求和响应 2、model 实体类 存放实体类的文件,用于定义数据模型 3、dao DAO层 存放DAO(数据访问…...

自动控制系统综合与LabVIEW实现
自动控制系统综合是为了优化系统性能,确保其可靠性、稳定性和灵活性。常用方法包括动态性能优化、稳态误差分析、鲁棒性设计等。结合LabVIEW,可以通过图形化编程、高效数据采集与处理来实现系统综合。本文将阐述具体方法,并结合硬件选型提供实…...

记录一个SVR学习
1、为什么使用jupter来做数据预测?而不是传统pycharm编辑器 1、Jupyter Notebook 通过anaconda统一管理环境,可以运行python、R、Sql等数据分析常用语言。 2、做到交互式运行,可以逐步运行代码块,实时查看结果,便于调…...

Java内存区域进一步详解
方法区 方法区属于是 JVM 运行时数据区域的一块逻辑区域,是各个线程共享的内存区域。 《Java 虚拟机规范》只是规定了有方法区这么个概念和它的作用,方法区到底要如何实现那就是虚拟机自己要考虑的事情了。也就是说,在不同的虚拟机实现上&am…...

SpiderFlow平台v0.5.0流程的执行过程
流程执行过程: 1. 流程启动 流程的执行通常从一个 开始节点 开始,该节点是整个爬虫任务的起点。开始节点没有实际的功能作用,主要作用是标记流程的起始。 执行顺序:在执行过程中,系统按照流程中的连接线顺序依次执行…...

利用.NET Upgrade Assitant对项目进行升级
本教程演示如何把WPF程序从 <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>升级到<TargetFramework>net8.0-windows</TargetFramework>. 下载并安装.NET Upgrade Assistant - Visual Studio Marketplace Supported .NET upgrades: .NET Frame…...

JAVA开发Erp时日志报错:SQL 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘***‘ 中的标识列插入显式值
错误提示 ### SQL: INSERT INTO sys_user ( user_id, username, password, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ? ) ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENTITY_INSERT 设置为 OFF 时&…...

[计算机网络]ARP协议的故事:小明找小红的奇妙旅程
1.ARP小故事 在一个繁忙的网络世界中,每个设备都有自己的身份标识——MAC地址,就像每个人的身份证号码一样。在这个故事里,我们的主角小明(主机)需要找到小红(目标主机)的MAC地址,才…...

数学竞赛网站:构建互动学习的网络平台
2.1 MYSQL数据库 题目确定了是一个应用程序之后,就开始按部就班的进行设计与分析。本课题是需要数据库作为数据管理工具以及数据载体,从程序功能分析到数据分析,选择合适的关系型数据库是当下所选择的重要环节。关系型数据库可选择余地不多&a…...

IntelliJ IDEA 快捷键大全:提升开发效率的利器
目录 一、基础快捷键 1. 文件操作快捷键 2. 编辑(Editing) 2.1 代码补全与导航 2.2 代码编辑 2.3 代码折叠与展开 3. 查找与替换 4. 调试 5. 版本控制 高级快捷键 重构快捷键:让代码更加优雅 导航快捷键:快速定位代码 …...

机器人角度参考方式
机器人的角度可以根据需求和系统设计来决定。通常情况下,机器人角度(如航向角或偏航角)有两种常见的参考方式: 参考开机时的 0:这是最常见的方式,机器人在开机时会将当前的方向作为 0(即参考方向…...

VSCode:IDE显示设置 --自定义字体及主题颜色
VSCode:IDE显示设置 1.设置字体大小2.设置主题背景 1.设置字体大小 (1)打开VSCode。 (2)打开设置:File – Preferences – Settings。 (3)设置字体大小:Text Editor –…...