首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

word2vec 入门基础(一)

一、基本概念 word2vec是Google在2013年开源的一个工具,核心思想是将词表征映 射为对应的实数向量。 目前采用的模型有一下两种 CBOW(Continuous Bag-Of-Words,即连续的词袋模型) Skip-Gram 项目链接:https://code.google.com/archive/p/word2vec 二、背景知识 词向量 词向量就是用来将语言中的词进行数学化的一种方式,顾名思义,词向量 就是把一个词表示成一个向量。这样做的初衷就是机器只认识0 1 符号,换句话说,在自然语言处理中,要想让机器识别语言,就需要将自然语言抽象表示成可被机器理解的方式。所以,词向量是自然语言到机器语言的转换。 词向量有一下两种 One-hot Representation 向量的长度为词典的大小,向量的分量只有一个 1,其他全为 0, 1 的位置对应该词在词典中的位置,例如 “话筒”表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ...] “麦克”表示为 [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ...] 优点: 如果使用稀疏方式存储,非常简洁,实现时就可以用0,1,2,3,...来表示词语进行计算,这样“话筒”就为3,“麦克”为8. 缺点:1.容易受维数灾难的困扰,尤其是将其用于 Deep Learning 的一些算法时;2.任何两个词都是孤立的,存在语义鸿沟词(任意两个词之间都是孤立的,不能体现词和词之间的关系)。 Distributional Representation 最早是 Hinton 于 1986 年提出的,可以克服 one-hot representation的缺点。解决“词汇鸿沟”问题,可以通过计算向量之间的距离(欧式距离、余弦距离等)来体现词与词的相似性 。 其基本想法是直接用一个普通的向量表示一个词,这种向量一般长成这个样子:[0.792, −0.177, −0.107, 0.109, −0.542, ...],常见维度50或100。 优点:解决“词汇鸿沟”问题 缺点:训练有难度。没有直接的模型可训练得到。所以采用通过训练语言模型的同时,得到词向量 。 当然一个词怎么表示成这么样的一个向量是要经过一番训练的,训练方法较多,word2vec是其中一种。值得注意的是,每个词在不同的语料库和不同的训练方法下,得到的词向量可能是不一样的。 词向量在机器翻译领域的一个应用,就是google的TomasMikolov 团队开发了一种词典和术语表的自动生成技术,该技术通过向量空间,把一种语言转变成另一种语言,实验中对英语和西班牙语间的翻译准确率高达90%。 论文http://arxiv.org/pdf/1309.4168.pdf在介绍算法工作原理的时候举了一个例子:考虑英语和西班牙语两种语言,通过训练分别得到它们对应的词向量空间 E 和 S。从英语中取出五个词 one,two,three,four,five,设其在 E 中对应的词向量分别为 v1,v2,v3,v4,v5,为方便作图,利用主成分分析(PCA)降维,得到相应的二维向量 u1,u2,u3,u4,u5,在二维平面上将这五个点描出来,如下图左图所示。类似地,在西班牙语中取出(与 one,two,three,four,five 对应的) uno,dos,tres,cuatro,cinco,设其在 S 中对应的词向量分别为 s1,s2,s3,s4,s5,用 PCA 降维后的二维向量分别为 t1,t2,t3,t4,t5,将它们在二维平面上描出来(可能还需作适当的旋转),如下图右图所示: 观察左、右两幅图,容易发现:五个词在两个向量空间中的相对位置差不多,这说明两种不同语言对应向量空间的结构之间具有相似性,从而进一步说明了在词向量空间中利用距离刻画词之间相似性的合理性。 语言模型 语言模型其实就是看一句话是不是正常人说出来的。意义在于机器翻译、语音识别得到若干候选之后,可以利用语言模型挑一个尽量靠谱的结果。在 NLP 的其它任务里也都能用到。 用数学符号描述为:给定一个字符串"w1,w2,...,wt",计算它是自然语言的概率P(w1,w2,…,wt)。w1到wT 依次表示这句话中的各个词。有个很简单的推论是: p(s)=p(w1,w2,⋯wT)=p(w1)p(w2|w1)p(w3|w1,w2)⋯p(wt|w1,w2,⋯wT−1) 上面概率公式的意义为:第一次词确定后,看后面的词在前面次出现的情况下出现的概率。 例如,有个句子“大家喜欢吃苹果”,一共四个词"大家,喜欢,吃,苹果" P(大家,喜欢,吃,苹果)=p(大家)p(喜欢|大家)p(吃|大家,喜欢)p(苹果|大家,喜欢,吃) p(大家)表示“大家”这个词在语料库里面出现的概率; p(喜欢|大家)表示“喜欢”这个词出现在“大家”后面的概率; p(吃|大家,喜欢)表示“吃”这个词出现在“大家喜欢”后面的概率; p(苹果|大家,喜欢,吃)表示“苹果”这个词出现在“大家喜欢吃”后面的概率。 把这些概率连乘起来,得到的就是这句话平时出现的概率。 如果这个概率特别低,说明这句话不常出现,那么就不算是一句自然语言,因为在语料库里面很少出现。如果出现的概率高,就说明是一句自然语言 为了表示简单,上面的公式用下面的方式表示 p(s)=p(w1,w2,⋯wT)=∏i=1Tp(wi|Contexti) 其中,如果Contexti是空的话,就是它自己p(w),另外如“吃”的Context就是“大家”、“喜欢”,其余的对号入座。 现有模型有 N-gram模型 N-pos模型 ... Bengio的NNLM C&W 的 SENNA M&H 的 HLBL Mikolov 的 RNNLM Huang 的语义强化 N-gram 模型 接下来说 p(wi|Contexti) 的计算方法,上面看的是跟据这句话前面的所有词来计算,这样计算就很复杂,像上面那个例子得扫描四次语料库,这样一句话有多少个词就得扫描多少趟。语料库一般都比较大,越大的语料库越能提供准确的判断。这样计算开销太大。 可以想到的优化方法就是提前将p(wi|Contexti) 提前算好了,那么根据排列组上面的来算,对于一个只有四个词的语料库,总共就有4!+3!+2!+1!个情况要计算,那就是24个情况要计算;换成1000个词的语料库,就是∑i=11000i! 个情况需要统计,对于计算机来说,这根本不可能。 所以诞生了N-gram模型是大词汇连续语音识别中常用的一种语言模型,对中文而言,我们称之为汉语语言模型(CLM, Chinese Language Model)。汉语语言模型利用上下文中相邻词间的搭配信息,在需要把连续无空格的拼音、笔画,或代表字母或笔画的数字,转换成汉字串(即句子)时,可以计算出最大概率的句子,从而实现从到汉字的自动转换,无需用户手动选择,避开了许多汉字对应一个相同的拼音(或笔画串、数字串)的重码问题。 我们给定一个词,然后猜测下一个词是什么。当我说“艳照门”这个词时,你想到的下一个词时什么?我想大家很有可能会想到“陈冠希”,基本上不会有人想到“陈志杰”吧。N-Gram模型的主要思想就是这样的。 上面的context都是这句话中这个词前面的所有词作为条件的概率,N-gram就是只管这个词前面的n-1个词,加上它自己,总共n个词,计算p(wi|Contexti) 只考虑用这n个词来算,换成数学的公式来表示,就是 p(wi|Contexti)=p(wi|wi−n+1,wi−n+2,⋯,wi−1) 一般来说,n取2或者3 假设词表中词的个数 |V| = 20,000 词,那么有下面的一些数据。 照图中的数据看去,取n=3是目前计算能力的上限了。在实践中用的最多的就是bigram和trigram了,而且效果也基本够了。 如果一个词的出现仅依赖于它前面出现的一个词,那么我们就称之为bigram。即 P(T) = P(W1W2W3…Wn)=P(W1)P(W2|W1)P(W3|W1W2)…P(Wn|W1W2…Wn-1)≈P(W1)P(W2|W1)P(W3|W2)…P(Wn|Wn-1) 如果一个词的出现仅依赖于它前面出现的两个词,那么我们就称之为trigram。 那么我们怎么得到P(Wn|W1W2…Wn-1)呢?一种简单的估计方法就是最大似然估计(Maximum Likelihood Estimate)了。即P(Wn|W1W2…Wn-1) = (C(W1 W2…Wn))/(C(W1 W2…Wn-1)) 下面我们用bigram举个例子。假设语料库总词数为13,748 P(I want to eat Chinese food) =P(I)P(want|I)P(to|want)P(eat|to)P(Chinese|eat)*P(food|Chinese) =(3437/13748)*(1087/3437)*(786/1215)*(860/3256)*(19/938)*(120/213) =0.000154171 N-gram模型也会有写问题,总结如下: 1、n不能取太大,取大了语料库经常不足,所以基本是用降级的方法 2、无法建模出词之间的相似度,就是有两个词经常出现在同一个context后面,但是模型是没法体现这个相似性的。 3、有些n元组(n个词的组合,跟顺序有关的)在语料库里面没有出现过,对应出来的条件概率就是0,这样一整句话的概率都是0了,这是不对的,解决的方法主要是两种:平滑法(基本上是分子分母都加一个数)和回退法(利用n-1的元组的概率去代替n元组的概率)

优秀的个人博客,低调大师

07HTML基础-meta其它类型

meta其它类型 Keywords类型 作用: 告诉搜索引擎当前网页的关键词, 在SEO中非常重要, 能够提高搜索命中率, 让别人更容易找到你 格式: <meta name="keywords" content="IT前言技术、iOS技术、HTML5技术、Android技术" /> Descriiption类型 作用: 告诉搜索引擎当前网页的主要内容, 在SEO中非常重要, 当别人在搜索引擎中搜索到你的网站时会自动作为对你网站的描述信息展示给用户, 能够提高搜索命中率, 让别人更容易找到你 格式: <meta name="description" content="江哥热爱于IT前言技术、iOS技术、HTML5技术、Android技术研究" /> Author类型 作用: 告诉搜索引擎当前网页的作业, install B专用 格式: <meta name="author" content="Jonathan_Lee" /> Refresh类型 作用: 告诉浏览器多久自动刷新一次页面并指向新页面, 常用于新老域名交替时, 访问老域名自动跳转到新域名, 或用语一些需要定时刷新的聊天室等. 格式: <meta http-equiv="Refresh" content="2;URL=http://www.baidu.com/"> Robots类型 作用: 告诉搜索引擎当前网页的作业, 写给网络爬虫看的内容 格式: <meta name="robots" content="all|none|index|follow|noindex|nofollow" /> index: 告诉搜索引擎允许抓取当前页面 noindex:告诉搜索引擎不允许抓取当前页面 follow: 告诉搜索引擎可以从当前页面上找到链接,然后继续访问抓取下去 nofollow:告诉搜索引擎不允许从当前页面上找到链接, 拒绝其继续访问 all: 告诉搜索引擎允许抓取当前页面, 并且允许从此页找到链接继续访问 none: 告诉搜索引擎不允许抓取这个页面,并且不允许从此页找到链接、拒绝其继续访问 常见组合 <META NAME="ROBOTS" CONTENT="INDEX,FOLLOW">:可以抓取本页,而且可以顺着本页继续索引别的链接 有可以写成<META NAME="ROBOTS" CONTENT="ALL"> <META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW">:不许抓取本页,但是可以顺着本页抓取索引别的链接 <META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW">:可以抓取本页,但是不许顺着本页抓取索引别的链接 <META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">:不许抓取本页,也不许顺着本页抓取索引别的链接。 注意事项: 不要把两个对立的反义词写到一起,例如 例如<META NAME="ROBOTS" CONTENT="INDEX,NOINDEX"> 学习交流方式: 1.微信公众账号搜索: 李南江(配套视频,代码,资料各种福利获取) 2.加入前端学习交流群: 302942894 / 289964053 / 11550038

优秀的个人博客,低调大师

Docker基础之二: Linux快速入门

Linux快速使用教程 (提示:对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面。) 由于Docker是的容器都依赖于linux 内核,因此这一节主要是快速简单的介绍一下linux,如果你对linux比较熟悉,可略过。 1 为什么要使用linux 本身开源免费 支持众多开源的软件,诸如mysql, apache, mongodb, nodeJS等 基本上90%以上的互联网公司都使用linux作为后端服务器 云主机大多数都是基于linux系统 2 选取什么发行版本 Linux包含了很多的发行版本,包括ubuntu, centos, redhat, federa等等,但是他们都是基于linux kernel,各个发行版本都会做相应的包装、优化和简化,但是基本上内核版本不会有太大的差异。根据我的经验,我推荐使用ubuntu 或者centos。Ubuntu的优点是: 内核更新及时 软件安装和更新方便 GUI简单实用 CentOS就是Red Hat Enterprise 的开源版本,也是不错的选择,考虑到Ubuntu对Docker的完美支持,我一般推荐使用Ubuntu. 3 图形界面 Or 命令行界面 在安装的时候,ubuntu14.04提供了桌面版和服务器版,如果你要使用eclipse等工具进行开发,肯定要选择桌面版;如果你只是运行后台程序,最好选择服务器版,多使用服务器版把linux的命令用熟悉也是一种学习和锻炼。 4 英文 Or 中文 一般来说使用linux的用户都是相对专业的用户,我建议一律使用英文的操作系统。使用英文操作系统,可以熟悉英文,同时不会出现奇怪的乱码字符。 5 安装ubuntu 14.04 安装的时候就根据提示一步步的进行就可以了,在中途选择软件的时候,至少把SSH server选上,方便后续连接入系统。安装完毕后,我们通过之前设置的用户名和密码登录,接下来我们做一些常用配置。 5.1 启用root用户 root用户是linux的最高权限用户,相当于windows的超级管理员。我们可以通过下面的方式来启用root用户: root@gctest:~# sudo passwd Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully 根据提示输入当前用户的密码,然后再输入root的密码。sudo是以管理员身份运行命令。然后通过su 命令切换到root用户. 5.2 使用vim vim是ubuntu默认的文本编辑器,学习使用linux第一步就是学会使用vi。有的时候vim可能是没有安装的,我们需要手动来进行安装: root@gctest:~# sudo apt-get update && apt-get install vim Hit http://mirrors.163.com precise Release.gpg Hit http://mirrors.163.com precise Release Hit http://apt.ghostcloud.cn ubuntu-precise Release.gpg 安装成功之后,我们就可以使用vim了。vim 是vi的升级版,有了很多优化。常用的命令有: i – 从当前位置开始插入数据 a – 在当前位置后面插入数据 esc – 退出编辑模式 : - 在vim中执行一条指令,比如wq就是保存加退出 / - 搜索文字 上下左右键 – 移动光标,vi 里面不能用方向键,但是vim里面是可以使用的 虽然还有很多命令,但是用上面的基本就能操作了。 5.3 配置网络 ubuntu的网络配置是放在/etc/network/interfaces下的,我们通过vim来进行查看和修改 # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.1.10 netmask 255.255.0.0 gateway 192.168.0.1 dns-nameservers 61.139.2.69 218.6.200.139 修改完毕后,我们需要重启网络,一个比较好的方式是禁用再启用网络: root@gctest:~# ifdown -a && ifup -a 5.4 启用SSH Server SSH是Secure Shell的缩写,是linux的标准远程连接工具,通过这个工具我们可以以命令行的方式远程连接到 linux主机之上。首先我们需要检查在主机上是否安装了ssh server root@shev:~# dpkg -l | grep openssh-server ii openssh-server 1:6.6p1-2ubuntu2 amd64 secure shell (SSH) server, for secure access from remote machines 如果没有安装就不会有下面的输出。接下来,我们需要配置ssh # vim /etc/ssh/sshd_config #允许Root登录 PermitRootLogin yes #允许通过密码进行验证登录 PasswordAuthentication yes ` 保存退出后,执行 root@gctest:~# restart ssh 然后验证能否本地登录 root@shev:~# ssh root@localhost The authenticity of host 'localhost (::1)' can't be established. ECDSA key fingerprint is 3a:8c:00:76:4d:4d:62:a7:c7:18:a0:00:e6:d0:17:c7. Are you sure you want to continue connecting (yes/no)? 根据提示输入用户密码,如果可以登录说明安装成功,最后执行exit,退出ssh连接。 5.5 通过客户端连接linux主机 目前市面上有很多ssh客户端,包括免费的XShell, Secure CRT等,如果你使用linux或mac系统,本身就自带 ssh 客户端。Ssh 命令登录,需要指定用户和ip地址,格式如下: ssh <用户名>@<IP> #如:ssh root@192.168.1.10 表示,以root用户登录192.168.1.10机器。 5.6 免密码登录linux主机 免密码登录的原理是在你需要登录的远程主机上,存放当前机器的公钥。 在当前机器生成公钥和私钥 ssh-keygen 根据提示生成以后,会在~/.ssh/目录下生成相关的文件。这里的~指的是用户的目录,比如,在linux下abc用户的目录为/home/abc,root用户的目录为/root,在mac下是在/Users/<用户名> 将公钥id_rsa.pub拷贝到目标机器上 scp ~/.ssh/id_rsa.pub root@192.168.1.10:~/ 这行命令将当前用户的公钥拷贝到远程机器的root用户目录下 ssh root@192.168.1.10 ssh-keygen #在远端产生密钥 cat id_rsa.pub >> ~/.ssh/authorized_keys #加入信任列表 rm id_rsa.pub #删除公钥 exit #退出远程机器 这时已经返回到当前机器,再执行ssh root@192.168.1.10就不再需要输入密码了。 5.7 安装软件 Ubuntu软件安装用的是和debian一样的系统——apt。apt就是一个软件仓库,你只需要指定仓库地址,然后就可以进行搜索和安装. 添加源:默认的ubuntu源是指向国外的,位于/etc/apt/sources.list,我们可以在网上搜索国内的源,比如:网易源,阿里源等deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse 搜索软件root@shev:/etc/apt# apt-cache search apache2 | grep ^apache2 apache2 - Apache HTTP Server apache2-bin - Apache HTTP Server (binary files and modules) apache2-data - Apache HTTP Server (common files) apache2-dbg - Apache debugging symbols apache2-dev - Apache HTTP Server (development headers) apache2-doc - Apache HTTP Server (on-site documentation) apache2-mpm-event - transitional event MPM package for apache2 apache2-mpm-prefork - transitional prefork MPM package for apache2 apache2-mpm-worker - transitional worker MPM package for apache2 apache2-utils - Apache HTTP Server (utility programs for web servers) apache2.2-bin - Transitional package for apache2-bin apache2-mpm-itk - transitional itk MPM package for apache2 apache2-suexec - transitional package for apache2-suexec-pristine apache2-suexec-custom - Apache HTTP Server configurable suexec program for mod_suexec apache2-suexec-pristine - Apache HTTP Server standard suexec program for mod_suexec 安装软件root@shev:/etc/apt# apt-get install apache2 Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2-bin apache2-data libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap ssl-cert Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom apache2-utils openssl-blacklist The following NEW packages will be installed: apache2 apache2-bin apache2-data libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap ssl-cert 0 upgraded, 8 newly installed, 0 to remove and 72 not upgraded. Need to get 1285 kB of archives. After this operation, 5348 kB of additional disk space will be used. Do you want to continue? [Y/n] y 卸载软件 root@shev:/etc/apt# apt-get purge apache2 查找本地安装的软件 root@shev:/etc/apt# dpkg -l

优秀的个人博客,低调大师

Docker基础之八: 容器的网络

容器的网络 (对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面。) 根据之前的教程我们只是运行了简单的应用程序。之前我们编译了自己的image,在本节中我们将讲述如何管理容器的网络。 1 容器命名 如果你仔细查看docker ps的输出,你会看到docker自动生成了容器的名称: root@gctest:~/.ghostcloud/bin# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 09475612bb40 ghostcloud.cn:5005/gcali:1.0.8 "/usr/local/ghostclou" 2 minutes ago Up 2 minutes gcsagent f8eb8005de81 myimage "/bin/sh -c 'echo 'he" 15 minutes ago Exited (0) 15 minutes ago compassionate_cray 46ffa55f5680 ubuntu "/bin/bash" 37 minutes ago Exited (0) 29 minutes ago lonely_mirzakhani 40b4301839a1 ubuntu "echo hello-world" 40 minutes ago Exited (0) 40 minutes ago compassionate_torvalds compassionate_cray就是一个名称。通过容器命令,可以提供两个有用的功能: 默认你是通过容器的ID进行操作,你可以为特定容器设置容器名称,比如如果容器是一个web应用,你可以把它标记为web。 容器之间,可以通过名称进行相互的引用和链接. 容器的名称通过--name来进行设置: $ docker run -d -P --name web training/webapp python app.py 我们可以通过docker inspect来查看容器的详细参数: ``` ##2 容器的默认网络 Docker自身通过网络驱动来管理网络。默认Docker提供两种网络驱动,bridge和overlay。你可以自己编写网络驱动作为插件,但是这个工作比较麻烦,这儿就省略了。 Docker安装后,会自动生成3种网络: root@gctest:~# docker network ls NETWORK ID NAME DRIVER 782f465fa194 none null 6887a082de45 host host 6e75573f448f bridge bridge bridge是一种特殊的网络模式,这是默认的网络模式。我们可以通过inspect来查看详细信息: ```Bash root@gctest:~# docker network inspect bridge [ { "Name": "bridge", "Id": "6e75573f448f525f4edc07be25318af82f3a2c79640aa00eb403208583d542f3", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Config": [ { "Subnet": "172.17.0.1/16", "Gateway": "172.17.0.1" } ] }, "Containers": { "85a568452350d44a467802383308b318a9bb79301714913d7df7a54bfc770567": { "EndpointID": "48fbb1fa53db756cc4afdf4db81182bd4347bf208dba49ed27c3187ea2d6c8c0", "MacAddress": "02:42:ac:11:00:02", "IPv4Address": "172.17.0.2/16", "IPv6Address": "" } }, "Options": { "com.docker.network.bridge.default_bridge": "true", "com.docker.network.bridge.enable_icc": "true", "com.docker.network.bridge.enable_ip_masquerade": "true", "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0", "com.docker.network.bridge.name": "docker0", "com.docker.network.driver.mtu": "1500" } } ] 从上面我们可以看出,桥接的网卡是172.17.0.1/16,网关是172.17.0.1。其中有一个容器连接到了这个桥接网络中,它的ip是172.17.0.2/16。 如果你想将容器从网络中移除,你可以使用: root@gctest:~# docker network disconnect bridge 85a5 root@gctest:~# docker network inspect bridge [ { "Name": "bridge", "Id": "6e75573f448f525f4edc07be25318af82f3a2c79640aa00eb403208583d542f3", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Config": [ { "Subnet": "172.17.0.1/16", "Gateway": "172.17.0.1" } ] }, "Containers": {}, "Options": { "com.docker.network.bridge.default_bridge": "true", "com.docker.network.bridge.enable_icc": "true", "com.docker.network.bridge.enable_ip_masquerade": "true", "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0", "com.docker.network.bridge.name": "docker0", "com.docker.network.driver.mtu": "1500" } } ] 3 创建自己的桥接网络 Docker原生支持bridge和overlay网络,bridge只能在单个主机上使用。overlay可以在多台主机间使用,这部分将在后续进行详细讲解。下面我们就来建立一个自己的网络: root@gctest:~# docker network create -d bridge mybridge 36328af2a0b1cf04c7f13254804abbea81b32cc0361b4407fb68e9f70b8ce6a9 root@gctest:~# docker network ls NETWORK ID NAME DRIVER 6e75573f448f bridge bridge 782f465fa194 none null 6887a082de45 host host 36328af2a0b1 mybridge bridge -d表示使用已有的bridge来创建新的网络,你也可以省略该参数,这个是默认参数。 4 添加容器到网络 默认情况,容器使用的是同一个bridge网络,这样可能有一定的安全隐患,为了做到完全的隔离,我们可以自己建一个桥接网络,然后在启动容器时将容器加入到自己的网络中。比如: root@gctest:~# docker run -it --net=mybridge ubuntu /bin/bash 如果你inspect你的网络,你会看到详细的连接信息: root@gctest:~/.ghostcloud/bin# docker network inspect mybridge [ { "Name": "mybridge", "Id": "36328af2a0b1cf04c7f13254804abbea81b32cc0361b4407fb68e9f70b8ce6a9", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Config": [ {} ] }, "Containers": { "2c1fda7b6efda429d2bf7c85a131200ee370512cea214a7fe423c28d952e1320": { "EndpointID": "1b988bffa26ca9e6ee3cbfc5081b8adb5dcb5cde359404ff6afb73fb954a2b93", "MacAddress": "02:42:ac:12:00:03", "IPv4Address": "172.18.0.3/16", "IPv6Address": "" }, "85a568452350d44a467802383308b318a9bb79301714913d7df7a54bfc770567": { "EndpointID": "0440158825ce6c1e6efc224238ab83084761a9c2e6fa28f162d2188e514aa737", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" } }, "Options": {} } ] 如果启动时没有指定网络或想加入多个网络,可以通过connect命令加入。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册