Docker daemon及容器实例的DNS配置详解

Docker实战-Docker Daemon 一、修改Docker Daemon    Docker Daemon是Docker的守护进程,Docker Client通过命令行与Docker Damon通信,完成Docker相关操作    Docker Daemon有不同的修改方式:命令行修改,修改启动项,修改配置文件。其中仅仅只是研究或一次使用Docker Daemon的不同选项时,可以通过命令行的方式,此时Docker Daemon运行在前 阅读详情

Docker daemon及容器实例的DNS配置详解
2022-01-22 18:37 180阅读 0赞

Linux系统中,DNS解析器是一组C库的进程,用以访问DNS服务器。DNS解析器通过/etc/resolv.conf配置文件给出要访问的DNS服务器,配置文件修改后立刻生效,但系统重启后/etc/resolv.conf配置文件的内容回滚到初始状态。

Docker daemon的DNS配置

Docker daemon的配置有两种方式,一种是通过/etc/docker/daemon.json文件,另一种是通过dockerd的命令参数。

对于Docker daemon的DNS配置,二选一,不能同时以两种方式进行同一参数的配置,否则dockerd启动会失败。

  1. 配置/etc/docker/daemon.json文件的DNS属性
    {
    “dns”: [“8.8.8.8”, “8.8.4.4”, “2001:4860:4860::8888”, “2001:4860:4860::8844”],
    “dns-opts”: [“debug”],
    “dns-search”: [“example.com”],
    …
    }
  2. dockerd命令的DNS参数

dockerd —dns 8.8.8.8 —dns-opt debug —dns-search example.com

docker run命令的DNS参数

在启动Docker容器实例的docker run命令中,也可以通过如下命令参数,为要创建的容器实例配置专用的DNS参数。

--dns
--dns-option或—dns-opt
--dns-search

docker run -d —dns 8.8.8.8 —dns-opt debug —dns-search example.com --name myContainer myImage:latest

Docker容器实例中解析DNS的顺序
  1. 首先,查找Docker daemon内置的DNS服务器127.0.0.11

  2. 其次,查找docker run创建容器实例时通过—dns参数设置的DNS服务器

  3. 再次,查找Docker daemon通过—dns参数,或/etc/docker/daemon.json文件设置的DNS服务器

  4. 又次,查找Docker宿主机上/etc/resolv.conf文件中配置的DNS服务器

  5. 最后,查找Google的DNS服务器,如8.8.8.8和8.8.4.4,2001:4860:4860::8888和2001:4860:4860::8844

参考链接:

https://docs.docker.com/v17.09/engine/userguide/networking/default_network/configure-dns/

https://docs.docker.com/v17.09/engine/userguide/networking/configure-dns/

转自:https://www.dandelioncloud.cn/article/details/1484837542863372289,侵删

Docker内部嵌入式DNS原理解析 Docker内部DNS系统通过嵌入式DNS服务器实现容器间通信和动态服务发现。核心原理包括:每个容器通过127.0.0.11:53访问嵌入式DNS,该服务器维护网络内所有容器的名称-IP映射。关键特性包括:仅自定义网络支持该功能、解析优先级规则、支持负载均衡的DNS查询。相比传统--link机制,嵌入式DNS提供双向动态更新和网络范围内的服务发现,是现代容器通信的标准方案。该系统解耦了容器依赖,简化了微服务架构中的服务定位和通信配置。 阅读详情

相关推荐

Docker实现原理

=System V引入了三种高级进程间的通信机制:消息队列、共享内寸和信号量==IPC对象(消息队列、共享内存和信号量)存在于内核中而不是文件系统中,由用户控制释放,不像管道的释放由内核控制IPC对象通过其标识符来引用和访问,所有IPC对象在内核空间有唯一性标志ID,在用户空间的唯一性标识符称为keyLINUX IPC 继承自System IPCIPC对象时全局对象,可用ipcs,ipcrm等命令查看或删除ipcs -q: 只显示消息队列。ipcs -s: 只显示信号量。

qq_42944740的博客 1864

Docker 小笔记

文章目录阿里云源安装 docker用户加入 docker 组,可以不用 sudo 执行命令。docker 镜像加速私有仓库 https 白名单Docker NetworkBridgeNoneHostMACVLANMACVLANDocker MACVLAN同主机多个 MACVLAN 类型的网络IPVLAN常用命令Docker DNS默认网络用户自定义网络docker 端口映射volume传递变量容器之间互联 阿里云源安装 docker # step 1: 安装必要的一些系统工具 sudo yum instal

某呆 4359

保姆级教程:三种方法彻底解决Docker容器DNS问题(含Daemon.json全局配置)

本文深入探讨了Docker容器DNS解析问题的三种专业解决方案,包括文件挂载替换法、Daemon.json全局配置法和网络模式修正法。针对不同场景提供详细配置步骤和性能优化建议,帮助开发者彻底解决DNS解析延迟和失败问题,提升容器网络性能。

weixin_32520095的博客 284

【docker】Linux查看\配置DNS

要查看或配置Docker的DNS服务器,你可以使用以下方法:dns。

资深全栈开发工程师 4056

Vue3项目实战:CKEditor5富文本编辑器从安装到隐藏不需要的功能

本文详细介绍了在Vue3项目中集成并深度定制CKEditor5富文本编辑器的完整流程。通过分析其模块化架构,指导开发者从标准构建出发,移除图片、表格等冗余插件,创建专属轻量构建,从而显著减小打包体积并提升用户体验。文章结合实战代码,涵盖了环境搭建、自定义构建配置、高级优化技巧等关键步骤。

weixin_29016833的博客 283

快速玩转 Llama2!机器学习 PAI 最佳实践(一)—低代码 Lora 微调及部署

本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。

阿里云云栖号 1765

保姆级教程:手把手教你给Docker容器配置稳定的DNS解析(从daemon.json到容器内挂载)

本文提供从基础到高阶的Docker容器DNS配置指南,详细解析daemon.json全局配置、运行时参数调整及容器内挂载resolv.conf等三种方案,解决混合云环境中DNS解析不稳定问题。特别针对docker-compose网络模式与DNS的关联配置给出生产级建议,包含性能优化参数和疑难排查工具箱,助力开发者实现跨网络环境的稳定域名解析。

weixin_31220401的博客 311

SigFit实战:从FEA到光学仿真的热力耦合分析全流程解析

在光机系统与芯片封装等精密工程领域,热与力的耦合效应是影响产品性能与可靠性的核心物理问题。有限元分析(FEA)是预测结构在热、力载荷下变形与应力的基础工具,但其结果通常无法直接用于评估光学性能。这需要一座桥梁,将物理场数据转化为光学设计语言。其核心原理在于数据映射与面形表征技术,例如通过泽尼克多项式拟合,将离散的节点位移分解为离焦、像散等标准光学像差。这项技术的工程价值在于,它实现了多物理场仿真的闭环,使工程师能在设计阶段精准预测热变形或应力对波前误差、调制传递函数等关键光学指标的影响。其典型应用场景包括高

weixin_28630185的博客 334

别再让容器断网了!Docker DNS配置保姆级教程(从daemon.json到docker run)

本文详细介绍了Docker DNS配置的全面解决方案,从全局配置到单容器设置,帮助开发者彻底解决容器网络中的DNS解析问题。通过实战案例和高级排查技巧,提升容器网络的稳定性和可靠性,适用于生产环境和开发调试场景。

weixin_30299709的博客 359

我的二进制漏洞挖掘学习路线

漏洞挖掘也分好多方向:浏览器漏挖,虚拟化,iot,车联网,应用安全等。而且也要区分一下平台,Linux,Android,Windows,还有一些其他的系统。在基础知识拿捏以后,Windows下如OD,windbg,x64dbg。IDA,GDB要会并联调。然后需要了解一下漏洞的知识,漏洞利用的知识。可以从复现漏洞,CTF来学习,学习完之后就可以通过审计源码或者反汇编二进制程序来挖掘。然后就是练就行了,多关注一下最新安全消息,安全漏洞。

qq_36918532的博客 4942

从命名玄学看单片机江湖:STC、STM32与ESP32的型号密码与设计哲学

本文解析了STC、STM32和ESP32三大主流单片机系列的型号命名规则,揭示了其背后的设计哲学与市场策略。通过详细解读STC89C52、STM32F103C8T6等具体型号,帮助开发者理解芯片核心特性、性能等级及适用场景,为嵌入式系统选型提供实用指南。

g5h6i的博客 761

宿主机有网、Docker 容器不能解析域名?用 daemon.json 一键配置永久 DNS

本文说明一种常见现象:宿主机可以上网,但进入 Docker 容器后ping域名出现。原因多与容器内 DNS 配置有关。通过在宿主机修改 Docker 的指定公共 DNS,并重启 Docker 服务,可使新建容器长期获得可用的域名解析能力。

cream_t_g的博客 494

蓝桥杯FPGA赛道积分赛

代码如下: 按键驱动 代码如下 按键驱动 代码如下: 顶层文件 按键驱动 数码管驱动 声明:本代码借鉴网络资料,如有侵权和错误请联系作者删除。我是从寒假开始备赛的,由于我基础不行,备赛过程中也是混混呃呃的,备赛效率不高,总体来说备赛不认真,有点拖拉,但是最后我也坚持备赛到了今天,在备赛过程中,即复习了旧的东西,也学到了新的东西,总结起来还是有点收获的,后天北京、天津、河北地区就要进行省赛了,我会全力以赴,不管结果怎么样,尽力就好,最后祝大家都能

weixin_69804913的博客 1980

保姆级教程:3种方法彻底解决Docker容器DNS解析问题(含宿主机挂载、daemon.json全局配置)

本文详细解析了Docker容器DNS解析问题的三种终极解决方案,包括宿主机文件挂载法、daemon.json全局配置和docker-compose网络模式调优。通过深入分析Docker网络模型与DNS的关系,提供从原理到实战的全面指导,帮助开发者彻底解决容器DNS解析难题,提升容器网络稳定性。

weixin_30516429的博客 384

YOLOv8改进策略【Neck】| CVPR 2024 MFM(Modulation Fusion Module,调制融合模块):动态特征加权融合,突出关键特征抑制冗余

本文主要利用DCMPNet中的 MFM 模块优化 YOLOv8 的目标检测网络模型。模块通过动态调制特征融合过程,实现了对多尺度、跨层级特征的智能聚合。将其应用于的改进过程中,针对目标检测中边界特征与语义信息的互补性需求,缓解网络中浅层细节与深层语义融合不足的问题。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image Dehazing在图像去雾网络中,不同层级和类型的特征包含着互补的信息(如浅层的

Limiiiing的博客 351

MAC(m1)-VMWare Fusion安装CentOS7.9

MAC(m1)-VMWare Fusion安装CentOS7.9

兴趣是最好的老师 1766

Docker 实战:Docker配置 DNS

在Docker实战中,配置DNS(域名系统)主要有两种方式:全局配置和针对单个容器的配置。

qq_33240556的博客 7843

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Docker的配置文件 daemon.json 详解

"insecure-registries": ["harbor.test.com","registry.cn-shenzhen.aliyuncs.com"] # 这个私库的服务地址。"data-root": "/var/lib/docker", # Docker运行时使用的根路径,默认/var/lib/docker。"dns": ["192.168.1.1"], # 设定容器DNS的地址,在容器的 /etc/resolv.conf文件中可查看。

耕耘 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Docker容器中的/etc/resolv.conf与宿主机不一致,配置dns的几种方式

直接上干货: docker容器配置dns解析地址,我知道的有以下几种办法(优先级从高到低): 1. 启动的时候加--dns=IP_ADDRESS; 2.在/etc/docker/deamon.json中添加dns信息; 3. 使用宿主机的/etc/resolv.conf文件; 具体经过: Docker宿主机中的/etc/resolv.conf如下: cat /etc/resolv.conf 结果如下: nameserver 172.18.0.52 names...

liurui_0712的博客 9921

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

如何配置docker的dns

作者:【吴业亮】 博客:https://wuyeliang.blog.csdn.net/ 配置 DNS 如何自定义配置容器的主机名和 DNS 呢?秘诀就是 Docker 利用虚拟文件来挂载容器的 3 个相关配置文件。 在容器中使用 mount 命令可以看到挂载信息: $ mount /dev/disk/by-uuid/1fec...ebdf on /etc/hostname type ext4 ....

本人任职于安超云技术架构部,拥有十余年云计算与AI经验。专注AI基础设施、分布式集群、高可用架构、虚拟化、存储、网络及数据库等领域。博客内容以学习笔记为主,力求准确,但个人能力所限,难免疏误。非常欢迎交流指正,期待与您共同探讨技术 7386

解决容器dns问题

【代码】解决容器dns问题。

weixin_41642203的博客 323

docker配置DNS解决办法

我们都知道Linux系统配置DNS的时候有一个问题,就是你在/ect/resolv.conf文件中添加上nameserver XXX.XXX.XXX.XXX的时候,当时是生效的,但是机器重启之后就失效了,所以我们可以通过配置Network的方法来解决,但是对于docker来说,它默认是映射主机的DNS,但是如果你想在docker镜像中加上非主机的DNS,也许这个方法就解决不了问题,但是对于dock

hanlaipeng的博客 3万+

保姆级教程:三种方法搞定Docker容器DNS,从daemon.json到挂载resolv.conf

本文详细解析了Docker容器DNS配置的三种方法,包括通过daemon.json全局管理、运行时参数灵活控制以及挂载自定义resolv.conf文件。针对不同场景提供了实战指南,帮助开发者解决容器DNS解析问题,优化网络性能。特别适合需要处理复杂网络环境的企业级应用。

weixin_31421613的博客 286

docker 配置文件:/etc/docker/daemon.json

/etc/docker/daemon.json 是 docker 的配置文件,默认是没有的,需要我们手动创建,可配置项如下: [root@localhost ~]$ vim /etc/docker/daemon.json { "authorization-plugins": [], "data-root": "", # 设置docker运行时的根目录 "d...

weixin_34273481的博客 1万+

别再让容器断网了!手把手教你配置Docker DNS(Linux/macOS/Windows全平台指南)

本文详细解析了Docker容器DNS配置问题,提供Linux/macOS/Windows全平台的解决方案。从基础配置到企业级优化,涵盖DNS工作原理、故障排查及性能监控,帮助开发者彻底解决容器断网问题。特别推荐使用Cloudflare DNS(1.1.1.1)和Google DNS(8.8.8.8)的稳定组合。

weixin_33724659的博客 440
上一篇: NAVICAT 用新建查询导入数据的时候如何忽略错误继续执行
下一篇: datax导数>从一个集群到另外一个集群(hdfs)出现数据缺失
while_int
博客等级 码龄8年 12粉丝 2原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值