docker容器---docker-compose容器集群的快速编排

一、Docker-compose简介

Docker-Compose项目是基于Python开发的Docker官方开源项目,负责实现对Docker容器集群的快速编排

Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器(container)。

  1. Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。
  2. 一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。
  3. 一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如Consul。

Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API, 就可以在其上利用Compose来进行编排管理。

二、YAML文件格式及编写注意事项

1、YAML文件格式

  1. YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。
  2. 类似于 json数据描述语言,语法比 json简单的很多。
  3. YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [ ] 括起来, hash 用花括号 { }括起来。

2、YAML格式的注意事项

  1. 不支持制表符 tab 键缩进,只能使用空格缩进
  2. 通常开头缩进2个空格
  3. 字符后缩进1个空格,如冒号 : 、逗号 , 、横杠 -
  4. 用 # 号注释
  5. 如果包含特殊字符用单引号 ‘’ 引起来作为普通字符;如果用双引号“”表示特殊字符本身的意思
  6. 布尔值必须用引号 “” 括起来
  7. 区分大小写

3、YAML数据结构

对象: 键值对的字典
animal: pets

数组: 一组按次序排列的列表
- cat
- dog
- goldfish

布尔值
debug: "true"
debug: "false"


#Yaml示例
languages:  #序列的映射
  - Java
  - Golang
  - Python
websites:   #映射的映射
  Baidu: www.baidu.com
  Wangyi: www.163.com
  Souhu: www.souhu.com
  
 
#或者 
languages: ["Java","Golong","Python"]
websites: 
  Baidu: 
    www.baidu.com
  Wangyi: 
    www.163.com
  Souhu: 
    www.souhu.com
 
 
 
#Json格式
{
  languages: [
    'Java',
    'Golong',
    'Python',
  ],
  websites: [
    Baidu: 'www.baidu.com',
    Wangyi: 'www.163.com',
    Souhu: 'www.souhu.com',
  ]
}

4、Docker-Compose配置常用字段

字段描述
build

指定 Dockerfile 文件名

(要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定)

dockerfile构建镜像上下文路径
context可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址
image指定镜像(已存在)
command执行命令。覆盖容器启动后默认执行的命令(会覆盖Dockerfile的CMD指令)
container_name指定容器名称,由于容器名称是唯一的,如果指定自定义名称呢,则无法scale指定容器数量
deploy 指定部署和运行服务相关配置,只能在 Swarm 模式使用
environment添加环境变量
networks加入网络,引用顶级networks下条目
network_mode设置容器的网络模式,如 host, bridge,......
ports暴露容器端口,与 -p 相同,但端口不能低于 60
volumes挂载一个宿主机目录或命令卷到容器,命名卷要在顶级 volumes 定义卷名称
volumes_from从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本 '2' 支持
hostname容器主机名
sysctls在容器内设置内核参数
links连接到另外一个容器,- 服务名称[:服务别名]
privileged用来给容器root权限,注意是不安全的,true | false
restart设置重启策略,no,always,nounless-st-failure,oped
no,默认策略,在容器退出时不重启容器。
on-failure,在容器非正常退出时(退出状态非0),才会重启容器。
on-failure:3,在容器非正常退出时重启容器,最多重启3次。
always,在容器退出时总是重启容器。
unless-stopped,在容器退出的容器时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了。

5、Docker-compose 常用命令

字段描述
build重新构建服务
ps列出容器

up

创建和启动容器
exec在容器里面执行命令
scale指定一个服务容器启动数量
top显示容器进程
logs查看容器输出
down删除容器、网络、数据卷和镜像
stop/start/restart停止/启动/重启服务

三、部署docker-compose

1、安装所需包

[root@localhost ~]#cd /opt/
[root@localhost opt]#ls
containerd  lnmp  rh
[root@localhost opt]#rz -E
rz waiting to receive.
[root@localhost opt]#ls
containerd  docker-compose-1.25.0  lnmp  rh
[root@localhost opt]#mv docker-compose-1.25.0 docker-compose
[root@localhost opt]#ls
containerd  docker-compose  lnmp  rh
[root@localhost opt]#chmod +x docker-compose 
[root@localhost opt]#ls
containerd  docker-compose  lnmp  rh
[root@localhost opt]#mv docker-compose /usr/local/bin/
[root@localhost opt]#docker-compose --version
docker-compose version 1.25.0-rc4, build 8f3c9c58

[root@localhost opt]#docker ps -a
CONTAINER ID   IMAGE        COMMAND                   CREATED        STATUS                    PORTS     NAMES
56b579133ec3   php:lnmp     "/bin/sh -c '/usr/lo…"   18 hours ago   Exited (0) 18 hours ago             php
28af5fe9d022   mysql:lnmp   "/usr/local/mysql/bi…"   19 hours ago   Exited (0) 18 hours ago             mysql
94f22e52423f   nginx:lnmp   "/usr/local/nginx/sb…"   22 hours ago   Exited (0) 18 hours ago             nginx
[root@localhost opt]#docker ps -a  | awk 'NR>=2{print "docker rm "$1}' | bash
56b579133ec3
28af5fe9d022
94f22e52423f
[root@localhost opt]#docker images 
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
php          lnmp      3f352863e19b   18 hours ago   1.4GB
mysql        lnmp      d446e4998a17   20 hours ago   10.1GB
nginx        lnmp      97a40e10689a   22 hours ago   569MB
nginx        latest    7383c266ef25   5 days ago     188MB
centos       7         eeb6ee3f44bd   2 years ago    204MB

2、部署docker-compose (nginx)

1.创建管理文件夹

[root@localhost opt]#ls
containerd  lnmp  rh
[root@localhost opt]#mkdir -p /opt/docker-compose_nginx
[root@localhost opt]#cd /opt/docker-compose_nginx/
[root@localhost docker-compose_nginx]#mkdir wwwroot
[root@localhost docker-compose_nginx]#ls
wwwroot
[root@localhost docker-compose_nginx]#mkdir /opt/docker-compose_nginx/nginx
[root@localhost docker-compose_nginx]#cd nginx/
[root@localhost nginx]#ls
[root@localhost nginx]#cd /opt/lnmp/nginx/
[root@localhost nginx]#ls
Dockerfile  html  nginx-1.12.0.tar.gz  nginx.conf  wordpress-4.9.4-zh_CN.tar.gz
[root@localhost nginx]#cp -r Dockerfile nginx-1.12.0.tar.gz /opt/docker-compose_nginx/nginx/
[root@localhost nginx]#cd -
/opt/docker-compose_nginx/nginx
[root@localhost nginx]#ls
Dockerfile  nginx-1.12.0.tar.gz

[root@localhost nginx]#yum -y install tree

2.编写Dockerfile文件

[root@localhost nginx]#vim run.sh

#!/bin/bash
/usr/local/nginx/sbin/nginx

[root@localhost nginx]#vim Dockerfile

FROM centos:7
MAINTAINER this is nginx image <ah>
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
RUN make -j 4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
EXPOSE 443
ENTRYPOINT [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]

[root@localhost wwwroot]#pwd
/opt/docker-compose_nginx/wwwroot
[root@localhost wwwroot]#echo "<h1>this is nginx</h1>" > /opt/docker-compose_nginx/wwwroot/index.html

3.编写docker-compose.yml

[root@localhost docker-compose_nginx]#pwd
/opt/docker-compose_nginx
[root@localhost docker-compose_nginx]#vim docker-compose.yml

service:
  nginx:
    container_name: web
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1234:80
      - 4321:443
    networks:
      lnmp:
        ipv4_address: 172.19.0.10
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  mykysw:
    driver: bridge
    ipam:
      config:
        - subnet: 172.19.0.0/16

4.查看

[root@localhost docker-compose_nginx]#pwd
/opt/docker-compose_nginx
[root@localhost docker-compose_nginx]#tree
.
├── docker-compose.yml
├── nginx
│?? ├── Dockerfile
│?? ├── nginx-1.12.0.tar.gz
│?? └── run.sh
└── wwwroot
    └── index.html

2 directories, 5 files

 5.创建

6.验证

7.查看网络及IP地址 

 

3、部署docker-compose (nginx+tomcat)

1.docker-compose.yml

[root@localhost docker-compose_nginx]#vim docker-compose.yml 

version: '3'
services:
  nginx:
    container_name: web1
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1234:80
      - 4321:443
    networks:
      lnmp:
        ipv4_address: 172.19.0.10
    volumes:
      - ./wwwroot:/usr/local/nginx/html
  tomcat:
    container_name: web2
    hostname: tomcat
    build:
      context: ./tomcat
      dockerfile: Dockerfile
    ports:
      - 8080:8080
    networks:
      - lnmp:
networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.19.0.0/16

2.将前面得web停止并删除

[root@localhost docker-compose_nginx]#docker ps 
CONTAINER ID   IMAGE                        COMMAND                   CREATED       STATUS       PORTS                                                                            NAMES
822da62329dd   docker-compose_nginx_nginx   "/usr/local/nginx/sb…"   2 hours ago   Up 2 hours   0.0.0.0:1234->80/tcp, :::1234->80/tcp, 0.0.0.0:4321->443/tcp, :::4321->443/tcp   web
[root@localhost docker-compose_nginx]#docker stop web
web
[root@localhost docker-compose_nginx]#docker rm web
web

删除镜像

[root@localhost docker-compose_nginx]#docker images 
REPOSITORY                   TAG       IMAGE ID       CREATED        SIZE
docker-compose_nginx_nginx   latest    b53232cf8956   2 hours ago    569MB
php                          lnmp      3f352863e19b   23 hours ago   1.4GB
mysql                        lnmp      d446e4998a17   24 hours ago   10.1GB
nginx                        lnmp      97a40e10689a   27 hours ago   569MB
nginx                        latest    7383c266ef25   6 days ago     188MB
centos                       7         eeb6ee3f44bd   2 years ago    204MB
[root@localhost docker-compose_nginx]#docker rmi b53232cf8956
Untagged: docker-compose_nginx_nginx:latest
Deleted: sha256:b53232cf89565d4809d6580c40e6d410045a12baa2093c7c3dca8500fef25dd1
Deleted: sha256:c96b94b951f6995c3a08a511b4f9bcaf946d59e854abca693724a019acbea6c9
Deleted: sha256:b927f4590f300cd65ec3221b9207fca786121a9945f013647b95e35605d478e1
Deleted: sha256:fc083d1e4e5e001f971127691903c791b2d1e410845a7a80b3191e6daf9f3eed
Deleted: sha256:309a2811bf2be28b373a2f7ab9031288c3de2324c4baca43af9ee083f50762d2
Deleted: sha256:cb5cd75405984df005e991407e6f297ab6b8a4df9d9a0f5492aa2c286d1d3a8a
Deleted: sha256:6e4f5758bb520b355176a09f9ec1adb120ba16ba5b4cac476b53e552e9deab8c
Deleted: sha256:d847363fe07f07191510bb344f16fea90b08ad184bb197ad91a78f76e837af10
Deleted: sha256:cd279ee686dd81a052abb2186d350166829069738a969283b4605d28b7a029a2
Deleted: sha256:02b297343f9e6154cb5ae7cfd463329bbc5c6e571fc135d3489cabde6eba6b25
Deleted: sha256:f64bc769af5ded3de3938b2baf7259c6c3430921eb02a315199b17438c5370d4
Deleted: sha256:9fe95a817933ccaf72c14c51e28b6a83877fdacfee785b2f3b3850fcf54a0294
Deleted: sha256:f2ef02d8183a673b7645525021b8b43ba8291f06313ec4fd92352190f044bf20
Deleted: sha256:d9c98a6944c7f9b59c7f25ba49842af4152c4c467eae723f6a4b8f1fde210520
Deleted: sha256:ad949c056e1c32df2f31e55b4d58b448cecd0208e49cf04e8737dea9a9f0e28f
Deleted: sha256:fda4ed2dcf4c6b0413285f260eccdfa07bace68af94952220bca2f36d89feeb4

删除网路

[root@localhost docker-compose_nginx]#docker network list
NETWORK ID     NAME                        DRIVER    SCOPE
213c0b6bc77b   bridge                      bridge    local
0d33d51242cc   docker-compose_nginx_lnmp   bridge    local
74a43c49b8c6   host                        host      local
adf31dc63e2f   mynetwork                   bridge    local
71f04f9ad5e1   none                        null      local
[root@localhost docker-compose_nginx]#docker network rm docker-compose_nginx_lnmp
docker-compose_nginx_lnmp
[root@localhost docker-compose_nginx]#docker network list
NETWORK ID     NAME        DRIVER    SCOPE
213c0b6bc77b   bridge      bridge    local
74a43c49b8c6   host        host      local
adf31dc63e2f   mynetwork   bridge    local
71f04f9ad5e1   none        null      local

3.建立tomcat文件夹

[root@localhost docker-compose_nginx]#mkdir tomcat
[root@localhost docker-compose_nginx]#cd tomcat/
[root@localhost tomcat]#cp -r ../../apache-tomcat-8.5.16.tar.gz ./
[root@localhost tomcat]#cp -r ../../jdk-8u291-linux-x64.tar.gz ./
[root@localhost tomcat]#ls
apache-tomcat-8.5.16.tar.gz  jdk-8u291-linux-x64.tar.gz
[root@localhost tomcat]#vim Dockerfile
[root@localhost tomcat]#ls
apache-tomcat-8.5.16.tar.gz  Dockerfile  jdk-8u291-linux-x64.tar.gz

[root@localhost tomcat]#vim Dockerfile 

FROM centos:7
MAINTAINER this is tomcat images <hg>
ADD jdk-8u91-linux-x64.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv jdk1.8.0_91 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH $JAVA_HOME/bin:$PATH
ADD apache-tomcat-8.5.16.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv apache-tomcat-8.5.16 /usr/local/tomcat
EXPOSE 8080
#CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
CMD ["/usr/local/tomcat/bin/startup.sh","start"]

4.创建

[root@localhost docker-compose_nginx]#docker-compose -f docker-compose.yml up -d

5.查看容器及镜像

[root@localhost docker-compose_nginx]#docker ps 
CONTAINER ID   IMAGE                         COMMAND                   CREATED              STATUS              PORTS                                                                            NAMES
c89e55c7c012   docker-compose_nginx_tomcat   "/usr/local/tomcat/b…"   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                        web2
2efe6549806d   docker-compose_nginx_nginx    "/usr/local/nginx/sb…"   About a minute ago   Up About a minute   0.0.0.0:1234->80/tcp, :::1234->80/tcp, 0.0.0.0:4321->443/tcp, :::4321->443/tcp   web1
[root@localhost docker-compose_nginx]#docker-compose ps
Name              Command               State                                     Ports                                  
-------------------------------------------------------------------------------------------------------------------------
web1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:4321->443/tcp,:::4321->443/tcp,                                  
                                                0.0.0.0:1234->80/tcp,:::1234->80/tcp                                     
web2   /usr/local/tomcat/bin/cata ...   Up      0.0.0.0:8080->8080/tcp,:::8080->8080/tcp   

[root@localhost docker-compose_nginx]#docker images 
REPOSITORY                    TAG       IMAGE ID       CREATED         SIZE
docker-compose_nginx_tomcat   latest    30212342cf39   2 minutes ago   950MB
docker-compose_nginx_nginx    latest    9ac7efd323ca   2 minutes ago   569MB
php                           lnmp      3f352863e19b   23 hours ago    1.4GB
mysql                         lnmp      d446e4998a17   25 hours ago    10.1GB
nginx                         lnmp      97a40e10689a   27 hours ago    569MB
nginx                         latest    7383c266ef25   6 days ago      188MB
centos                        7         eeb6ee3f44bd   2 years ago     204MB

6.查看地址

[root@localhost docker-compose_nginx]#docker ps 
CONTAINER ID   IMAGE                         COMMAND                   CREATED         STATUS         PORTS                                                                            NAMES
c89e55c7c012   docker-compose_nginx_tomcat   "/usr/local/tomcat/b…"   4 minutes ago   Up 4 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                        web2
2efe6549806d   docker-compose_nginx_nginx    "/usr/local/nginx/sb…"   4 minutes ago   Up 4 minutes   0.0.0.0:1234->80/tcp, :::1234->80/tcp, 0.0.0.0:4321->443/tcp, :::4321->443/tcp   web1
[root@localhost docker-compose_nginx]#docker inspect c89e55c7c012 | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.19.0.2",

7.删除容器、网络、数据卷和镜像

[root@localhost docker-compose_nginx]#docker-compose -f docker-compose.yml down
Stopping web2 ... done
Stopping web1 ... done
Removing web2 ... done
Removing web1 ... done
Removing network docker-compose_nginx_lnmp
[root@localhost docker-compose_nginx]#docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost docker-compose_nginx]#docker network  list
NETWORK ID     NAME        DRIVER    SCOPE
213c0b6bc77b   bridge      bridge    local
74a43c49b8c6   host        host      local
adf31dc63e2f   mynetwork   bridge    local
71f04f9ad5e1   none        null      local
[root@localhost docker-compose_nginx]#docker images 
REPOSITORY                    TAG       IMAGE ID       CREATED         SIZE
docker-compose_nginx_tomcat   latest    30212342cf39   8 minutes ago   950MB
docker-compose_nginx_nginx    latest    9ac7efd323ca   8 minutes ago   569MB
php                           lnmp      3f352863e19b   24 hours ago    1.4GB
mysql                         lnmp      d446e4998a17   25 hours ago    10.1GB
nginx                         lnmp      97a40e10689a   27 hours ago    569MB
nginx                         latest    7383c266ef25   6 days ago      188MB
centos                        7         eeb6ee3f44bd   2 years ago     204MB
[root@localhost docker-compose_nginx]#

总结:

一、什么是Docker-compose

docker-cpmpose是实现在单机上完成容器集群编排的管理  单机容器编排

docker-compose。yml  compose模板文件

工程(项目)   project   LNMP

服务   nginx  mysql  php

容器   container  容器名  --name  主机名 -h  镜像  image:tag 端口  -p  网络  --network  数据卷  -v .......

使用 docker-compose 可以完成 多个 docker run 的所有操作

二、使用Docker-compose注意事项:

大小写敏感
通过缩进表示层级关系
不支持制表符 tab 键缩进,只能使用空格缩进
缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
用 # 号注释
符号字符后缩进1个空格,如冒号 :  、逗号 ,  、横杠 -    
如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思

三、Docker-compose 配置的字段

字段                               		描述
build                              		指定 Dockerfile 文件名,
										要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定
dockerfile                         		构建镜像上下文路径
context                            		可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址
image                              		指定镜像
command:                          		执行命令,覆盖容器启动后默认执行的命令
container_name                     		指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量
deploy                             		指定部署和运行服务相关配置,只能在 Swarm 模式使用
environment                        		添加环境变量
networks                           		加入网络,引用顶级networks下条目
network_mode							设置容器的网络模式,如 host,bridge,...
ports                              		暴露容器端口,与 -p 相同,但端口不能低于 60
volumes                            		挂载一个宿主机目录或命令卷到容器,命名卷要在顶级 volumes 定义卷名称
volumes_from							从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本 '2' 支持
hostname                           		容器主机名
sysctls									在容器内设置内核参数
links									连接到另外一个容器,- 服务名称[:服务别名]
privileged								用来给容器root权限,注意是不安全的,true | false
restart                            		设置重启策略,no,always,nounless-st-failure,oped
										no,默认策略,在容器退出时不重启容器。
										on-failure,在容器非正常退出时(退出状态非0),才会重启容器。
										on-failure:3,在容器非正常退出时重启容器,最多重启3次。
										always,在容器退出时总是重启容器。
										unless-stopped,在容器退出的容器时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了。

四、docker-compose 基本命令

字段                    					    描述
build                   					重新构建服务
ps                      					列出容器
up                      					创建和启动容器	
exec                    					在容器里面执行命令
scale                   					指定一个服务容器启动数量
top                     					显示容器进程
logs                    					查看容器输出
down                    					删除容器、网络、数据卷和镜像
stop/start/restart      					停止/启动/重启服务

五、案例执行操作

1、nginx

2、nginx+tomcat

等等

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值