Docker知识对应验证

docker中部署dpdk功能验证 参考DPDK Pktgen+Docker搭建VNF环境及验证一文中的部署方法,在实际环境中进行验证;本文记录验证过程中遇到的坑以及解决方法,另外,还验证了另外一种部署方式。 阅读详情

简介

通过前面一系列的docker相关的代码编写,对于docker的基础也有了一定的了解,这边文章的主要目的就是验证下之前的相关知识在docker中的应用

基础单机部分

我们在机器人上跑一个MongoDB,查看当前运行容器如下:

➜  ~ docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED        STATUS        PORTS                                           NAMES
c05db355423d   mongo                 "docker-entrypoint.s…"   6 months ago   Up 6 months   0.0.0.0:27017->27017/tcp, :::27017->27017/tcp   mongo

我们看到它的id是:c05db355423d,在我们编写docker demo的过程中,我们是将容器id作为各种路径的标识的,我们用这个容器id进行搜索看看:

➜  ~ find / -name "*c05db355423d*"
/run/docker/runtime-runc/moby/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/run/docker/containerd/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/run/containerd/io.containerd.runtime.v2.task/moby/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/hugetlb/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/blkio/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/memory/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/cpuset/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/pids/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/freezer/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/perf_event/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/devices/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/cpu,cpuacct/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/net_cls,net_prio/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/systemd/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/var/lib/containerd/io.containerd.runtime.v2.task/moby/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/var/lib/docker/containers/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/var/lib/docker/containers/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668-json.log
/var/lib/docker/image/overlay2/layerdb/mounts/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668

资源限制

哦豁,一看确实有不少我们熟悉的东西,比如内存命名空间、CPU命名空间:

/sys/fs/cgroup/memory/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/cpuset/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668
/sys/fs/cgroup/cpu,cpuacct/docker/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668

之前的demo,我们也是在这个路径下用mydocker+容器名做的子目录,可以的,熟悉的味道

还是其他的,目前不知道有啥用,感兴趣的后面查一查,我们继续看看这个目录下是不是还有其他容器的

 ~ tree /sys/fs/cgroup/memory/docker
/sys/fs/cgroup/memory/docker
├── 0cf1ae82601a1fafa31ccaa50e7416f7beaa3764e39375c85103d135b07d7677
│   ├── cgroup.clone_children
│   ├── cgroup.event_control
│   ├── cgroup.procs
│   ├── memory.failcnt
│   ├── memory.force_empty
│   ├── memory.kmem.failcnt
│   ├── memory.kmem.limit_in_bytes
│   ├── memory.kmem.max_usage_in_bytes
│   ├── memory.kmem.slabinfo
│   ├── memory.kmem.tcp.failcnt
│   ├── memory.kmem.tcp.limit_in_bytes
│   ├── memory.kmem.tcp.max_usage_in_bytes
│   ├── memory.kmem.tcp.usage_in_bytes
│   ├── memory.kmem.usage_in_bytes
│   ├── memory.limit_in_bytes
│   ├── memory.max_usage_in_bytes
│   ├── memory.memsw.failcnt
│   ├── memory.memsw.limit_in_bytes
│   ├── memory.memsw.max_usage_in_bytes
│   ├── memory.memsw.usage_in_bytes
│   ├── memory.move_charge_at_immigrate
│   ├── memory.numa_stat
│   ├── memory.oom_control
│   ├── memory.pressure_level
│   ├── memory.soft_limit_in_bytes
│   ├── memory.stat
│   ├── memory.swappiness
│   ├── memory.usage_in_bytes
│   ├── memory.use_hierarchy
│   ├── notify_on_release
│   └── tasks
├── 74571d1498bdba0e7e1a684af1e2bb7bc77cee0583147543a33591dd0ffe033e
│   ├── cgroup.clone_children
│   ├── cgroup.event_control
│   ├── cgroup.procs
│   ├── memory.failcnt
│   ├── memory.force_empty
│   ├── memory.kmem.failcnt
│   ├── memory.kmem.limit_in_bytes
│   ├── memory.kmem.max_usage_in_bytes
│   ├── memory.kmem.slabinfo
│   ├── memory.kmem.tcp.failcnt
│   ├── memory.kmem.tcp.limit_in_bytes
│   ├── memory.kmem.tcp.max_usage_in_bytes
│   ├── memory.kmem.tcp.usage_in_bytes
│   ├── memory.kmem.usage_in_bytes
│   ├── memory.limit_in_bytes
│   ├── memory.max_usage_in_bytes
│   ├── memory.memsw.failcnt
│   ├── memory.memsw.limit_in_bytes
│   ├── memory.memsw.max_usage_in_bytes
│   ├── memory.memsw.usage_in_bytes
│   ├── memory.move_charge_at_immigrate
│   ├── memory.numa_stat
│   ├── memory.oom_control
│   ├── memory.pressure_level
│   ├── memory.soft_limit_in_bytes
│   ├── memory.stat
│   ├── memory.swappiness
│   ├── memory.usage_in_bytes
│   ├── memory.use_hierarchy
│   ├── notify_on_release
│   └── tasks

确实不出所料

容器日志

我们再继续看看,我们看到这么一个东西:

/var/lib/docker/containers/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668-json.log

感觉像是日志一样的东西,我们看看内容:

cat /var/lib/docker/containers/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668/c05db355423dc43607cea24dcb13a4d38c924ce27801b7b230a1d290ec6bb668-json.log

{"t":{"$date":"2022-04-24T21:37:27.878+00:00"},"s":"I",  "c":"STORAGE",  "id":22430,   "ctx":"Checkpointer","msg":"WiredTiger message","attr":{"message":"[1650836247:878115][1:0x7fbb84078700], WT_SESSION.checkpoint: [WT_VERB_CHECKPOINT_PROGRESS] saving checkpoint snapshot min: 684686, snapshot max: 684686 snapshot count: 0, oldest timestamp: (0, 0) , meta checkpoint timestamp: (0, 0) base write gen: 1"}}

结果一看和docker logs mongo的内容是一样,说明这是个日志文件

其下应该还是其他的容器的日志文件,我们继续看一手

  ~ tree /var/lib/docker/containers
/var/lib/docker/containers
├── 0cf1ae82601a1fafa31ccaa50e7416f7beaa3764e39375c85103d135b07d7677
│   ├── 0cf1ae82601a1fafa31ccaa50e7416f7beaa3764e39375c85103d135b07d7677-json.log
│   ├── checkpoints
│   ├── config.v2.json
│   ├── hostconfig.json
│   ├── hostname
│   ├── hosts
│   ├── mounts
│   ├── resolv.conf
│   └── resolv.conf.hash
└── c4be1d94fef7d177e5c5a72236d5d55881338222ef03acf4d151bb6167f3bed1
    ├── c4be1d94fef7d177e5c5a72236d5d55881338222ef03acf4d151bb6167f3bed1-json.log
    ├── checkpoints
    ├── config.v2.json
    ├── hostconfig.json
    ├── hostname
    ├── hosts
    ├── mounts
    │   └── shm
    ├── resolv.conf
    └── resolv.conf.hash

从上面的结构看到,确实是

网络部分

docker run -tid --name centos8 centos:8 bash

$ docker exec -ti centos8 traceroute 114.114.114.114
traceroute to 114.114.114.114 (114.114.114.114), 30 hops max, 60 byte packets
 1  172.17.0.1 (172.17.0.1)  0.046 ms  0.007 ms  0.005 ms
 2  192.168.1.1 (192.168.1.1)  4.210 ms  4.245 ms  4.235 ms
 3  100.64.0.1 (100.64.0.1)  7.034 ms  7.052 ms  7.044 ms
 4  118.116.49.185 (118.116.49.185)  12.602 ms  12.624 ms *
 5  171.208.196.5 (171.208.196.5)  7.995 ms 171.208.199.249 (171.208.199.249)  9.718 ms 61.139.121.49 (61.139.121.49)  8.169 ms
 6  202.97.76.138 (202.97.76.138)  36.394 ms * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
$ ip addr
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:d4:fb:76:d9 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:d4ff:fefb:76d9/64 scope link
       valid_lft forever preferred_lft forever
6: veth0cf8b9a@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
    link/ether 42:da:8b:c0:20:7f brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::40da:8bff:fec0:207f/64 scope link
       valid_lft forever preferred_lft forever

$ docker exec -ti centos8 ip a
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
5: eth0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
$ iptables  -t  nat  -nL --line-numbers
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0

Chain DOCKER (2 references)
num  target     prot opt source               destination
1    RETURN     all  --  0.0.0.0/0            0.0.0.0/0

总结

如上,我们简单探索了下docker在主机上运行时的一些东西,和我们写的demo进行一定的比对,发现基本上共通

创建自己的docker镜像然后pull下载验证 日常bb 初创时间:2019/3/7 我自己使用hexo在本地搭建的自己的博客,记录上自己的日常学习,但是有时候会因为换了电脑,重新配置自己的环境,当前想到了,自己创建docker镜像,然后就不用再担心我换电脑,什么的造成了我环境上面的重新搭建;这不就是docker最主要的使用方法的吗? 上一篇文章:情报ico初识 个人博客搭建教程使用github_hexo_next创建自己的博客 目录: 1. ... 阅读详情

相关推荐

Docker+Dify部署DeepSeek-r1本地知识库

Docker+Dify部署DeepSeek-r1本地知识库详细完整攻略

欲买桂花同载酒的博客 1720

多个平台安装MongoDB

多个平台安装MongoDB 一、Windows 平台安装 MongoDB MongoDB 下载 MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center/community 注意:在 MongoDB 2.2 版本后已经不再支持 Windows XP 系统。最新版本也已经没有了 32 位系统的安装文件。 MongoDB for Windo

Daylight629博客 735

解决vscode 连接服务器报错:The remote host may not meet VS Code Server‘s prerequisites for glibc and libstdc++

解决vscode远程连接服务器报错:The remote host may not meet VS Code Server's prerequisites for glibc and libstdc++ (The remote host does not meet the prerequisites for running VS Code Server)

qq_37200100的博客 9909

20200429 关于MongoDB 简介

官方链接:https://www.runoob.com/mongodb/mongodb-tutorial.html MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 1.是什么 2.为什么 3.怎么...

do what you like && brave 1744

电子工程师必看:dB与放大倍数快速换算表(附常见误区解析)

本文为电子工程师提供了dB与放大倍数快速换算的实战指南。文章深度解析了分贝的本质与核心价值,并提供了电压/电流与功率增益的速查表及心算技巧。重点剖析了混淆电压与功率dB、-3dB带宽理解等常见误区,并结合示波器、频谱仪测量及系统级应用,帮助工程师在实际工作中高效、准确地运用这一对数工具。

weixin_29214199的博客 654

SAP物料分类账(ML)避坑指南:激活顺序错了怎么办?从CKMSTART到差异分摊的完整流程

本文详细解析SAP物料分类账(ML)的正确激活顺序与配置流程,帮助用户避免常见陷阱如'LKW无科目'、'在制品重估失败'等问题。从CKMSTART到差异分摊的完整流程,涵盖关键配置节点、典型报错分析与应急处理方案,确保产品成本控制(CO-PC)模块的顺利运行。

weixin_42524708的博客 258

干掉Config server的两个节点之后会发生什么?

configReplSet数据量较小,从节点出现问题后,2秒内primary变成secondary,启动122从节点之后,22秒左右configReplSet恢复正常,整个集群变成可读写。config server也是三个节点的副本集(configReplSet),直接停掉两个节点之后,关闭步骤的返回信息相似,如下。当前MongoDB集群的测试环境的架构有两个分片,每个分片是三个节点的副本集,一个mongos,mongoDB v4.4.20。查看主节点121,可以看到变成secondary。

赚钱把购物车清了。。。 1138

OpenFOAM算例文件结构深度解析:以cavity案例为例教你读懂每个文件夹的作用

本文以OpenFOAM经典cavity案例为例,深度解析CFD算例文件结构。详细阐述了0、constant、system三个核心目录的作用:0存放初始与边界条件,constant定义物理属性和网格,system控制求解策略。通过剖析关键文件,帮助用户理解每个参数的意义,掌握从读懂到定制算例的能力,为高效使用这一开源CFD工具奠定坚实基础。

beer8的博客 236

docker基于本地存储部署outline团队知识库

Outline 是一个开源的Wiki 知识库和团队协作文档管理工具,美观、实时协作、功能丰富且兼容 Markdown,设计用于帮助团队和组织有效地创建、共享和管理文档。注意:官方提供的服务提供30天试用,之后每月10美元或每年100美元。由于outline是开源工具,完全支持自建outline。

IT 1万+

避开地图定位的坑:手把手教你处理GCJ-02和WGS-84坐标转换(2023最新版)

本文深入解析了GCJ-02与WGS-84坐标系转换的核心原理与常见误区,提供了详细的代码实现与精度控制方法。针对地图定位开发中的实际痛点,文章重点阐述了如何通过迭代逼近法实现高精度坐标转换,并给出了误差测试与业务场景下的工程实践指南,帮助开发者有效规避定位漂移等问题。

lstm7chronicler的博客 1166

第三课 NXP S32K144 MCAL 集成到Vector davinci SIP-第一弹

将NXP S32K144 MCAL 集成到Vector davinci SIP的第三方库,导出ARXMl给Vector davinci SIP使用

candleer的博客 5854

docker搭建DeepSeek+Dify构建个人知识库

docker搭建本地知识库Dify

susu1083018911的博客 1272

【光子AI / Photon.AI】manus 通用 Agent 的实现核心技术原理与应用

摘要 Manus是一款由国内团队开发的通用AI Agent,其核心技术原理基于多智能体协作架构、云端全能沙箱、规划-执行-反思循环等系统工程方法。与传统的对话式AI不同,Manus能够在独立的Linux虚拟机环境中自主规划并执行复杂任务,通过编写和运行代码来解决问题,具备强大的纠错能力和工具使用能力。 核心应用场景包括深度行业研究、自动化办公、生活助理、辅助编程和跨平台信息整合等。Manus的工程化落地优势体现在沙箱环境、多智能体调度和容错机制等方面,使其能够完成需要多步骤操作和多种工具调用的复杂任务,将A

AI天才研究院 666

docker 上传镜像到对应的项目

Docker Hub是一个由Docker公司提供的云端仓库服务,旨在帮助开发者和运维人员共享、存储和管理Docker镜像。它提供了一个集中的平台,用户可以在上面找到各种各样的公共Docker镜像,并且可以将自己构建的镜像上传到其中。通过以上步骤,我们成功地将本地构建好的Docker镜像上传到对应的项目中,并可以在需要的时候拉取该镜像进行部署和使用。上传镜像到Docker仓库是一个很重要的部署步骤,也是团队协作中必不可少的一环。

牛肉胡辣汤 1076

十五、【测试执行篇】异步与并发:使用 Celery 实现测试任务的后台执行与结果回调

本文介绍如何使用Celery实现测试任务的异步执行与结果回调,解决同步执行测试计划导致的请求阻塞问题。主要内容包括:Celery的基本概念与工作原理(任务队列、消息中间件、Worker进程),在Django项目中集成Celery的步骤,以及将同步测试逻辑改造为异步任务的方法。

blues_C的博客 706

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Docker 开启 SSL 验证

最近看 OJ 项目的远程开发阶段,然后踩坑踩了 2 天😂Docker版本:在CentOS安装版本:依赖

leikooo 的个人博客 1667

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Docker知识1:Docker-hub简介

Docker Hub是Docker提供的一项服务,用于查找和与您的团队共享容器镜像。它是世界上最大的容器镜像存储库,拥有一系列内容源,包括容器社区开发人员、开放源代码项目和独立软件供应商(ISV)在容器中构建和分发代码。 进入docker的官网入口:https://www.docker.com/ 用户可以访问免费的公共存储库来存储和共享图像,也可以为私有存储库选择订阅计划。 Docker Hub提供以下主要功能: 仓库:推拉容器镜像。 团队和组织:管理对容器映像的私有存储库的访问。 官方

gongdiwudu的专栏 2万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Docker】Docker启动验证

通过lsb_release命令查看以下我的LinuxMint发行版, 查看以下我的Linux内核版本, Docker要求Linux内核版本必须在要在3.10以上,显然我们的系统是满足的。 1. Docker安装 操作系统默认的apt源有docker包,我们可以直接使用下面的apt-get命令安装docker, $ sudo apt-get install -y docker.i...

学习永不晚 3171

docker基础知识点及使用

镜像是蓝图:它的构建是静态的,定义了如何创建容器。容器是实例:它是动态的、可以运行的实例,执行具体的任务,拥有自己的状态和数据。dockerfile构建镜像的步骤

wangsir_666的博客 2570

Docker安装pyspark及验证

通过打好的包安装 下载后的配置好的文件的目录结构如下,文件下载地址: 链接:https://pan.baidu.com/s/1i8yO2X25TZ0ofSEXPmIq-g 密码:akfq ├── apt.conf ├── build_network.sh ├── build.sh ├── config │ ├── apt.conf │ ├── core-site.xml │ ├─...

lck5602的专栏 2026

安装docker compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务,然后使用一个命令来创建并启动所有服务。Compose 有三个主要步骤:- 使用 Dockerfile 定义应用程序的环境和依赖。- 使用 docker-compose.yml 定义构成应用程序的服务和它们之间的关系。- 使用 docker-compose up 命令来启动并运行整个应用程序。

u011442726的博客 1万+

Docker私有仓库Registry的搭建验证

官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时候,我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像。这个可以通过开源软件Registry来达成目的。

My_blankness的博客 700

Docker + BookStack 打造个人知识库

用腾讯云轻量应用服务器和Docker,快速部署专属BookStack个人知识库!本文提供详细图文教程,从服务器选购到一键部署,带你轻松搭建高效知识管理平台,实现数据私有化与团队协作。

weixin_42594029的博客 940

在 Windows 上安装 Docker 及验证

在 Windows 上安装 Docker,核心是先满足系统与虚拟化要求,再安装 Docker Desktop 并选择 WSL 2 或 Hyper‑V 后端,最后验证安装。

weixin_45311418的博客 614
上一篇: 自己动手写 Docker 系列 -- 6.5 启动时给容器配置网络
下一篇: Spring Data MongoDB 使用示例
_萧_
博客等级 码龄10年 55粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值