资深专家都知道的Docker常用命令

开发人员一直在努力提高Docker的使用率和性能,命令也在不停变化。Docker命令经常被弃用,或被替换为更新且更有效的命令,本文总结了近年来资深专家最常用的命令列表并给出部分使用方法。

\n

目前,Docker共有13个管理命令和41个通用命令,以下是常用Docker命令列表:

\n
  • \n
  • docker help—检查最新Docker可用命令;\n
  • docker attach—将本地输入、输出、错误流附加到正在运行的容器;\n
  • docker commit—从当前更改的容器状态创建新镜像;\n
  • docker exec—在活动或正在运行的容器中运行命令;\n
  • docker history—显示镜像历史记录;\n
  • docker info—显示系统范围信息;\n
  • docker inspect—查找有关docker容器和镜像的系统级信息;\n
  • docker login—登录到本地注册表或Docker Hub;\n
  • docker pull—从本地注册表或Docker Hub中提取镜像或存储库;\n
  • docker ps—列出容器的各种属性;\n
  • docker restart—停止并启动容器;\n
  • docker rm—移除容器;\n
  • docker rmi—删除镜像;\n
  • docker run—在隔离容器中运行命令;\n
  • docker search—在Docker Hub中搜索镜像;\n
  • docker start—启动已停止的容器;\n
  • docker stop—停止运行容器;\n
  • docker version—提供docker版本信息。\n
\n

查找Docker版本和系统信息

\n

无论是在本地还是云端,我们都需要检查Docker版本和系统信息,可以使用以下命令找到Docker版本:

\n
$ docker version\nClient:\nVersion: 18.03.0-ce\nAPI version: 1.37\nGo version: go1.9.4\nGit commit: 0520e24\nBuilt: Wed Mar 21 23:06:22 2018\nOS/Arch: darwin/amd64\nExperimental: false\nOrchestrator: swarm\nServer:\nEngine:\nVersion: 18.03.0-ce\nAPI version: 1.37 (minimum version 1.12)\nGo version: go1.9.4\nGit commit: 0520e24\nBuilt: Wed Mar 21 23:14:32 2018\nOS/Arch: linux/amd64\nExperimental: true\n
\n

另一个重要命令是docker info:

\n
$ docker info\nContainers: 0\nRunning: 0\nPaused: 0\nStopped: 0\nImages: 0\nServer Version: 18.03.0-ce\nStorage Driver: overlay2\nBacking Filesystem: extfs\nSupports d_type: true\nNative Overlay Diff: true\nLogging Driver: json-file\nCgroup Driver: cgroupfs\nPlugins:\nVolume: local\nNetwork: bridge host ipvlan macvlan null overlay\nLog: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog\n…\n
\n

该命令将显示部分设备信息,比如服务器版本、存储驱动程序、内核版本、操作系统、总内存等。当尝试为当前Docker安装启动新资源或尝试找出系统级资源分配问题时,这些信息非常有用,这也是检查运行、停止容器数量及下载镜像数量的快速方法。

\n

搜索下载Docker镜像

\n

可以使用docker search命令在Docker Hub搜索已有镜像:

\n
$ docker search ubuntu\nNAME DESCRIPTION STARS OFFICIAL AUTOMATED\nubuntu Ubuntu is a Debian-based Linux operating sys… 7861 [OK]\ndorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 190 [OK]\nrastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 156 [OK]\nansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 93 [OK]\nubuntu-upstart Upstart is an event-based replacement for th… 87 [OK]\nneurodebian NeuroDebian provides neuroscience research s… 50 [OK]\n…\n
\n

以上对ubuntu的搜索显示可用镜像、描述和官方状态等信息。如果要下载ubuntu镜像,可以使用docker pull命令:

\n
$ docker pull ubuntu\nUsing default tag: latest\nlatest: Pulling from library/ubuntu\n6b98dfc16071: Pull complete\n4001a1209541: Pull complete\n6319fc68c576: Pull complete\nb24603670dc3: Pull complete\n97f170c87c6f: Pull complete\nDigest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d\nStatus: Downloaded newer image for ubuntu:latest\n$\n
\n

Docker镜像

\n

使用docker info命令查找拥有镜像数量:

\n
$ docker info\nContainers: 0\nRunning: 0\nPaused: 0\nStopped: 0\nImages: 1\n…\n
\n

docker images命令可详细列出拥有镜像:

\n
$ docker images\nREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE\nubuntu              latest              113a43faa138        2 weeks ago         81.2MB\n
\n

假设下载NGINX镜像,可以运行docker pull命令:

\n
$ docker pull nginx\n
\n

如果检查Docker镜像,会看到如下内容:

\n
$ docker images\nREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE\nubuntu              latest              113a43faa138        2 weeks ago         81.2MB\nnginx               latest              cd5239a0906a        2 weeks ago         109MB\n
\n

如果寻找Ubuntu 16.04版本,可使用16.04标签下载特定版本:

\n
$ docker pull ubuntu:16.04\n
\n

随后,将出现两个Ubuntu映像版本:

\n
$ docker images\nREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE\nubuntu              16.04               5e8b97a2a082        2 weeks ago         114MB\nubuntu              latest              113a43faa138        2 weeks ago         81.2MB\nnginx               latest              cd5239a0906a        2 weeks ago         109MB\n
\n

注意:无需注册Docker Hub即可提取镜像。如果想将镜像推送到Docker Hub,需要注册然后使用docker login命令登录:

\n
$ docker login --username=yourhubusername --email=youremail@company.com\n
\n

运行镜像的Docker容器

\n

假设想在docker上运行NGINX服务器,可运行以下命令:

\n
$ docker run -p 8080:80 nginx\n
\n

如果已用run命令从Docker Hub提取nginx映像创建NGINX容器。 -p 8080:80会告诉Docker将localhost端口8080映射到Docker容器端口80,应该能够从http:// localhost:8080访问NGINX服务器。

\n

NGINX容器已附加到命令行。如果退出命令行,容器将会停止,可使用detach(’-  d)启动NGINX容器,这样即使退出命令行也可继续运行。

\n
$ docker run -p 8080:80 -d nginx\n
\n

以上命令将以分离模式启动容器并返回命令行。

\n

使用docker ps命令列出Docker容器

\n

docker ps命令允许查找正在运行的所有容器:

\n
$ docker ps\nCONTAINER ID         IMAGE         COMMAND         CREATED           STATUS          PORTS             NAMES\n6162daed25da         nginx  \u0026quot;nginx -g 'daemon of…\u0026quot; 7 minutes ago   Up 7 minutes  0.0.0.0:8080-\u0026gt;80/tcp  hardcore_torvalds\n
\n

如上显示容器的各种属性,可以看到是从nginx镜像创建并显示端口转发信息。CONTAINER ID和NAMES属性需要特别提及,可以使用上述两大属性唯一标识容器。二者都可自动生成,但也可在容器创建过程中为容器命名。
\n创建一个名为my_nginx的NGINX容器:

\n
$ docker run --name my_nginx -p 8888:80 -d nginx\n
\n

再次列出所有Docker容器:

\n
$ docker ps\nCONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                  NAMES\ne7b19b6ad778        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   About a minute ago   Up About a minute   0.0.0.0:8888-\u0026gt;80/tcp   my_nginx\n6162daed25da        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   15 minutes ago       Up 16 minutes       0.0.0.0:8080-\u0026gt;80/tcp   hardcore_torvalds\n
\n

请注意,新容器的名称为“my_nginx”。 处理大量容器时,可以使用命名约定,这可以更好得组织容器。
\ndocker ps命令仅显示正在运行的容器。如果对上述情况使用docker info命令:

\n
$ docker info\nContainers: 2\nRunning: 2\nPaused: 0\nStopped: 0\nImages: 3\n
\n

可以看到有两个容器正在运行,如果一个暂停或已停止,则不会仅使用docker ps命令查看这些容器,必须使用all( -  a)选项:

\n
$ docker ps -a\n
\n

启动,停止,重启和杀死容器

\n

假设要停止’my_nginx’容器,可使用CONTAINER ID或NAME。

\n
$ docker stop my_nginx\nmy_nginx\n
\n

列出Docker容器:

\n
$ docker ps\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES\n6162daed25da        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   27 minutes ago      Up 27 minutes       0.0.0.0:8080-\u0026gt;80/tcp   hardcore_torvalds\n$ docker ps -a\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS                  NAMES\ne7b19b6ad778        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   12 minutes ago      Exited (0) About a minute ago                          my_nginx\n6162daed25da        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   27 minutes ago      Up 27 minutes                   0.0.0.0:8080-\u0026gt;80/tcp   hardcore_torvalds\n
\n

如果在没有-a选项的情况下运行docker ps,只显示正在运行的容器。在第二种情况下,可以看到’my_nginx’容器处于退出状态。

\n

让我们docker start  容器:

\n
$ docker start my_nginx\nmy_nginx\n
\n

检查Docker容器列表:

\n
$ docker ps\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES\ne7b19b6ad778        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   16 minutes ago      Up 29 seconds       0.0.0.0:8888-\u0026gt;80/tcp   my_nginx\n6162daed25da        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   30 minutes ago      Up 30 minutes       0.0.0.0:8080-\u0026gt;80/tcp   hardcore_torvalds\n
\n

可以看到STATUS显示容器’my_nginx’再次被启动。
\n如果由于某些问题而需重启容器,则可使用restart命令,这比单独停止和启动容器速度更快:

\n
$ docker restart my_nginx\n
\n

可以像进程一样终止docker容器,比如终止my_nginx容器:

\n
$ docker kill my_nginx\n
\n

再次列出Docker容器:

\n
$ docker ps -a\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS                  NAMES\ne7b19b6ad778        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   22 minutes ago      Exited (137) 7 seconds ago                          my_nginx\n6162daed25da        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   36 minutes ago      Up 36 minutes                0.0.0.0:8080-\u0026gt;80/tcp   hardcore_torvalds\n
\n

容器my_nginx未运行。此外,可在信息中看到一个正在运行的容器和一个已停止容器:

\n
$ docker info\nContainers: 2\nRunning: 1\nPaused: 0\nStopped: 1\nImages: 3\n…\n
\n

Docker Exec Bash和Docker SSH

\n

如果需要与shell进行交互以创建服务或解决问题,可以使用docker exec命令创建交互式shell。比如,用bash shell从ubuntu映像启动一个容器:

\n
$ docker run --name my_ubuntu -it ubuntu:latest bash\nroot@a19c770b8621:/#\n
\n

root @haracle#表示位于Docker容器的bash shell中,可以运行shell命令:

\n
root@a19c770b8621:/# ls\nbin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var\nroot@a19c770b8621:/# pwd\n/\n
\n

列出Docker容器:

\n
$ docker ps\nCONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                  NAMES\na19c770b8621        ubuntu:latest       \u0026quot;bash\u0026quot;                   About a minute ago   Up About a minute                          my_ubuntu\n6162daed25da        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   About an hour ago    Up About an hour    0.0.0.0:8080-\u0026gt;80/tcp   hardcore_torvalds\n
\n

如上,my_ubuntu正在运行。假设想将Docker ssh放入’my_ubuntu’容器中,可以使用docker exec bash:

\n
$ docker exec -it my_ubuntu bash\nroot@a19c770b8621:/#\n
\n

使用docker exec向容器发出命令。例如,可以直接用命令提示符在my_ubuntu容器上运行ls命令:

\n
$ docker exec -it my_ubuntu ls\nbin dev home lib64 mnt proc run srv tmp var\nboot etc lib media opt root sbin sys usr\n
\n

以分离模式启动容器并使用docker attach

\n

以上示例用附加模式启动ubuntu容器,我们也可在分离模式下启动:

\n
$ docker run -it -d --name my_ubuntu_2 ubuntu:latest bash\n75b28b7208359137b3e1dc2843387918e28b4c6c4860ef0cdeac79c205f5cbc4\n
\n

验证容器是否正在运行:

\n
$ docker ps\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES\n75b28b720835        ubuntu:latest       \u0026quot;bash\u0026quot;                   3 minutes ago       Up 3 minutes                               my_ubuntu_2\na19c770b8621        ubuntu:latest       \u0026quot;bash\u0026quot;                   15 minutes ago      Up 15 minutes                              my_ubuntu\n6162daed25da        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   2 hours ago         Up 2 hours          0.0.0.0:8080-\u0026gt;80/tcp   hardcore_torvalds\n
\n

使用docker attach命令获取docker exec bash-like效果:

\n
$ docker attach my_ubuntu_2\nroot@75b28b720835:/#\n
\n

检查Docker镜像历史

\n

Docker社区镜像是分层创建的,可使用Docker history命令查看镜像创建方式。先看看有哪些镜像:

\n
$ docker images\nREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE\nubuntu              16.04               5e8b97a2a082        2 weeks ago         114MB\nubuntu              latest              113a43faa138        2 weeks ago         81.2MB\nnginx               latest              cd5239a0906a        2 weeks ago         109MB\n
\n

查看nginx镜像历史:

\n
$ docker history nginx\nIMAGE               CREATED             CREATED BY                                      SIZE                COMMENT\ncd5239a0906a        2 weeks ago         /bin/sh -c #(nop)  CMD [\u0026quot;nginx\u0026quot; \u0026quot;-g\u0026quot; \u0026quot;daemon…   0B                  \n\u0026lt;missing\u0026gt;           2 weeks ago         /bin/sh -c #(nop)  STOPSIGNAL [SIGTERM]         0B                  \n\u0026lt;missing\u0026gt;           2 weeks ago         /bin/sh -c #(nop)  EXPOSE 80/tcp                0B                  \n\u0026lt;missing\u0026gt;           2 weeks ago         /bin/sh -c ln -sf /dev/stdout /var/log/nginx…   22B                 \n\u0026lt;missing\u0026gt;           2 weeks ago         /bin/sh -c set -x  \u0026amp;\u0026amp; apt-get update  \u0026amp;\u0026amp; apt…   53.7MB              \n\u0026lt;missing\u0026gt;           2 weeks ago         /bin/sh -c #(nop)  ENV NJS_VERSION=1.15.0.0.…   0B                  \n\u0026lt;missing\u0026gt;           2 weeks ago         /bin/sh -c #(nop)  ENV NGINX_VERSION=1.15.0-…   0B                  \n\u0026lt;missing\u0026gt;           7 weeks ago         /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B                  \n\u0026lt;missing\u0026gt;           8 weeks ago         /bin/sh -c #(nop)  CMD [\u0026quot;bash\u0026quot;]                 0B                  \n\u0026lt;missing\u0026gt;           8 weeks ago         /bin/sh -c #(nop) ADD file:ec5be7eec56a74975…   55.3MB\n
\n

使用镜像历史命令查找最近更改,如果在新版本镜像中发现问题,则此命令可帮助找到原因,也可用以下命令:

\n
$ docker image history nginx\n
\n

Docker检查容器

\n

可以使用docker inspect命令查找有关系统的信息,运行docker ps命令列出Docker容器:

\n
$ docker ps\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES\n6162daed25da        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   2 hours ago         Up 2 hours          0.0.0.0:8080-\u0026gt;80/tcp   hardcore_torvalds\n
\n

使用CONTAINER ID检查容器(也可使用容器名称):

\n
$ docker inspect 6162daed25da\n[\n{\n\u0026quot;Id\u0026quot;: \u0026quot;6162daed25da50b98afca5f7ed8caca2289bf309b2547d87ae8674b899d604a4\u0026quot;,\n\u0026quot;Created\u0026quot;: \u0026quot;2018-06-25T05:46:37.902211302Z\u0026quot;,\n\u0026quot;Path\u0026quot;: \u0026quot;nginx\u0026quot;,\n\u0026quot;Args\u0026quot;: [\n…\n…\n…\n\u0026quot;DriverOpts\u0026quot;: null\n}\n}\n}\n}\n]\n
\n

该命令将以JSON格式提供大量信息,以下是查找容器IP地址的技巧:

\n
$ docker inspect 6162daed25da | grep \u0026quot;IPAddress\u0026quot;\n            \u0026quot;SecondaryIPAddresses\u0026quot;: null,\n            \u0026quot;IPAddress\u0026quot;: \u0026quot;172.17.0.2\u0026quot;,\n                    \u0026quot;IPAddress\u0026quot;: \u0026quot;172.17.0.2\u0026quot;,\n
\n

使用docker cp将文件从本地复制到容器

\n

再次列出Docker容器:

\n
$ docker ps\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES\n6162daed25da        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   3 hours ago         Up 3 hours          0.0.0.0:8080-\u0026gt;80/tcp   hardcore_torvalds\n
\n

NGINX容器在端口8080上运行。因此,如果转到http:// localhost:8080,将看到以下内容:

\n
\u0026quot;Welcome to nginx!\u0026quot;\n
\n

如果看到此页面,则nginx Web服务器已成功安装并正常运行,需要进一步配置。
\n首先,在本地目录中创建index.html:

\n
\u0026lt;html\u0026gt;\n\u0026lt;Header\u0026gt;\u0026lt;title\u0026gt;My Website\u0026lt;/title\u0026gt;\u0026lt;/header\u0026gt;\n\u0026lt;body\u0026gt;\nHello world\n\u0026lt;/body\u0026gt;\n\u0026lt;/html\u0026gt;\n
\n

使用带有ls的docker exec命令检查NGINX容器中具有index.html的文件夹:

\n
$ docker exec -it hardcore_torvalds ls /usr/share/nginx/html\n50x.html index.html\n
\n

使用创建的本地文件覆盖容器index.html文件:

\n
$ docker cp index.html hardcore_torvalds:usr/share/nginx/html/\n
\n

如果再次检查http://localhost:8080,应该可以看到问候语“Hello world”。
\n可使用docker cp命令在本地计算机和创建容器间移动文件,此方法可用于覆盖配置文件。

\n

创建Docker镜像

\n

如果想复制更多“Hello World”容器,必须将当前容器保存为镜像。
\n首先,停止容器:

\n
$ docker stop hardcore_torvalds\n
\n

列出所有Docker容器:

\n
$ docker ps -a\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES\n75b28b720835        ubuntu:latest       \u0026quot;bash\u0026quot;                   About an hour ago   Exited (0) About an hour ago                       my_ubuntu_2\na19c770b8621        ubuntu:latest       \u0026quot;bash\u0026quot;                   2 hours ago         Exited (0) About an hour ago                       my_ubuntu\n6162daed25da        nginx               \u0026quot;nginx -g 'daemon of…\u0026quot;   3 hours ago         Exited (0) 27 seconds ago                          hardcore_torvalds\n
\n

从STATUS中,可以看到NGINX’corecore_torvalds’容器已停止。使用docker commit命令创建新镜像:

\n
$ docker commit 6162daed25da nginx_hello_world_template\nsha256:117d060587a316035ed5a776e613d9cfbeee9fbfe202c6edc9203820c7da987b\n
\n

如果现在检查,将看到新镜像:

\n
$ docker images\nREPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE\nnginx_hello_world_template   latest              117d060587a3        40 seconds ago      109MB\nubuntu                       16.04               5e8b97a2a082        2 weeks ago         114MB\nubuntu                       latest              113a43faa138        2 weeks ago         81.2MB\nnginx                        latest              cd5239a0906a        2 weeks ago         109MB\n
\n

可以使用此镜像并启动新Docker容器,新创建容器将具有“Hello world”页面,而不是“Welcome NGINX”页面。示例如下:

\n
$ docker run -it -d -p 8886:80 nginx_hello_world_template\n4e042d76c39125471951626ba42cd609a65c73f041943298f74f4fc43dc5596a\n$\n
\n

删除Docker容器和镜像

\n

Docker容器和镜像会占用硬盘空间,因此最好定期清理。首先停止所有容器,然后列出所有容器,使用以下Docker命令执行操作:

\n
$ docker ps -a\nCONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                         PORTS               NAMES\n4e042d76c391        nginx_hello_world_template   \u0026quot;nginx -g 'daemon of…\u0026quot;   2 minutes ago       Exited (0) 8 seconds ago                           boring_keldysh\n75b28b720835        ubuntu:latest                \u0026quot;bash\u0026quot;                   2 hours ago         Exited (0) About an hour ago                       my_ubuntu_2\na19c770b8621        ubuntu:latest                \u0026quot;bash\u0026quot;                   2 hours ago         Exited (0) About an hour ago                       my_ubuntu\n6162daed25da        nginx                        \u0026quot;nginx -g 'daemon of…\u0026quot;   3 hours ago         Exited (0) 11 minutes ago                          hardcore_torvalds\n
\n

如上,有4个处于停止状态的容器,可使用docker rm命令删除容器:

\n
$ docker rm 4e042d76c391 75b28b720835 a19c770b8621 6162daed25da\n4e042d76c391\n75b28b720835\na19c770b8621\n6162daed25da\n
\n

可使用NAMES代替CONTAINER ID,容器列表现在应该是干净的:

\n
$ docker ps -a\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n
\n

列出Docker镜像:

\n
$ docker images\nREPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE\nnginx_hello_world_template   latest              117d060587a3        11 minutes ago      109MB\nubuntu                       16.04               5e8b97a2a082        2 weeks ago         114MB\nubuntu                       latest              113a43faa138        2 weeks ago         81.2MB\nnginx                        latest              cd5239a0906a        2 weeks ago         109MB\n
\n

可使用docker rmi命令和IMAGE ID删除docker镜像:

\n
$ docker rmi 117d060587a3 5e8b97a2a082 113a43faa138 cd5239a0906a\n
\n

最后,Docker镜像列表应该是干净的:

\n
$ docker images\nREPOSITORY TAG IMAGE ID CREATED SIZE\n
\n

原文链接:https://dzone.com/articles/top-docker-commands-itsyndicate

\n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

flybirding10011

谢谢支持啊999

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

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

打赏作者

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

抵扣说明:

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

余额充值