服务启动参数

ETCD 启动参数可以调整服务和集群的行为。也可以通过环境变量的形式传入,命名全部以 ETCD_ 为前缀,例如 ETCD_NAME=“cluster-name”

通用参数

这些参数主要跟节点自身配置相关:

参数说明
–config-file服务配置文件路径
–name ‘default’设置成员节点名称,建议每个成员配置唯一且可识别的名称
–data-dir ‘${name}.etcd’数据存储的目录
–wal-dir ‘’指定wal (write-ahead-log) 目录,存有数据库操作日志
–snapshot-count ‘10000’提交多少次执行快照
–max-snapshots 5最多保留多少个 snapshot,0 表示无限制
–max-wals 5最多保留多少个 wal 文件, 0 表示无限制
阅读全文 »

指令说明

配置指令

指令说明
ARG定义创建镜像过程中使用的变量
FROM定义创建镜像的基础镜像
LABEL为生成镜像添加元数据标签信息
EXPOSE声明镜像内服务监听的端口
ENV指定环境变量
ENTRYPOINT制定镜像的默认入口命令
VOLUME创建一个数据卷挂载点
USER指定容器运行时的用户名或 UID
WORKDIR配置工作目录
ONBUILD创建子镜像时指定自动执行的操作指令
SEOPSIGNAL指定退出的信号值
HEALTHCHECK配置所启动容器如何进行健康检查
SHELL指定默认 shell 类型
阅读全文 »

Hexo 图片 URL 错误

使用 Hexo 3.0 搭建博客,使用 npm 安装 hexo-asset-image 引入图片,图片生成的 URL 错误:
图片加载失败...
这样生成的 URL 会出现找不到文件的资源。
这个问题不是因为图片引用问题,而是 hexo-asset-image 的问题,替换使用 github 上面最新版本。就可以解决。
图片加载失败...
卸载掉旧的 hexo-asset-image 安装 github 上最新的版本。再次生成资源即可。
图片加载失败...

介绍

Docker 提供两种服务访问的基本功能:

  • 允许映射容器内应用的服务端口到本地宿主机端口。
  • 多个容器间通过容器名来快速访问,称作容器互联机制。

端口映射时间容器访问

从外部访问容器应用

可以通过 docker run 子命令的 -p 或 -P 参数指定端口映射。两种参数的区别在于:

  • -P : Docker 会随机映射一个端口到内部容器开放的网络端口。
    图片加载失败...
  • -p : 指定要映射的端口,一个端口上只能绑定一个容器。支持的格式 IP:HostPort:ContainerPort | IP::ContainerPort | HostPort:ContainerPort。且,还可以使用多个 -p 参数绑定多个端口。

    HostPort:ContainerPort

    这种格式可以将宿主机端口绑定到容器指定端口。
    图片加载失败...

    IP:HostPort:ContainerPort

    这种格式指定映射到一个 IP 地址与端口到容器指定端口。例如指定 127.0.0.1:80 映射到 nginx 容器的 80 端口。
    图片加载失败...

    IP::ContainerPort

    这种格式可以绑定指定地址的任意端口绑定到容器的 80 端口,地址主机上会自动分配一个端口。
    图片加载失败...
    同时使用 /udp 标记可以指定 UDP 协议端口:
    图片加载失败...

    查看映射端口配置

    docker port 可以查看当前映射端口配置,也可以查看绑定的地址:
    图片加载失败...
阅读全文 »

介绍

使用 Docker,经常需要对数据进行持久化,或者需要在多个容器之间进行数据共享。
容器中的数据管理主要有两种方式:

  • 数据卷 (Data Volumes) : 容器内数据直接映射到宿主机环境。
  • 数据卷容器 (Data Volumes Container) : 使用特定容器维护数据卷。

数据卷

数据卷 (Data Volumes) 是一个可供容器使用的特殊目录,可以将宿主机的目录直接映射进容器,类似于 Linux 中的 mount 行为。
数据卷可以提供的特性:

阅读全文 »

介绍

容器是 Docker 的另一个重要概念。简单来说,容器是镜像的一个运行实例。所不同的是,镜像是静态只读文件,而容器带有运行时需要的可写文件层,同时容器中的应用进程处于运行状态。
如果认为虚拟机是模拟运行的一整套操作系统(包括操作系统内核,应用运行态环境和其他系统环境)和跑在上面的应用。那么 Docker 容器就是独立运行的一个 (或一组) 应用,以及他们必需的运行环境。

阅读全文 »

Who‘s ETCD

ETCD 是 CoreOS 团队于 2013 年 6 月发起的开源项目,它的目标是构建一个高可用的分布式键值 (key - value)数据库,基于 Go 语言实现。在分布式系统与微服务中,服务的配置信息的管理分享,服务的注册发现是一个很基础且也是很重要的一个问题。在 ETCD 之前有很多成熟且完善的很多服务发现注册的第三方开源软件。如 Zookeeper,ETCD 也是受到它的启发而创造的。

阅读全文 »

说明

Docker 使用 docker run 命令载入 镜像,启动容器。详细命令格式如下:

1
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

run 的 OPTIONS 说明

常用的 docker run 命令的一些说明。不是全部的,用到的就更新。

OPTIONS 名称值类型描述
–add-hoststring添加自定义主机到 IP 映射(host:ip)
–attach, -alist指定标准输入、输出以及错误输出,可选: -a stdin -a stdout -a stderr
–blkio-weightuint16block 块的 IO 权重,权重值在 10 到 1000 之间,或者使用 0 禁用,默认为 0
–blkio-weight-devicelistblock 块的 IO 相当于设备的权重
-d, –detach容器后台运行,并返回容器 ID
–detach-keysstring覆盖分离容器的键序列
–devicelist添加主机中的设备到容器
–device-cgroup-rulelist将规则添加到 cgroup 允许的设备列表
–device-read-bpslist设置设备读取的速率(字节 /s)
–device-read-iopslist设置设备的读取速率(IO/s)
–device-write-bpslist限制写入速率(字节 /s)到设备
–device-write-iopslist限制写入速率(IO/s)到设备
–disable-content-trustbool跳过镜像验证,默认为 true
–dnslist设置自定义 DNS 服务器
–dns-optionlist设置 DNS 选项
–dns-searchlist设置自定义 DNS 搜索域名
–entrypointstring覆盖镜像的默认入口点
-e, –envlist设置容器环境变量
–env-filelist设置容器环境变量文件
–exposelist公开一个或多个端口
–group–addlist添加其他群组加入
–cap-addlist给容器添加新的 Linux 功能,比如说一些系统设置的功能
–cap-droplist移除容器的一些 Linux 功能
–cgroup-parentstring为容器指定父 cgroup,cgroups 实现 Linux 的 LXC 资源管理
–cidfilestring将容器 ID 写入到指定的文件
–cpu-periodint设置限制 CPU 公平调度程序的调度周期
–cpu-quotaint设置容器占用 CPU 最大时间配额
–cpu-rt-periodint设置微秒为单位设置公平调度程序的调度周期
–cpu-rt-runtimeint设置微妙为单位设置 CPU 最大时间配额
-c, –cpu-sharesint设置当前容器的 CPU 占用权重,默认所有的容器权重都是 1024,两个 CPU 则是 2048。如此类推。
–cpusdecimal设置容器占用 CPU 数量
–cpuset-cpusstring绑定容器使用指定的 CPU
–cpuset-memsstring同样绑定容器使用,只应用 NUMA 架构的 CPU
-d, –detach在后台运行容器,并打印容器的 ID
-i以交互模式运行容器,通常与 -t 一起使用
-t为容器分配一个伪输入终端,通常与 -i 一起使用
-plist端口映射 宿主机 port: 容器 port
–namestring为容器指定一个名称
–dnslist为容器设置自定义 DNS 服务器,默认与宿主机一致
–dns-searchlist为容器设置自定义 DNS 搜索域名
-hstring指定容器 hostname
-estring设置容器环境变量
-m, –memorybytes设置容器的内存限制
-llist设置容器的源数据
-v, –volumelist设置映射到宿主机的数据卷
-w, –workdirstring设置容器内的工作路径

介绍

镜像是 Docker 中重要的概念,Docker 把应用程序及其依赖打包在 Image 文件中。然后 Docker 通过加载 Image 文件载入生成容器实例。Image 文件可以看作是容器的模板。Docker 根据 Image 文件生成实例,同一个 Image 可以生成多个同时运行的容器实例。
Image 是一个二进制文件,通常一个 Image 都是通过继承另一个父镜像,加上一些新的个性化设置之后生成的。例如,在一个 Ubuntu 的镜像上可以添加 Nginx 形成新的镜像。

阅读全文 »

这一系列博客都是在看 《Docker 技术入门与实战 (第3版)》 的一些记录

我看的时候并不是以顺序看的,而是从第一部分>第四部分>第三部分的顺序。

Docker 与虚拟机

Docker 是一个轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器 (LXC) 等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不再需要关心容器的管理。使操作更为简便。用户操作 Docker 就像操作一个快速轻量级的虚拟机一样简单。当然它比虚拟机启动的更快。

阅读全文 »

Nginx 是啥?

Nginx 与 Apache 类似,都是 WEB 的服务器。同样的基于 REST 架构风格,以统一资源描述符 (Uniform Resources Identifier) URI 或者统一资源定位符 (Uniform Resources Locator) URL 作为沟通依据,通过 HTTP 协议提供网站服务。
Nginx 是由俄罗斯工程师 Igor Sysoev 在为 Rambler Media 工作期间,使用 C 语言开发的。Nginx 作为 WEB 服务器一直为 Rambler Media 提供出色而稳定的服务。
之后 Igor Sysoev 将 Nginx 代码开源, 并赋予自由软件许可。

阅读全文 »

节点回退

1
git reset --head HEAD_ID

HEAD_ID 替换为你想要回退的 commit 节点的 HEAD 值。查看 HEAD 值可以使用:

1
git commit log

强制提交

1
git push -f origin branch_name

执行版本回退时想要提交,将会提示,你想要提交的节点早于当前远程分之所在的节点,不能提交。并提示需要 pull 下最新的节点内容。
如果你想强制提交的时候可以使用以上的命令,将 branch_name 替换成为你想要的强制提交到的远程分支名。

阅读全文 »

配置SSH的主要功能

主要是避免每次push时都需要输入账号密码。

生成SSH公钥

使用 ssh-keygen 工具生成 ssh 公钥与秘钥

1
ssh-keygen -t rsa -C "your_email"

在终端中执行以上命令,并将 ‘your_email’ 替换为你的 Email。前面几个使用默认,无需修改,但是要注意看会让你输入你的密码,并且还有一次重复验证密码。

阅读全文 »

简介

当一个SQL查询非常比较慢,你可能会想到。给某个列加个索引吧,那到底什么是索引,索引又是如何工作的呢?为什么加了索引查询就变快了呢?

常见的索引模型

  • 哈希表

  • 有序数组

  • 搜索树

    哈希表

    哈希表是一种以键 - 值对形式的k-v结构,只要输入待查找的值的key,就可以找到对应的值。哈希主要是把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。无可避免的,多个 key 经过哈希函数运算之后,会出现相同的值。处理这种情况的方法就是拉出一个链表。当你需要查找时,通过哈希函数算出 key ,然后遍历 value 链表。找到这个值。

  • 优点:无序的,新增添加会非常快。

  • 缺点:哈希计算出的 key 无序,查找区间值很慢。

阅读全文 »

什么是 RESTful

这个的话在这里还是不做太多赘述,留等以后再开一篇关于 RESTful 的博客。这里只简单的说明。

RESTful 可以理解为一套接口规范,以资源为核心的一套规范。比如”用户信息”就可以看成是一个资源,针对”用户信息”这个资源就有相应的CURD操作。对应HTTP的Post,Put,Get,Delete请求。

阅读全文 »