docker笔记初级篇2022新版

docker官网

1.docker简介

解决了环境迁移的痛点

docker安装准备

Install Docker Engine on CentOS

虚拟机安装centos7

centos7.iso下载步骤如下图所示

cento官网

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装centos7

选择语言
在这里插入图片描述
软件选择

在这里插入图片描述
选择 带GUI的服务器 这个选项,否则没有可视化界面和网络相关服务。
在这里插入图片描述
其他的步骤可以直接按照提示下一步即可。

网络设置为NAT模式。
在这里插入图片描述

保证可以访问外网是安装docker的前提。

在这里插入图片描述

2.docker安装

2.1 安装 yum-utils

2.2 安装 yum-config-manager

 第一步安装utils
 sudo yum install -y yum-utils
 第二步使用官方
 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 或者第二步使用aliyun
 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

: 设置阿里云镜像没有出现 repo saved to /etc/yum.repos.d/docker-ce.repo ,可能是网络环境问题,只能设置官方提供的镜像。

2.3 docker安装命令

sudo yum install docker-ce docker-ce-cli containerd.io

安装完成后可以再次输入安装命令,如果出现下图效果代表安装成功。
在这里插入图片描述

2.4 启动docker

sudo systemctl start docker

2.5 启动hello-world

sudo docker run hello-world

在这里插入图片描述

2.6 查看docker状态

sudo systemctl status docker

在这里插入图片描述

2.7 设置开机自启动

默认情况下docker重新启动会关闭, 我们需要将它设置为开机自启动模式来方便我们的使用。

sudo systemctl enable docker 

在这里插入图片描述

2.8 docker查看版本

sudo docker version

在这里插入图片描述

2.9 docker – help 命令帮助文档

docker --help
------分界线------
Usage:  docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set
                           with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  app*        Docker App (Docker Inc., v0.9.1-beta3)
  builder     Manage builds
  buildx*     Docker Buildx (Docker Inc., v0.7.1-docker)
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  scan*       Docker Scan (Docker Inc., v0.12.0)
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.
To get more help with docker, check out our guides at https://docs.docker.com/go/guides/

3.docker常用镜像命令

3.1 docker images 列出镜像

在这里插入图片描述

3.1.1 docker images --help

在这里插入图片描述

3.1.2 docker images hello-world

在这里插入图片描述

3.2 docker search 镜像查找

在这里插入图片描述

3.2.1 docker search --help

在这里插入图片描述

3.2.2 docker search redis

在这里插入图片描述

3.2.3 docker search --limit

在这里插入图片描述

3.3 docker pull 拉取镜像或仓库

在这里插入图片描述

3.3.1 docker pull --help

在这里插入图片描述

3.3.2 docker pull redis

在这里插入图片描述

3.3.3 docker pull redis:6.2.6

在这里插入图片描述

3.4 docker system 管理docker

在这里插入图片描述

3.4.1 docker system df 显示docker磁盘使用情况

在这里插入图片描述

3.4.2 docker system events 从服务器获取实时事件

3.4.3 docker system info 显示系统范围的信息

3.4.4 docker system prune 删除未使用的数据

3. 5 docker rmi 删除镜像

在这里插入图片描述

3.5.1 docker rmi --help

在这里插入图片描述

3.5.2 docker rmi -f xxx 根据image_id删除镜像

在这里插入图片描述

3.5.3 docker rmi a b 根据名称删除多个镜像

在这里插入图片描述

面试题:docker虚悬镜像是什么

镜像没有仓库名或没有标签的镜像

虚悬镜像的查看命令

docker images -f dangling=true

3.6 docker volume

在这里插入图片描述

4.docker常用容器命令

4.1 docker run 在新容器中运行

在这里插入图片描述

4.1.1 docker run --help

[root@lzy test]# docker run --help

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container

Options:
      --add-host list                  Add a custom host-to-IP mapping (host:ip)
  -a, --attach list                    Attach to STDIN, STDOUT or STDERR
      --blkio-weight uint16            Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
      --blkio-weight-device list       Block IO weight (relative device weight) (default [])
      --cap-add list                   Add Linux capabilities
      --cap-drop list                  Drop Linux capabilities
      --cgroup-parent string           Optional parent cgroup for the container
      --cgroupns string                Cgroup namespace to use (host|private)
                                       'host':    Run the container in the Docker host's cgroup namespace
                                       'private': Run the container in its own private cgroup namespace
                                       '':        Use the cgroup namespace as configured by the
                                                  default-cgroupns-mode option on the daemon (default)
      --cidfile string                 Write the container ID to the file
      --cpu-period int                 Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int                  Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int              Limit CPU real-time period in microseconds
      --cpu-rt-runtime int             Limit CPU real-time runtime in microseconds
  -c, --cpu-shares int                 CPU shares (relative weight)
      --cpus decimal                   Number of CPUs
      --cpuset-cpus string             CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string             MEMs in which to allow execution (0-3, 0,1)
  -d, --detach                         Run container in background and print container ID
      --detach-keys string             Override the key sequence for detaching a container
      --device list                    Add a host device to the container
      --device-cgroup-rule list        Add a rule to the cgroup allowed devices list
      --device-read-bps list           Limit read rate (bytes per second) from a device (default [])
      --device-read-iops list          Limit read rate (IO per second) from a device (default [])
      --device-write-bps list          Limit write rate (bytes per second) to a device (default [])
      --device-write-iops list         Limit write rate (IO per second) to a device (default [])
      --disable-content-trust          Skip image verification (default true)
      --dns list                       Set custom DNS servers
      --dns-option list                Set DNS options
      --dns-search list                Set custom DNS search domains
      --domainname string              Container NIS domain name
      --entrypoint string              Overwrite the default ENTRYPOINT of the image
  -e, --env list                       Set environment variables
      --env-file list                  Read in a file of environment variables
      --expose list                    Expose a port or a range of ports
      --gpus gpu-request               GPU devices to add to the container ('all' to pass all GPUs)
      --group-add list                 Add additional groups to join
      --health-cmd string              Command to run to check health
      --health-interval duration       Time between running the check (ms|s|m|h) (default 0s)
      --health-retries int             Consecutive failures needed to report unhealthy
      --health-start-period duration   Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s)
      --health-timeout duration        Maximum time to allow one check to run (ms|s|m|h) (default 0s)
      --help                           Print usage
  -h, --hostname string                Container host name
      --init                           Run an init inside the container that forwards signals and reaps processes
  -i, --interactive                    Keep STDIN open even if not attached
      --ip string                      IPv4 address (e.g., 172.30.100.104)
      --ip6 string                     IPv6 address (e.g., 2001:db8::33)
      --ipc string                     IPC mode to use
      --isolation string               Container isolation technology
      --kernel-memory bytes            Kernel memory limit
  -l, --label list                     Set meta data on a container
      --label-file list                Read in a line delimited file of labels
      --link list                      Add link to another container
      --link-local-ip list             Container IPv4/IPv6 link-local addresses
      --log-driver string              Logging driver for the container
      --log-opt list                   Log driver options
      --mac-address string             Container MAC address (e.g., 92:d0:c6:0a:29:33)
  -m, --memory bytes                   Memory limit
      --memory-reservation bytes       Memory soft limit
      --memory-swap bytes              Swap limit equal to memory plus swap: '-1' to enable unlimited swap
      --memory-swappiness int          Tune container memory swappiness (0 to 100) (default -1)
      --mount mount                    Attach a filesystem mount to the container
      --name string                    Assign a name to the container
      --network network                Connect a container to a network
      --network-alias list             Add network-scoped alias for the container
      --no-healthcheck                 Disable any container-specified HEALTHCHECK
      --oom-kill-disable               Disable OOM Killer
      --oom-score-adj int              Tune host's OOM preferences (-1000 to 1000)
      --pid string                     PID namespace to use
      --pids-limit int                 Tune container pids limit (set -1 for unlimited)
      --platform string                Set platform if server is multi-platform capable
      --privileged                     Give extended privileges to this container
  -p, --publish list                   Publish a container's port(s) to the host
  -P, --publish-all                    Publish all exposed ports to random ports
      --pull string                    Pull image before running ("always"|"missing"|"never") (default "missing")
      --read-only                      Mount the container's root filesystem as read only
      --restart string                 Restart policy to apply when a container exits (default "no")
      --rm                             Automatically remove the container when it exits
      --runtime string                 Runtime to use for this container
      --security-opt list              Security Options
      --shm-size bytes                 Size of /dev/shm
      --sig-proxy                      Proxy received signals to the process (default true)
      --stop-signal string             Signal to stop a container (default "SIGTERM")
      --stop-timeout int               Timeout (in seconds) to stop a container
      --storage-opt list               Storage driver options for the container
      --sysctl map                     Sysctl options (default map[])
      --tmpfs list                     Mount a tmpfs directory
  -t, --tty                            Allocate a pseudo-TTY
      --ulimit ulimit                  Ulimit options (default [])
  -u, --user string                    Username or UID (format: <name|uid>[:<group|gid>])
      --userns string                  User namespace to use
      --uts string                     UTS namespace to use
  -v, --volume list                    Bind mount a volume
      --volume-driver string           Optional volume driver for the container
      --volumes-from list              Mount volumes from the specified container(s)
  -w, --workdir string                 Working directory inside the container

4.1.2 docker run -it ubuntu:latest /bin/bash || docker run -it ubuntu /bin/bash

-it 代表以命令模式进行交互,类linux终端输入命令

ubuntu:latest 版本号可不加

/bin/bash 容器内执行/bin/bash命令

输入 exit 可退出容器
在这里插入图片描述

4.1.3 docker run -it --name=myu1 ubuntu bash

–name string 设置容器名称
在这里插入图片描述
names 列已经设置为myu1
在这里插入图片描述

4.2 docker ps 列出容器

在这里插入图片描述

4.2.1 docker ps --help

在这里插入图片描述

4.2.2 docker ps -a 展示所有容器包含离线的

在这里插入图片描述

4.2.3 docker ps -l 显示最近创建的一个容器

在这里插入图片描述

4.2.4 docker ps -n 2 显示最近创建的n个容器

在这里插入图片描述

4.2.5 docker ps -q 只显示容器id

在这里插入图片描述

4.3 退出容器

4.3.1 exit 退出并关闭容器

在这里插入图片描述
可以看到上面id的容器已经退出
在这里插入图片描述

4.3.2 ctrl p+q 只退出不关闭容器

退出后查看发现容器状态依旧在线。

在这里插入图片描述

4.4 docker start 开启一个或多个已经关闭的容器

在这里插入图片描述

4.5 docker restart 重启一个或多个容器

在这里插入图片描述

4.6 docker stop 关闭一个或多个正在运行的容器

在这里插入图片描述

4.7 docker kill 杀死一个或多个正在运行的容器

在这里插入图片描述

4.8 docker rm 移除一个或多个容器

在这里插入图片描述

4.9 docker run -d 启动守护式容器

-d, --detach Run container in background and print container ID 在后台运行容器并打印容器ID

docker run -it redis 前台交互启动redis不合适,希望后台启动就行。
在这里插入图片描述
docker run -d redis 后台启动redis
在这里插入图片描述

4.10 docker logs 获取容器日志

在这里插入图片描述

docker logs + 容器id 查看日志
在这里插入图片描述

4.11 docker top 展示容器中运行的实例

在这里插入图片描述

在这里插入图片描述

4.12 docker inspect : 获取容器/镜像的元数据。

在这里插入图片描述
在这里插入图片描述

4.13 docker exec 在运行的容器中执行命令

不会关闭容器
在这里插入图片描述
在这里插入图片描述

4.14 docker attach 连接到正在运行中的容器

退出时会关闭容器在这里插入图片描述

4.15 docker exec 和 docker attach的对比

exec命令连接回容器后执行exit,容器b530xx仍然在线。

在这里插入图片描述
attachexec命令连接回容器后执行exit,容器b530x已经不在线。
在这里插入图片描述

4.16 docker cp 容器内拷贝文件出来

在这里插入图片描述

docker cp 容器id:文件路径 目标路径
示例
docker cp b69c9dedf711:a.txt /

在这里插入图片描述

4.17 docker import导入tar文件变为镜像

在这里插入图片描述

4.18 docker export 导出容器文件系统为一个tar

在这里插入图片描述
导出容器为abcd.tar文件

docker export b69c9dedf711 > abcd.tar

在这里插入图片描述

删除容器 b69c9dedf711

docker rm -f b69c9dedf711

在这里插入图片描述
导入abcd.tar

 cat abcd.tar | docker import - atguigu/ubuntu:3.7

在这里插入图片描述
运行镜像3081c84a2fce 之前用于复制的a.txt仍然存在

 docker run -it 3081c84a2fce /bin/bash

在这里插入图片描述

4.19 docker commit 创建一个增强功能容器的镜像

在这里插入图片描述

4.19.1 给ubuntu镜像安装vim命令

docker ps
docker run -it ubuntu /bin/bash
apt-get update
apt-get -y install vim

运行容器ubuntu,执行更新操作
在这里插入图片描述
测试vim命令,并安装vim
在这里插入图片描述
测试vim命令成功
在这里插入图片描述

4.19.2 docker commit 将增强版ubuntu变为镜像

当仓库名称为大写时,会提示报错,repository name must be lowercase,仓库名称必须为小写

[root@lzy test]# docker commit -m="add vim cmd" -a="lzyy" 72f20a4fd7a9 ubuntuPlus:1.1
invalid reference format: repository name must be lowercase
[root@lzy test]# docker commit -m="add vim cmd" -a="lzyy" 72f20a4fd7a9 ubuntuplus:1.1

查看ubuntuplus镜像是否提交成功
在这里插入图片描述
启动新镜像(带vim命令的ubuntu),测试vim功能发现成功
在这里插入图片描述

5 本地镜像与阿里云

5.1本地镜像推送阿里云

登录阿里云并创建命名空间和仓库。
在这里插入图片描述
按顺序执行上面三行代码
在这里插入图片描述

推送成功
在这里插入图片描述

5.2从阿里云拉取镜像

在这里插入图片描述

6 本地镜像与私有库 docker registry

6.1 下载启动registry

registry下载
在这里插入图片描述
启动registry

 docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry

在这里插入图片描述

6.2 ubuntu 安装 ifconfig 并发布私服库

6.2.1 ubuntu 安装apt-get update

启动ubuntu,测试ifconfig发现并未安装,执行命令更新

docker run -it ubuntu /bin/bash
apt-get update

在这里插入图片描述

6.2.2 ubuntu 安装 net-tools

安装net-tools后测试ifconfig命令,发现启动容器并不包含该命令

apt-get install net-tools
ifconfig

在这里插入图片描述

6.2.3退出正在运行的容器

ctrl p+q 
docker ps

在这里插入图片描述

6.2.4 docker commit 创建新镜像

docker commit -m="ifconfig ubuntu" -a="lzy" e7c2dc6ee923 ifcubuntu:1.2

在这里插入图片描述

6.2.5启动ifcubuntu镜像,测试ifconfig,可以看到已经成功集成ifconfig命令

在这里插入图片描述

6.2.6 验证私服库中有哪些镜像

本机ip用ifconfig命令查看,注意替换ip

curl -XGET http://ip:5000/v2/_catalog

在这里插入图片描述

6.2.7 修改命名

将增强镜像ifcubuntu:1.2命名为私服库可以接受的形式

docker tag ifcubuntu:1.2 192.168.17.128:5000/ifcubuntu:1.2

在这里插入图片描述

6.2.8 上传镜像至私服库

docker push上传镜像

 docker push 192.168.17.128:5000/ifcubuntu:1.2

修改配置文件

vim /etc/docker/daemon.json 

在这里插入图片描述

在这里插入图片描述
修改后测试提交不生效,需要重启docker

systemctl restart docker
systemctl status docker

在这里插入图片描述

docker push 192.168.17.128:5000/ifcubuntu:1.2

在这里插入图片描述

6.2.9 验证私服库中内容

在这里插入图片描述

6.2.10 拉取ifcubuntu

拉取前先把本地镜像删除后拉取私服库中镜像

docker rmi -f 192.168.17.128:5000/ifcubuntu:1.2
docker pull 192.168.17.128:5000/ifcubuntu:1.2

在这里插入图片描述

7 容器数据卷

数据卷的作用:实现宿主机和容器内数据交互,重要数据持久化和备份。

7.1 容器挂载数据卷

7.1.1容器运行并挂载数据卷

docker run -it --privileged -v /tmp/host_data:/tmp/docker_data --name=u3 ubuntu

挂载容器数据卷,在目录下新建aaa.txt
在这里插入图片描述
宿主机对应路径下自动生成aaa.txt
在这里插入图片描述
宿主机新建bbb.txt并修改aaa.txt内容
在这里插入图片描述
容器内自动生成bbb.txt和aaa.txt内容已经发生变化
加粗样式

7.1.2 查看挂载

docker inspect 2ec6fedb22d4

找到Mounts查看相应的挂载信息。
在这里插入图片描述

7.1.3 容器停止后宿主机新建文件

停止容器u3
在这里插入图片描述
另一个终端操作宿主机新建ccc.txt
在这里插入图片描述
容器重新启动后进入查看,发现ccc.txt已经生成
在这里插入图片描述

7.2 容器卷读写规则 (容器生效)

rw = read write ro =read only

默认读写规则为rw,读写规则限制容器向宿主机操作方向,如果设置只读则容器不能创建文件。

docker run -it --privileged -v /tmp/host_data2:/tmp/docker_data2:ro --name=u4 ubuntu

在这里插入图片描述
宿主机新建x.txt并写入内容
在这里插入图片描述
容器内可以看到宿主机创建的文件x.txt和新增的内容
在这里插入图片描述

7.3 容器卷继承

8 docker安装常用软件

8.1 Tomcat

操作步骤按视频操作即可,不再赘述,其中坑是修改配置文件。

8.2 Mysql

8.2.1拉取镜像安装

docker pull mysql:5.7

在这里插入图片描述
启动之前先查看linux系统中是否启动mysql,否则映射端口会失败

ps -ef|grep mysql

在这里插入图片描述

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

在这里插入图片描述

docker exec -it fa84bb0b4e6e /bin/bash

在这里插入图片描述
调用ifconfig查看ip后在windows系统使用navicate连接
在这里插入图片描述

8.2.2 存在问题 编码问题 ,数据备份

在这里插入图片描述

8.2.3实战版

启动mysql并挂载容器数据卷

docker run -d -p 3306:3306 --privileged=true \
-v /bf/mysql/log:/var/log/mysql \
-v /bf/mysql/data:/var/lib/mysql \
-v /bf/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

在宿主机所在conf目录新建my.cnf文件
在这里插入图片描述
重新启动容器
在这里插入图片描述

show variables like 'character%';

在这里插入图片描述
完成容器卷挂载后,可以保证容器数据不丢失。

8.3 redis

存在问题:需要指定自定义配置文件,挂载容器数据卷保存数据

8.3.1 步骤

首先下载对应版本redis,并拷贝redis.conf文件到docker容器挂载redis目录。
在这里插入图片描述
bind 绑定ip,不注释代表只有本机可以连接,protected-mode代表保护模式,不改为no无法连接。
在这里插入图片描述
daemonize yes代表守护模式跟docker -d 命令冲突。
在这里插入图片描述
AOF持久化命令。
在这里插入图片描述

修改配置文件后启动redis

docker run -p 6379:6379 --name myredis4 --privileged=true \
-v /bf/redis/redis.conf:/etc/redis/redis.conf \
-v /bf/redis/data:/data \
-d redis:6.2.6 redis-server /etc/redis/redis.conf 
或
docker run -p 6379:6379 --name dockerRedis --privileged=true \
 -v /root/bf/redis/redis.conf:/etc/redis/redis.conf \
 -v /root/bf/redis/data:/data -d redis redis-server \
 /etc/redis/redis.conf 

在这里插入图片描述

8.3.2 redis启动报错问题

如果启动后docker ps没有对应容器,用docker logs容器id查询日志报错信息。

我的报错原因是 之前下载的6.0.8版本,但是我的redis.conf是从6.2.6的redis中复制过来的,跨版本

的时候会有bug,将docker pull redis:6.2.6版本,或者从对应版本中取得配置文件。
在这里插入图片描述

8.3.3 测试命令

在这里插入图片描述

8.3.4 证明读到宿主机配置

修改前测试命令
在这里插入图片描述
退出后修改宿主机配置文件的databases = 10
在这里插入图片描述
重新启动redis后测试命令,发现配置文件修改成功
在这里插入图片描述

8.4 nginx

第一步拉取镜像
在这里插入图片描述
第二步启动nginx

docker run --name docker_nginx -p 80:80 -d nginx

在这里插入图片描述
第三步 windows访问虚拟机ip来访问docker里面的nginx
在这里插入图片描述

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值