Docker

Docker学习记录(一):Windows7下Docker的安装 本文主要记录Docker在Windows7系统下的安装过程,分享出来和大家一起学习,不足之处请批评指正。一、Docker在Windows10系统下的安装首先简单介绍一下Docker在Windows10系统下的安装方法,比较简单,直接下载DOCKER CE FOR WINDOWS,双击安装就行。(1)DOCKER CE FOR WINDOWS下载DOCKER CE FOR WINDOWS是Docke... 阅读详情

容器化技术
*在这里插入图片描述*

安装Docker及基本介绍

1.安装docker的社区版本

yum -y install docker-ce
2. 启动docker
service docker start在这里插入图片描述
3.查看docker版本
docker version
在这里插入图片描述
4.docker拉取镜像
docker pull hello-world
在这里插入图片描述
5.启动docker镜像
docker run hello-world
](https://img-blog.csdnimg.cn/20210411000356133.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BlcnNpc3RlbmNlX19f,size_16,color_FFFFFF,t_70)
6.设置镜像仓库/etc/docker/daemon.json中设置,可设置阿里云镜像仓库
在这里插入图片描述

配置完执行
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker基本概念

分为docker daemon ,restapi,client
在这里插入图片描述

容器和镜像的概念在这里插入图片描述

Docker执行流程

在这里插入图片描述

Docker常用命令

1.拉取镜像
docker pull 镜像名:tags
2.查看下载镜像
docker images
3.创建容器,启动应用
docker run 镜像名:tags
4.正在运行的镜像
docker ps
5.删除容器
docker rm -f 容器id
6.删除镜像
docker rmi -f 镜像名:tags

Docker 宿主机和容器之间的关系

在这里插入图片描述
使用命令时容器内部启动应用端口映射到宿主机上给外部访问
docker run -p 8000:8080 tomcat 8000为宿主机暴露端口,8080为容器服务端口
登录宿主机查看端口使用状况发现docker-proxy为映射进程
在这里插入图片描述
使启动容器时候后台运行,返回容器id
docker run -p 8000:8080 -d tomcat

在这里插入图片描述
使用命令停掉容器,再删除容器
docker stop 容器id
docker rm 容器id
或者
docker rm -f 容器id
在这里插入图片描述
删除镜像
docker rmi tomcat:tag
在这里插入图片描述
如果有容器在使用的镜像使用docker rmi 无法移除
在这里插入图片描述

Docker的结构

在这里插入图片描述
进入容器执行命令
docker exec [it] 容器id 命令 it采用交互式命令
demo
docker exec -it b591983064cf /bin/bash
进入redis容器中
在这里插入图片描述
查看容器内操作系统内核cat /proc/version
在这里插入图片描述
exit 命令退回宿主机
在这里插入图片描述
默认docker存放的容器和镜像位置存放路径
在这里插入图片描述

容器生命周期

docker命令及生命周期
在这里插入图片描述
1.使用docker create 和docker start 创建容器并且启动
在这里插入图片描述
2.使用docker pause 暂停容器 以及docker unpause停止暂停
在这里插入图片描述

3.使用docker stop 停止容器
在这里插入图片描述

Dockerfile

dockerfile 是一个包含于组合镜像命令的文本文档
docker 通过读取dockerfile生成镜像
docker build -t 机构/镜像名:tags dockerfile目录
1.创建Dockerfile文件 以及docker-web 文件夹
在这里插入图片描述

编辑Dockerfile文件

FROM tomcat:latest
MAINTAINER hejiawang.com
#cd /usr/local/tomcat/webapps
#切换工作目录,不存在就创建
WORKDIR /usr/local/tomcat/webapps
#复制宿主机目录下的所有文件到容器目录下
ADD docker-web ./docker-web

在docker-web 下新建index.html文件
在dockerfile当前目录下执行命令构建镜像
docker build -t hejiawang.com/mywebapp:1.0 .
在这里插入图片描述
使用docker images即可查看刚刚新建的docker镜像

在这里插入图片描述
使用命令docker run -d -p 8001:8080 hejiawang.com/mywebapp:1.0 用刚构建的镜像创建一个容器并且将其端口映射到宿主机的8001端口查看
在这里插入图片描述
运行后可以通过浏览器看到刚刚在宿主机上的index.hmtl文件
在这里插入图片描述

镜像分层

在这里插入图片描述
在新的目录下创建新的Dockerfile
在这里插入图片描述

FROM centos
RUN ["echo","aaaa"]
RUN ["echo","bbbb"]
RUN ["echo","cccc"]
RUN ["echo","dddd"]

每一步构建完都会生成临时镜像
在这里插入图片描述
修改Dockerfile 中的内容
在这里插入图片描述
再次使用命令构建镜像,构建的重复的东西会使用之前临时容器的快照
在这里插入图片描述

Dockerfile 基本命令

1.FROM
在这里插入图片描述
2.MAINTAINER和LABEL
在这里插入图片描述3.WORKDIR
在这里插入图片描述
4.ADD和COPY
在这里插入图片描述
5.ENV
在这里插入图片描述
6.在dockerfile执行命令,
RUN 在docker build的时候执行命令
ENTRYPOINT和CMD在容器启动时和启动后执行命令
在这里插入图片描述
在这里插入图片描述

RUN命令格式

在这里插入图片描述
shell格式
在这里插入图片描述
EXEC格式
在这里插入图片描述

ENTRYPOINT启动命令

在这里插入图片描述

CMD启动命令

在这里插入图片描述

CMD和ENTRYPOINT 具体区别

新建一个dockerfile
在这里插入图片描述

FROM centos
RUN ["echo","image building!!!"]
CMD ["echo","container starting.."]

使用docker build 构建镜像
在这里插入图片描述

运行新构建的镜像 Dockerfile中的CMD命令打印了,如果docker run 后面加了命令则不执行CMD中的命令
在这里插入图片描述
修改Dockerfile 重新构建一个镜像
将CMD修改为ENTRYPOINT

FROM centos
RUN ["echo","image building!!!"]
ENTRYPOINT ["echo","container starting.."]

可以看到 docker run 的时候后面跟命令ENTRYPOINT 的命令仍然会执行
在这里插入图片描述

CMD和ENTRYPOIN 组合用

如下案例运行容器的时候ps 可以和执行的命令灵活使用
在这里插入图片描述
在这里插入图片描述

Docker构建redis案例

1.创建Dockfile文件

在这里插入图片描述
2.使用docker build 构建redis镜像
在这里插入图片描述

3.使用docker images 查看到构建的镜像
在这里插入图片描述
4.使用docker run -p 7000:7000 启动容器

在这里插入图片描述
5.查看宿主机对外暴露的端口
在这里插入图片描述
6.进入容器查看
在这里插入图片描述

容器见link单向通信

在这里插入图片描述
通过容器间通过名称访问
命令docker run -d --name web tomcat
在这里插入图片描述
命令docker run -d --name databese -it centos /bin/bash,默认centos创建会自动退出 所以需要加上-it和 /bin/bash 使容器交互启动
在这里插入图片描述
命令docker inspect 容器id查看容器的源数据
其中IPAddress 为容器ip
在这里插入图片描述
进入tomcat容器去ping centos ip 容器互通,但是ping容器名称无法通
在这里插入图片描述
将原来tomcat容器删除掉,然后使用命令docker run -d --name web --link databese tomcat创建启动容器
在这里插入图片描述
再次进入tomcat容器 通过容器名ping其他容器即可ping通
在这里插入图片描述
所以在java程勋的jdbc配置中可以配置name并且在启动容器时link到name即可,几时容器重启更换ip也可以网络通

Bridge网桥双向通信

在这里插入图片描述docker network ls查看docker容器的网桥
docker network create -d bridge my-bridge 为容器创建新的网桥在这里插入图片描述
将容器与网桥互相绑定即可通信
docker network connect my-bridge web 是容器和网桥绑定
docker network connect my-bridge databese
进入centos容器中ping tomcat容器名即可通
在这里插入图片描述
网桥实现原理
在这里插入图片描述

容器间数据共享

为了解决容器共用一个文件的情况
在这里插入图片描述
解决思路在这里插入图片描述

设置-v 设置宿主机目录和容器目录(通过在宿主机创建目录,使多个容器往上挂在)

dcoker run --name 容器名 -v 宿主机路径:容器内挂在路径 镜像名
demo
docker run --name web -v /usr/apps:/usr/local/tomcat/webapps tomcat

设置–volumes-from 共享容器内挂载点 (通过创建一个已经挂在到宿主机的容器,其他容器都挂在这个已挂载的容器)

1.创建共享容器
docker create --name webpage -v /webapps:/tomcat/webapps tomcat /bin/true
2.共享挂在点
docker run --volume-from webpage --name t1 -d tomcat

demo
新建t1容器,将tomcat 容器下的webapps 目录挂在到宿主机的/usr/webapps 下面
在这里插入图片描述
进入容器内也可以看到挂载到宿主机下的目录有文件
在这里插入图片描述
新建t2容器,也将其目录挂在到宿主机上
在这里插入图片描述
修改index.html文件,不需要重启
在这里插入图片描述
访问无论哪个容器,页面都已修改
在这里插入图片描述
每次创建容器创建都要指定挂载点太复杂,
直接手动创建挂载容器
docker create --name webpage -v /usr/local:/usr/local/tomcat/webapps /bin/true
在这里插入图片描述
再创建其他容器时候指定挂载共享容器
docker run -p --volumes-from webpage --name t3 -d tomcat
在这里插入图片描述

Docker compose 容器编排工具

在这里插入图片描述
查看docker-compose版本
在这里插入图片描述
1.创建docker compose yml文件,并且从官网将内容复制进来
在这里插入图片描述
2.docker-compose -d 即可启动多个容器

docker ,nvidia-docker,docker-compose和nvidia-docker-compose的安装配置 预先安装:Ubuntu14.04,SSH,GIT,CUDA-8.0一、安装docker安装最新版// 1. 安装必要的一些系统工具 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common // 2. 安装GPG证书 curl -f... 阅读详情

相关推荐

【Docker】使用 Docker Compose 部署 Docker Registry

在内网环境中,我们期望能够在本地共享镜像。registry服务就是我们镜像仓库的服务,web服务会给我们提供一个可视化的web页面,方便我们查看镜像,web服务中配置的环境变量就是我们仓库服务registry的ip和端口。通过使用 Docker Compose,我们可以轻松地在本地部署 Docker Registry,并开始使用自己的私有镜像存储。如果我们想把镜像推送到公网,那么我们就可以使用阿里云容器镜像,虽然个人容器镜像托管服务是限额使用的,但额度对于我们个人使用的话已经足够了。

wjianwei666的专栏 885

kubernetes【存储】2. Local Persistent Volume如何优雅使用

文章目录1. 简介2. 总结 1. 简介 在持久化存储领域,用户呼声最高的定制化需求,莫过于支持“本地”持久化存储了。也就是说,用户希望 Kubernetes 能够直接使用宿主机上的本地磁盘目录,而不依赖于远程存储服务,来提供“持久化”的容器 Volume。这样做的好处很明显,由于这个 Volume 直接使用的是本地磁盘,尤其是 SSD 盘,它的读写性能相比于大多数远程存储来说,要好得多。这个需求对本地物理服务器部署的私有 Kubernetes 集群来说,非常常见。 所以,Kubernetes 在 v1.

爱死亡机器人 1386

docker-persistent-db:允许使用docker快速设置持久性MySQL数据库

Docker的持久性数据库帮助器 轻松创建具有持久性数据MySQL docker容器。 基于快速黑客。 适用于在没有dokku的OSX上本地使用。 安装 从您的项目目录中运行以下命令: git clone https://github.com/neam/docker-persistent-db --recursive ../docker-persistent-db/ ../docker-persistent-db/install 然后,根据下面的“简单用法”创建一个持久数据库。 有关数据库容器的元数据存储在../docker-persistent-db/.db/目录中的../docker-persistent-db/.db/主机上。 指令 注意:当前,只有db:create命令可以通过验证。 $ ../docker-persistent-db/commands help

本地持久化卷管理工具 - local-persist 使用教程

`local-persist` 是一个用于 Docker 的卷插件,它允许你创建命名的本地卷,并指定这些卷的持久化存储位置。与默认的 Docker 本地卷不同,`local-persist` 可以确保即使容器被删除,数据仍然保留在指定的目录中。这对于需要持久化存储的应用程序非常有用。 ## 项目快速启动 ### 安装 首先,你需要安装 `local-persist` 插件。以下是安装步骤: ...

gitblog_00365的博客 657

别再手动写JSON了!用Node-RED OPC UA节点5分钟搞定楼宇温湿度数据采集

本文介绍了如何利用Node-RED和OPC UA节点快速实现楼宇温湿度数据的自动化采集与JSON格式转换。通过可视化工具Node-RED,开发者无需编写复杂代码,5分钟内即可完成从传感器到数据输出的全流程配置,大幅提升智慧楼宇和工业物联网项目的实施效率。

weixin_30368405的博客 433

西门子1200,与V90和步科MD60第三方伺服PN通讯

需要注意的是回零方式的选择,因为V90是绝对值编码器,这里回零模式选择模式7,系统自动根据编码器反馈以及组态的机械参数,计算出轴的位置,并且掉电保持。在线访问中,找到对应的网卡,以及下面扫描到的设备,可以在线修改ip地址和profinet名称,注意一定要和组态中的完全一致。以上硬件组态上完成,主要是gsd文件导入后,添加硬件,建立连接,修改ip和profinet名称,添加报文。1- 博图V18内,设备组态,网络视图中,拖入V90以及MD60伺服,并与PLC创建连接。向厂家索要GSD文件,PN的描述文件。

weixin_37596954的博客 2464

使用本地持久化卷插件强化您的Docker体验

在Docker的世界里,数据管理是关键的一环。想象一下,您能创建一个命名的本地卷,让它在您指定的位置持久化存储,不受容器生命周期的影响——这一切都成为可能,感谢Local Persist Volume Plugin for Docker。 ## 项目介绍 Local Persist Volume Plugin为Docker提供了一个聪明的解决方案,它允许您创建独立的、可命名的本地卷,这些卷不仅

gitblog_00031的博客 504

OpenManus本地部署实战:从源码编译到浏览器路径优化全解析

本文详细解析了OpenManus本地部署的全过程,从源码编译到浏览器路径优化。涵盖环境准备、源码获取、模型配置、依赖安装等关键步骤,特别针对Windows系统下的chrome.exe路径修改提供了实用解决方案,帮助开发者高效完成部署并优化性能。

weixin_28826545的博客 381

微服务架构-Day3

学习目标 学会微服务架构 对应项目cloud-demo 学习笔记 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题 1.1.1.应用部署的环境问题 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题: 依赖关系复杂,容易出现兼容性问题 开发、测试、生产环境有差异 例如一个项目中

青釉Oo的博客 387

【MagicDrive环境配置】新手配俩星期版

1.创建一个新的环境conda create -n newdrive python==3.82.激活该环境conda activate newdrive3.下载MagicDrive源码 git clone --recursive https://github.com/cure-lab/MagicDrive.git,如果出现时间超时八成是网的问题,直接自己下载解压就好3.我的cuda版本是11.7,但11.7导致后续安装有冲突,因此进入。

m0_46261292的博客 2203

RK3568平台(网络篇)WIFI模块RTL8821CU调试

RTL8821CU是瑞昱半导体推出的usb接口的wifi,下面的教程将介绍如何将RTL8821CU移植到rk3588的平台上。移植usb wifi需要修改的文件Android hal层需要修改的文件//kernel需要修改的文件kernel/arch/arm64/boot/dts/rockchip/rk3399-tve1030g.dtsi //除去板上的sdio的wifi。

weixin_49303682的博客 3905

docker安装详细教程

docker安装,docker管理界面

polo的博客 1万+

<PLC><工控>汇川Easy521PLC与压力传感器485通讯实例

有些PLC在进行串口通讯时,配置完串口参数后,还需要自己编程序来读写,但本例中汇川Easy521配置完成后,想要读取从站什么数据,只需要在“COM0 Modbus配置窗口”配置即可。可以同时配置多个从站。在配置窗口的右侧点击新增按钮,就会自动生成一条从站的配置,默认从站站号为“1”,触发方式是“循环”,功能码是03(读寄存器),从站寄存器地址为0,长度为“1”,映射地址需要自己添加。因为我们是将PLC设置为Modbus主站,所以压力传感器就是从站,我们的需求时PLC从这些从站传感器中读取数据,比如压力值。

用沸腾的热血,支付我们的人生吧! 6461

【docker】linux系统docker的安装及使用

然后,只要一个命令,就能同时启动/关闭这些容器。阿里云:http:**//mirrors.aliyun.com/docker-ce/linux/centos/**docker-ce.repo 清华大学源:https:**//mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/**docker-ce.repo。注:所有docker容器的卷,没有指定目录情况下(具名挂载和匿名挂载),都在 /var/lib/docker/volumes/ 下。

Best_lgx的博客 8762

Python爬虫实战:使用最新技术抓取百度贴吧帖子内容

本文详细介绍了使用Python最新技术抓取百度贴吧帖子的完整流程。通过库,我们实现了高效的异步爬虫,具备JavaScript渲染、智能反爬应对、数据持久化等高级功能。这个爬虫框架具有良好的扩展性,可以根据具体需求进行功能增强。

2201_76125261的博客 779

【Matlab】matlab代码实现迭代学习控制

该文介绍了在Matlab中实现迭代学习控制(ILC)的方法。ILC通过利用历史轨迹数据来优化重复任务的控制性能。文章提供了一个步进电机控制示例,包括:1)定义正弦轨迹;2)设置100次迭代和0.1学习率;3)建立二阶系统模型;4)执行ILC算法计算控制输入;5)绘制期望轨迹与实际输出的对比图。该示例展示了ILC的基本实现过程,并指出实际应用可能需要更复杂的设计。代码演示了误差计算、控制输入更新和结果可视化等关键步骤。

unber的博客 201

Linux docker及docker-compose安装教程

本文介绍了Linux系统中Docker和Docker-Compose的安装方法。在x86架构下,提供了联网和离线两种安装方式:对于Ubuntu系统可使用阿里云源在线安装,CentOS/AnolisOS系统可通过官方仓库或阿里镜像源安装;离线安装则需下载对应版本的安装包进行手动配置。同时详细说明了Docker服务配置、权限设置和开机自启等步骤。对于Docker-Compose的安装,给出了在线下载最新版本的命令。文中包含完整的代码示例,涵盖从安装到验证的全部流程,适用于不同Linux发行版的Docker环境部

qq_35861227的博客 4075

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java技术栈 —— Docker入门

docker的本意是码头工人。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。[1]一、参考文章或视频链接[1]《Docker》- 百度百科[2]Docker - 官方。

键盘国治理专家的博客 2111

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

docker in docker使用方式

挂载主机docker文件 方式1:挂载主机上的docker.sock以及docker二进制文件 docker run -it \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker \ centos docker version 方式2:挂载主机docker.sock并在容器中安装docker客户端 docker run -it \ -v /var/run/docker.sock

IT 4285

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Docker in docker 实现

Docker in docker 文章目录Docker in docker原理实现(centos7)常见问题参考 在docker容器内运行docker一般是不被倡导的。但有些场景和业务上,需要在容器内使用docker对组件进行编译构建,不同的组件所需的依赖有不一致,不同自建相互之间的依赖很可能相互干扰(比如需要同一个组件的不同版本),因此docker-in-docker的解决方案被提出来了, 一般被用于CI或集成测试。 原理 通过将主机上的docker.sock挂载至容器内,实现共享主机的docker.so

SinkRain 2万+

docker in docker 在CI中应用解析

docker里嵌套运行docker,本文讲解其在jenkins和gitlab-runner 种的调用流程。

专注于输出大概有用的软硬件技术! 1599

dind(docker in docker)学习

docker in docker 说白了,就是在docker容器内启动一个docker daemon,对外提供服务。 优点在于: 镜像和容器都在一个隔离的环境,保持操作者的干净环境。 想到了再补充 :) 一:低版本启动及访问 启动1.12.6-dind docker run --privileged -d --name mydocker docker:1.12.6-dind 在其他容器访问 d...

IT老吴的博客 1万+

此docker compose非彼docker-compose

维度docker-composedocker compose安装方式独立可执行文件(standalone)Docker 插件(plugin)对应版本Compose V1Compose V2命令格式短横线连接(docker-compose)空格分隔(docker compose)集成度独立工具,需单独安装集成在 Docker CLI 中推荐程度旧版,逐步淘汰官方推荐 ✅依赖独立二进制文件依赖 docker-compose-plugin。兼容性:docker-compose 在旧版本中更稳定,适合遗留系统。

爱码少年 00fly.online 的博客 2万+

Docker API(Registry API、Docker Hub API、Docker Remote API)

一、Docker API简介 在Docker生态系统中一共有3种API: Registry API:提供了与来存储Docker镜像的Docker Registry继承的功能 Docker Hub API:提供了与Docker Hub继承的功能 Docker Remote API:提供与Docker守护进程集成的功能 这3种API都是RESTful风格的 本文我们主要介绍Remote API,因为它是通过程序与Docker进行继承和交互的核心内容 二、初识Remote API Remo

董哥的黑板报 5135

ARM架构下安装新版docker及docker-compose

【代码】ARM架构下安装新版docker及docker-compose。

qq_35861227的博客 3589

【docker】docker安装

增加以下字段–restart always指定停止后总是自动重启–name scau_jwc_container指定容器名–network docker_bridge_network指定网络环境-v C:\xudawu\DockerData2024_09_29\scau_jwc_2024_11_01:/scau_jwc/data指定挂载的本地路径-d scau_jwc_image依赖的本地镜像。

xudawu201的博客 2453
上一篇: Redis实现分布式锁
下一篇: k8s概览
Persistence___
博客等级 码龄8年 47粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值