Docker研学-Docker常用命令

学习自b站狂神说Docker: https://www.bilibili.com/video/BV1og4y1q7M4/?spm_id_from=333.337.search-card.all.click

帮助命令

docker version           #显示docker的版本信息
docker info              #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help        #帮助命令 例:docker images --help

镜像命令

docker images,查看所有本地主机上的镜像

[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    9c7a54a9a43c   5 months ago   13.3kB

#解释
REPOSITORY 镜像的仓库源(名字)通过源下载运行
TAG        镜像的版本标签信息
IMAGE ID   镜像的ID
CREATED    镜像的创建时间
SIZE       镜像的大小

#可选项
  -a, --all             列出所有的镜像
      --digests         格式化
  -f, --filter filter   过滤
  -q, --quiet           只显示镜像的id
  -aq                   显示所有镜像的id
也可以通过docker search搜索镜像
[root@localhost ~]# docker search mysql
NAME     DESCRIPTION                                   STARS  OFFICIAL  AUTOMATED
mysql    ySQL is a widely used, open-source relation…   14509   [OK]       
mariadb  MariaDB Server is a high performing open sou…  5537    [OK]  

#可选项 通过filter搜索STARS进行过滤
  -f, --filter         
      --format 
      --limit 
      --no-trunc   
#通过filter搜索STARS进行过滤,搜索出来的镜像就是STARS大于3000的
docker search mysql --filter=STARS=3000
docker pull下载镜像
#下载指定版本镜像 docker pull 镜像名[:tag]
[root@localhost ~]# docker pull mysql
Using default tag: latest           #不写tag,默认下载最新的版本
latest: Pulling from library/mysql
72a69066d2fe: Pull complete         #分层下载,镜像的核心,联合文件系统
93619dbc5b36: Pull complete 
99da31dd6142: Pull complete 
626033c43d70: Pull complete 
37d5d7efb64e: Pull complete 
ac563158d721: Pull complete 
d2ba16033dad: Pull complete 
688ba7d5c01a: Pull complete 
00e060b6d11d: Pull complete 
1c04857f594f: Pull complete 
4d7cfa90e6ea: Pull complete 
e0431212d27d: Pull complete 
#签名
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest      #真实地址
#docker pull mysql 等价于docker pull docker.io/library/mysql:latest 

#指定版本下载,分层下载可以共用相同的部分(需要下载的部分已经存在,可直接共用不需再次下载)
[root@localhost ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql     #tag指定的版本号必须存在,不然会找不到
72a69066d2fe: Already exists        #分层下载的共用部分,极大的节省内存(联合文件系统)
93619dbc5b36: Already exists 
99da31dd6142: Already exists 
626033c43d70: Already exists 
37d5d7efb64e: Already exists 
ac563158d721: Already exists 
d2ba16033dad: Already exists 
0ceb82207cd7: Pull complete 
37f2405cae96: Pull complete 
e2482e017e53: Pull complete 
70deed891d42: Pull complete 
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
docker rmi 删除镜像(rm是删除i是镜像)-f就是全部删掉
#可以通过镜像id或名称删除(根据id删除IMAGE ID(docker images查看))
[root@localhost ~]# docker rmi -f c20987f18b13
Untagged: mysql:5.7   #两个mysql共有的部分没有删除,不影响另一个mysql的使用
Untagged:mysql@sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Deleted: sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76
Deleted: sha256:6567396b065ee734fb2dbb80c8923324a778426dfd01969f091f1ab2d52c7989
Deleted: sha256:0910f12649d514b471f1583a16f672ab67e3d29d9833a15dc2df50dd5536e40f
Deleted: sha256:6682af2fb40555c448b84711c7302d0f86fc716bbe9c7dc7dbd739ef9d757150
Deleted: sha256:5c062c3ac20f576d24454e74781511a5f96739f289edaadf2de934d06e910b92
#删除多个镜像
[root@localhost ~]# docker rmi -f 镜像id 镜像id           #空格分隔
#删除全部镜像 $相当于变量替换 $()是执行()中的命令
[root@localhost ~]# docker rmi -f $(docker images -aq)  #aq会显示所有镜像ID

容器命令

有了镜像才可以创建容器
docker pull centos             #下载centos镜像来测试,用docker跑centos,比虚拟机快
新建容器并启动 run命令
docker run [可选参数] image

#参数说明
--name="Name"                  给容器起名字,区分容器
-d                             后台方式运行
-it                            使用交互方式运行,进入容器查看内容
-p                             指定容器端口 -p 8080:8080 可跟主机映射
小写p的四种指定端口使用方式
	-p ip:主机端口:容器端口       通过ip指定主机
	-p 主机端口:容器端口 (常用)    主机端口映射容器端口
	-p 容器端口                  不往外走
	容器端口                     不往外走的简写
-P                             大写p,随机指定端口

#测试,启动并进入容器,linux中控制台一般都在bin目录下默认是bash命令,it是交互运行进入容器
#linux@后面跟的是主机名称,启动centos后主机名变成里面的(主机名就是镜像id)
[root@localhost ~]# docker run -it centos /bin/bash
[root@709eadff642c /]

#此刻使用ls命令,会发现与外面的目录一样(他就是一个小型的服务器)
[root@709eadff642c /]# ls            #查看容器内的centos
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr

#内部的centos与外部的centos此刻没有关系,且内部的基础版本有些命令是不完善的
[root@localhost /]# ls
aa.txt  boot  etc   lib    mao2   mnt  proc  run   srv  tmp  var
bin     dev   home  lib64  media  opt  root  sbin  sys  usr
列出所用运行中的容器
#linux中命令为ps
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

#ps -a 查看曾经运行过的docker
[root@localhost /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND     CREATED      STATUS         PORTS     NAMES
709eadff642c   centos  "/bin/bash"   4 hours ago   Exited (0) 4 hours ago              interesting_montalcini
9311225633dd   9c7a54a9a43c  "/hello" 30 hours ago  Exited (0) 30 hours ago             jovial_wescoff

#可选项
        #不加可选项,列出当前正在运行的容器
-a      #列出当前正在运行的容器+带出历史运行过的容器
-n      #显示最近创建的容器(n表示显示最近创建的几个容器)
-q      #只显示容器的编号

[root@localhost /]# docker ps -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED     STATUS     PORTS     NAMES
709eadff642c   centos    "/bin/bash"   4 hours ago   Exited (0) 4 hours ago          interesting_montalcini

[root@localhost /]# docker ps -aq
709eadff642c
9311225633dd
退出容器
#可用exit命令退出,容器停止并退出
[root@709eadff642c /]# exit         #从容器退回主机

#容器不停止退出,快捷键
Ctrl+p+q
删除容器 docker rm
#根据容器id删除,正运行的容器不能直接删除,想强制删除的话用rm -f
[root@localhost /]# docker rm 709eadff642c        #docker rm 容器id
709eadff642c

#查出所有容器的id,递归删除
[root@localhost /]# docker rm -f $(docker ps -aq) #docker rm -f $(docker ps -aq)
31ef53717ba5
9311225633dd

#查询容器(删掉了)
[root@localhost /]# docker ps -aq

#通过管道符删除所有的容器,|符号前面查询出所有的容器id,通过管道过滤到后面,xargs表示一个一个删除,想强制删除需要添加可选项 -f
docker ps -a -q|xargs docker rm
启动和停止容器
docker start 容器id        #启动容器,将停止的容器启动
docker restart 容器id      #重启容器
docker stop 容器id         #停止当前正在运行的容器
docker kill 容器id         #删除容器,杀掉容器,停止容器时报错,就杀掉容器

常用其他命令

后台启动容器
#命令 docker run -d 镜像名   通过镜像启动容器 centos会返回一个容器id
[root@localhost /]# docker run -d centos
2ec964f63fea3cb47a4cff3ef5b026385ac5b01475c27c7cfd6d2ff233c0f7c2

#问题 docker ps时发现 centos停止了

#常见的坑:docker 容器使用后台运行,就必须有一个前台进程,docker发现没有应用(前台或对外提供服务的应用),就会自动停止

# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志
docker logs -tf --tail 10 容器id  #看10条

#编写一段shell脚本 -c后""写脚本命令while循环 echo输出 sleep 2秒一次 done结束
#-c 选项表示执行完指定的命令后退出
[root@localhost /]# docker run -d centos /bin/sh -c "while true;do echo hailong;sleep 2;done"
6446b1e5a276018b70e115b26d12184dcf9e71736e2d92d972f53ca816fced6e

#获得对应的容器id
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND             
6446b1e5a276   centos  "/bin/sh -c 'while t…"  

#显示最新10条日志  日志会不断打印  需要自行停止  不加--tail可以看全部的(很长)
[root@localhost /]# docker logs -tf --tail 10 6446b1e5a276
2023-10-13T12:27:32.845011005Z hailong
2023-10-13T12:27:34.847369477Z hailong
2023-10-13T12:27:36.850235369Z hailong
2023-10-13T12:27:38.853815674Z hailong
2023-10-13T12:27:40.856302752Z hailong
2023-10-13T12:27:42.857911042Z hailong
2023-10-13T12:27:44.861803751Z hailong
2023-10-13T12:27:46.864541350Z hailong
2023-10-13T12:27:48.865989279Z hailong
2023-10-13T12:27:50.869053649Z hailong
2023-10-13T12:27:52.873051121Z hailong
2023-10-13T12:27:54.876314028Z hailong
2023-10-13T12:27:56.880619504Z hailong

#可选项
-tf                #显示日志 f是时间戳
--tail number      #要显示的日志条数
查看容器中的进程信息ps
#top命令  docker top 容器id
[root@localhost /]# docker top 3352eb56440e
UID       PID           PPID       C           STIME               TTY                 
root      5561          5542       0           21:44               ?
root      5610          5561       0           21:44               ?

#UID是当前用户id PID是父id PPID是进程id
查看镜像的元数据-镜像中到底有什么数据
#显示容器所有信息,容器的镜像id只是全路径id的一段缩写,他的创建时间,他的控制台,他所传递的参数,他当前的一些状态信息,进程id,来自那个镜像(路径地址等),主机的配置,Mounts挂载,Config基本配置,Hostname默认的容器名字,Env对应的基本环境变量(没有java),NetworkSettings关于网络的一些命令,Networks的bridge表示当前是一个桥接的网卡
#inspect命令 docker inspect 容器id
[root@localhost /]# docker inspect 3352eb56440e
[
    {#容器的镜像id只是全路径id的一段缩写
        "Id": "3352eb56440e0150e04ebf4c64cae60f0802bef0e25896e964cfe0629a8d1d19",
        "Created": "2023-10-13T13:44:16.127434021Z",     他的创建时间
        "Path": "/bin/sh",                               他的控制台
        "Args": [                                        他所传递的参数
            "-c",
            "while true;do echo hailong;sleep 2;done"
        ],
        "State": {                                       他当前的一些状态信息
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 5561,                                 进程id
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2023-10-13T13:44:16.311501651Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },                                              来自那个镜像(路径地址等)
        "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
        "ResolvConfPath": "/var/lib/docker/containers/3352eb56440e0150e04ebf4c64cae60f0802bef0e25896e964cfe0629a8d1d19/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/3352eb56440e0150e04ebf4c64cae60f0802bef0e25896e964cfe0629a8d1d19/hostname",
        "HostsPath": "/var/lib/docker/containers/3352eb56440e0150e04ebf4c64cae60f0802bef0e25896e964cfe0629a8d1d19/hosts",
        "LogPath": "/var/lib/docker/containers/3352eb56440e0150e04ebf4c64cae60f0802bef0e25896e964cfe0629a8d1d19/3352eb56440e0150e04ebf4c64cae60f0802bef0e25896e964cfe0629a8d1d19-json.log",
        "Name": "/confident_ellis",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {                                           主机的配置
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                21,
                112
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": [],
            "BlkioDeviceWriteBps": [],
            "BlkioDeviceReadIOps": [],
            "BlkioDeviceWriteIOps": [],
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/e3fe1505f12eaed1efcdaf513eacb27d6503c8d78ee816897bbe0ae75cf03aba-init/diff:/var/lib/docker/overlay2/e1dcf13f8691bff419d433a796d8cf41402cf2ad9a77cba5c7b41813f6c6f245/diff",
                "MergedDir": "/var/lib/docker/overlay2/e3fe1505f12eaed1efcdaf513eacb27d6503c8d78ee816897bbe0ae75cf03aba/merged",
                "UpperDir": "/var/lib/docker/overlay2/e3fe1505f12eaed1efcdaf513eacb27d6503c8d78ee816897bbe0ae75cf03aba/diff",
                "WorkDir": "/var/lib/docker/overlay2/e3fe1505f12eaed1efcdaf513eacb27d6503c8d78ee816897bbe0ae75cf03aba/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],                                        Mounts挂载卷
        "Config": {                                          Config基本配置,
            "Hostname": "3352eb56440e",                      Hostname默认的容器名字,
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [                                        Env对应的基本环境变量(没配java)"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "while true;do echo hailong;sleep 2;done"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20210915",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "NetworkSettings": {                        NetworkSettings关于网络的一些命令
            "Bridge": "",                           
            "SandboxID": "95ee6a3d198ba3136547611edada0fa2c5ccfa73af60cfa004276d26207d37fb",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/95ee6a3d198b",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "7cec52df4776c7b8095d67c85e2cde4f1e4e3920500736af9ea6e4a370e8bbf2",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {                           Networks的bridge表示当前是一个桥接的网卡
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "6a38e9f313f9d19efea658d1b5af340df85520097a05c800d589f33407f6489d",
                    "EndpointID": "7cec52df4776c7b8095d67c85e2cde4f1e4e3920500736af9ea6e4a370e8bbf2",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]
进入当前正在运行的容器
#通常容器都是使用后台方式运行的,需要进入容器,修改一些配置

#exec(执行)命令,交互模式执行,bashshell(默认命令行),shell脚本解释器的路径
docker exec -it 容器id bashshell

[root@localhost ~]# docker exec -it 7de84a897a01 /bin/bash
[root@7de84a897a01 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@7de84a897a01 /]# ps -ef
UID         PID   PPID  C STIME
root          1      0  0 01:59
root         64      0  0 02:01 
root         83     64  0 02:01 
root         84      1  0 02:01 
[root@7de84a897a01 /]# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE 
7de84a897a01   centos  

#方式二 attach (死循环的代码退不出去)
docker attach 容器id

[root@localhost ~]# docker attach 7de84a897a01
正在执行的代码

#docker exec       #进入容器后开一个新的终端,可以在里面操作(常用),exit退出,容器也不会停止
#docker attach     #进入容器正在执行的终端,不会启动新的进程,用exit退出,容器会停止运行!如果想退出容器但不想容器停止,则按住Ctrl+P+Q退出
#区别:是否开启一个新的线程

从容器内拷贝文件到主机上

docker cp 容器id:容器内路径 目的地主机路径

#运行容器 于容器的home中创建文件 退出 容器停止了但数据还在
[root@localhost ~]# docker run -it centos /bin/bash
[root@240ff269e79b /]# cd /home
[root@240ff269e79b home]# touch hailong.java
[root@240ff269e79b home]# exit

#将容器中创建的文件拷贝出来
[root@localhost home]# docker cp 240ff269e79b:/home/hailong.java /home
Successfully copied 1.54kB to /home
[root@localhost home]# ls
hailong.java

#拷贝是一个手动过程,未来可以使用-v卷的技术实现自动同步,将容器的home目录和主机的home目录打通

小结

在这里插入图片描述

attach     #当前shell下attach连接指定运行镜像
build      #通过Dockerfile定制镜像
commit     #提交当前容器为新的镜像
cp         #从容器中拷贝指定文件或者目录到宿主机中
create     #创建一个新的容器,同run 但不启动容器
diff       #查看docker容器变化
events     #从docker服务获取容器实时事件
exec       #在已存在的容器上运行命令
export     #导出容器的内容流作为一个tar归档文件(对应import)
history    #展示一个镜像形成历史
images     #列出系统当前镜像
import     #从tar包中的内容创建一个新的文件系统映像(对应export)
info       #显示系统相关信息
inspect    #查看容器详细信息
kill       #kill指定docker容器
load       #从一个tar包中加载一个镜像(对应save)
login      #注册或者登陆一个docker源服务器
logout     #从当前Docker registry退出
logs       #输出当前容器日志信息
pause      #暂停容器
port       #查看映射端口对应的容器内部源端口
ps         #列出容器列表
pull       #从docker镜像源服务器拉取指定镜像或者库镜像
push       #推送指定镜像或者库镜像至docker源服务器
rename     #重命名容器
restart    #重启运行的容器
rm         #移除一个或者多个容器
rmi        #移除一个或多个镜像(无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或者-f强制删除)
run        #创建一个新的容器并运行一个命令
save       #保存一个镜像为一个tar包(对应load)
search     Search the Docker Hub for images  #在dockerhub中搜索镜像
start      Start one or more stopped containers#启动容器
stats      #统计容器使用资源
stop       #停止容器
tag        #给源中镜像打标签
top        #查看容器中运行的进程信息
unpause    #取消暂停容器
version    #查看容器版本号
wait       #截取容器停止时的退出状态值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰勒疯狂展开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值