Docker集群管理基礎(chǔ)

這篇文章講了Docker-machine新啼,Docker-compose拉宗,Docker-swarm的一些基礎(chǔ)知識(shí)如孝。

這里是基于docker1.12之前的版本

1 Docker Machine

1.1 簡(jiǎn)介

Docker Machine 是 Docker 官方編排(Orchestration)項(xiàng)目之一操禀,負(fù)責(zé)在多種平臺(tái)
上快速安裝 Docker 環(huán)境君躺。
現(xiàn)在支持很多驅(qū)動(dòng)寇蚊,通過(guò)-d參數(shù)即可笔时,比如:

驅(qū)動(dòng)

1.2 安裝

Linux下:

$curl -L https://github.com/docker/machine/releases/download/v0.10.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
    chmod +x /tmp/docker-machine &&
    sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

or mac環(huán)境下:

$brew install docker-machine

1.3 運(yùn)行

v0.10.0有一個(gè)比較大的change,如官網(wǎng)所說(shuō):

There is one small breaking change in this release. The default driver for docker-machine create has been changed from none to virtualbox. virtualbox was far more common than none, so this change allows you to quickly create VirtualBox machines like so:

$ docker-machine create manager
...
$ docker-machine create worker
...

boot2docker:
如果上述中出現(xiàn)問(wèn)題仗岸,可以手工安裝boot2docker:
https://github.com/boot2docker/boot2docker/releases

$curl -Lo ~/.docker/machine/cache/boot2docker.iso https://github.com/boot2docker/boot2docker/releases/download/v1.13.1/boot2docker.iso

現(xiàn)在一個(gè)大的問(wèn)題就是允耿,github使用的amazon的云被墻了借笙,所以都不行。

2 Docker-compose

2.1 簡(jiǎn)介

Docker Compose 是 Docker 官方編排(Orchestration)項(xiàng)目之一较锡,負(fù)責(zé)快速在集
群中部署分布式應(yīng)用业稼。

docker compose
  • 定義和運(yùn)行多個(gè)Docker容器的工具
  • 一個(gè)文件 – docker-compose.yml
  • 一條命令 – docker-compose up

2.2 安裝

$curl -L https://github.com/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

2.3 例子

docker-compose.yml

weba:
  build: ./web
  expose:
    - 80
webb:
  build: ./web
  expose:
    - 80
webc:
  build: ./web
  expose:
    - 80
haproxy:
  image: haproxy:latest
  volumes:
    - ./haproxy:/haproxy-override
    - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
  links:
    - weba
    - webb
    - webc
  ports:
    - "80:80"
    - "70:70"
  expose:
    - "80"
    - "70"  

子文件夾結(jié)構(gòu)如下:

文件架結(jié)構(gòu)

haproxy目錄下:haproxy.cfg是配置文件。
web目錄下:python web啟動(dòng)的dockerfile及index.py和html這兩個(gè)后端和前端文件蚂蕴。
dockerfile如下所示:

FROM python:2.7
WORKDIR /code
ADD . /code
EXPOSE 80
CMD python index.py

最后使用docker-compose up 即可啟動(dòng)低散。

2.4 Docker-compose命令集

  • 管理鏡像 – build/pull
  • 管理服務(wù) – up/start/stop/kill/rm/scale
  • 服務(wù)狀態(tài) – ps/logs/port
  • 一次性命令 - run

2.5 Docker Compose工作原理

  • 工程(project)/服務(wù)(service)/容器(container)
  • 調(diào)用docker-py庫(kù)與遠(yuǎn)程Docker Daemon/Swarm API -Server通信
  • 按依賴(lài)性排序/調(diào)度

3 Docker Swarm

3.1 簡(jiǎn)介

Docker Swarm 是 Docker 官方編排(Orchestration)項(xiàng)目之一,負(fù)責(zé)對(duì) Docker 集
群進(jìn)行管理骡楼。

Docker Swarm
  • Docker集群管理工具
  • 多個(gè)Docker主機(jī)抽象成一個(gè)單一的虛擬主機(jī)
  • 支持標(biāo)準(zhǔn)Docker API

Docker Swarm 是 Docker公司官方在 2014 年 12月初發(fā)布的一套管理 Docker 集群 的工具熔号。它將一群 Docker 宿主機(jī)變成一個(gè)單一的,虛擬的主機(jī)鸟整。
Swarm 使用標(biāo)準(zhǔn)的 Docker API 接口作為其前端訪問(wèn)入口引镊,換言之,各種形式的 Docker 工具比如 Dokku篮条,Compose弟头,Krane,Deis涉茧,docker-py亮瓷,Docker 本身等都 可以很容易的與 Swarm 進(jìn)行集成。

工作原理如下:

工作原理

下面我使用2個(gè)方向來(lái)介紹Docker Swarm的使用:

  1. 使用Docker-machine來(lái)創(chuàng)建swarm集群
  2. 使用原生Swarm命令來(lái)創(chuàng)建Swarm集群

3.2 使用Docker-machine來(lái)創(chuàng)建swarm集群

Docker 集群管理需要使用服務(wù)發(fā)現(xiàn)(Discovery service backend)功能降瞳,Swarm支持 以下的幾種方式:DockerHub 提供的服務(wù)發(fā)現(xiàn)功能嘱支,本地的文件,etcd挣饥,consul除师, zookeeper 和 IP 列表,本節(jié)會(huì)詳細(xì)講解前三種方式扔枫,其他的用法都是大同小異 的汛聚。

3.2.1 使用Dockerhub提供的服務(wù)發(fā)現(xiàn)功能

參考:https://docs.docker.com/swarm/discovery/

Step1: 創(chuàng)建Token

swarm create - 從Docker Hub發(fā)現(xiàn)服務(wù)申請(qǐng)一個(gè)唯一標(biāo)識(shí)此集群的token

$docker run swarm create
b7625e5a7a2dc7f8c4faacf2b510078e

Step2:創(chuàng)建Swarm管理節(jié)點(diǎn)及工作節(jié)點(diǎn)

管理節(jié)點(diǎn)swarm-master:

docker-machine create \
     -d virtualbox \
    --engine-registry-mirror http://db8ff3fd.m.daocloud.io\
     --swarm \
     --swarm-master \
     --swarm-discovery token://b7625e5a7a2dc7f8c4faacf2b510078e \
     swarm-master
docker@swarm-master:~$ docker ps --no-trunc
CONTAINER ID                                                       IMAGE                      COMMAND                                                                                                                                                                                                                                                         CREATED             STATUS              PORTS                                            NAMES
2c4773d7ca84f1547580aa43ec38250651fb8ec9a005062d2dc4fbf130490771   microbox/etcd:latest       "/bin/etcd -addr 10.0.2.15:4001 -peer-addr 10.0.2.15:7001"                                                                                                                                                                                                      14 hours ago        Up 14 hours         0.0.0.0:4001->4001/tcp, 0.0.0.0:7001->7001/tcp   shipyard-discovery
3d4493eb0934ac1aba15c503cea4f9512a0e3c50d4d0c61ca9674ea95e23cf36   russmckendrick/nginx-php   "supervisord"                                                                                                                                                                                                                                                   18 hours ago        Up 18 hours         0.0.0.0:80->80/tcp, 443/tcp                      kickass_aryabhata
3e81e904465f9a162a7b6e8059d9bb46d237795ded58db7f50f038f6a500b775   swarm:latest               "/swarm join --advertise 192.168.99.101:2376 etcd://192.168.99.100:4001"                                                                                                                                                                                        18 hours ago        Up 18 hours         2375/tcp                                         swarm-agent
0ecc90458128926e56cbcc28f02bab3fc759ceba92cb3e3d167136442180d912   swarm:latest               "/swarm manage --tlsverify --tlscacert=/var/lib/boot2docker/ca.pem --tlscert=/var/lib/boot2docker/server.pem --tlskey=/var/lib/boot2docker/server-key.pem -H tcp://0.0.0.0:3376 --strategy spread --advertise 192.168.99.101:3376 etcd://192.168.99.100:4001"   18 hours ago        Up 18 hours         2375/tcp, 0.0.0.0:3376->3376/tcp                 swarm-agent-master

swarm manage – 啟動(dòng)swarm manage進(jìn)程

工作節(jié)點(diǎn)swarm-node-00:

docker-machine create \
     -d openstack \
     --engine-registry-mirror http://db8ff3fd.m.daocloud.io\
     --swarm \
     --swarm-discovery token://b7625e5a7a2dc7f8c4faacf2b510078e  \
     swarm-node-00
 docker@swarm-node-00:~$ docker ps --no-trunc
CONTAINER ID                                                       IMAGE                      COMMAND                                                                    CREATED             STATUS              PORTS                         NAMES
f9fe781e0e34fa73921d7fc741a9e7648f982a99a79f612535727275635b8166   russmckendrick/nginx-php   "supervisord"                                                              3 weeks ago         Up 3 weeks          0.0.0.0:80->80/tcp, 443/tcp   brave_heyrovsky
0914302f17258775f95aab4c61c725735dd004fba6df8b2a9b582d8e6e883d64   mysql                      "docker-entrypoint.sh mysqld"                                              3 weeks ago         Up 3 weeks          3306/tcp                      mysql
759617d53f392279f3c927f3b6583b0eec17eed4d1ccb95b1d70e55090a69654   swarm:latest               "/swarm join --advertise 192.168.99.102:2376 etcd://192.168.99.100:4001"   3 weeks ago         Up 3 weeks          2375/tcp                      swarm-agent 

這樣我們就創(chuàng)造了一個(gè)名字為swarm-master的管理節(jié)點(diǎn),及swarm-node-00和swarm-node-01的集群短荐。

Step3: 顯示集群信息

集群信息
eval $(docker-machine env --swarm swarm-master)
XiaoleideMacBook-Pro:nss professor$ docker-machine ls
NAME            ACTIVE   DRIVER       STATE     URL                         SWARM                   DOCKER    ERRORS
localtest       *        virtualbox   Running   tcp://192.168.99.100:2376                           v1.13.1
swarm-master    -        virtualbox   Running   tcp://192.168.99.101:2376   swarm-master (master)   v1.13.1
swarm-node-00   -        virtualbox   Running   tcp://192.168.99.102:2376   swarm-master            v1.13.1
swarm-node-01   -        virtualbox   Running   tcp://192.168.99.103:2376   swarm-master            v1.13.1
XiaoleideMacBook-Pro:nss professor$ eval $(docker-machine env --swarm swarm-master)
XiaoleideMacBook-Pro:nss professor$ docker info
Containers: 11
 Running: 7
 Paused: 0
 Stopped: 4
Images: 6
Server Version: swarm/1.2.6
Role: primary
Strategy: spread
Filters: health, port, containerslots, dependency, affinity, constraint, whitelist
Nodes: 3
 swarm-master: 192.168.99.101:2376
  └ ID: RIRL:X5TL:EQQP:LSON:ANTV:TT4F:ZCVN:QPHN:2EX7:ID5C:VK5A:LZ3X
  └ Status: Healthy
  └ Containers: 2 (2 Running, 0 Paused, 0 Stopped)
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.021 GiB
  └ Labels: kernelversion=4.4.47-boot2docker, operatingsystem=Boot2Docker 1.13.1 (TCL 7.2); HEAD : b7f6033 - Wed Feb  8 20:31:48 UTC 2017, provider=virtualbox, storagedriver=aufs
  └ UpdatedAt: 2017-03-28T07:25:40Z
  └ ServerVersion: 1.13.1
 swarm-node-00: 192.168.99.102:2376
  └ ID: GJIW:ABWA:6OP5:ZHYU:2GWG:NV32:QJJE:5H7Y:ISTD:62AL:VEWL:47Y3
  └ Status: Healthy
  └ Containers: 6 (3 Running, 0 Paused, 3 Stopped)
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.021 GiB
  └ Labels: kernelversion=4.4.47-boot2docker, operatingsystem=Boot2Docker 1.13.1 (TCL 7.2); HEAD : b7f6033 - Wed Feb  8 20:31:48 UTC 2017, provider=virtualbox, storagedriver=aufs
  └ UpdatedAt: 2017-03-28T07:25:40Z
  └ ServerVersion: 1.13.1
 swarm-node-01: 192.168.99.103:2376
  └ ID: LOW7:5ZSC:7XQR:KLRU:CIHB:IF34:6DEZ:EGBB:W3BS:D54H:TPA5:MF3D
  └ Status: Healthy
  └ Containers: 3 (2 Running, 0 Paused, 1 Stopped)
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.021 GiB
  └ Labels: kernelversion=4.4.47-boot2docker, operatingsystem=Boot2Docker 1.13.1 (TCL 7.2); HEAD : b7f6033 - Wed Feb  8 20:31:48 UTC 2017, provider=virtualbox, storagedriver=aufs
  └ UpdatedAt: 2017-03-28T07:25:40Z
  └ ServerVersion: 1.13.1

通過(guò)docker-machine env swarm-master倚舀,可以直接操控swarm-master,進(jìn)一步來(lái)控制整個(gè)集群忍宋。
其中:eval $(docker-machine env --swarm swarm-master)痕貌,可以理解為直接控制了這個(gè)docker管理節(jié)點(diǎn)。
比如:

XiaoleideMacBook-Pro:nss professor$ docker ps
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                                NAMES
7310e34db6b5        russmckendrick/nginx-php   "supervisord"            3 weeks ago         Up 3 weeks          192.168.99.103:80->80/tcp, 443/tcp   swarm-node-01/elated_joliot
f9fe781e0e34        russmckendrick/nginx-php   "supervisord"            3 weeks ago         Up 3 weeks          192.168.99.102:80->80/tcp, 443/tcp   swarm-node-00/brave_heyrovsky
0914302f1725        mysql                      "docker-entrypoint..."   3 weeks ago         Up 3 weeks          3306/tcp                             swarm-node-00/mysql

tips: --engine-registry-mirror http://db8ff3fd.m.daocloud.io
生成machine之前加入這個(gè)參數(shù)可以使用daocloud的加速器糠排,國(guó)外太慢舵稠。

step4:創(chuàng)建容器
例子1 :創(chuàng)建2個(gè)容器

$docker -H 192.168.99.101:2376 pull redis
$docker -H 192.168.99.102:2376 pull mysql

docker run -d --name mysql -e affinity:image==mysql -e MYSQL_ROOT_PASSWORD=root mysql

docker run -d --name redis1 -e affinity:image==redis redis

eval $(docker-machine env --swarm swarm-master)
XiaoleideMacBook-Pro:compose-haproxy-web professor$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
72896f932fae        mysql               "docker-entrypoint..."   4 seconds ago       Up 3 seconds        3306/tcp            swarm-node-00/mysql
68a7c531ec08        redis               "docker-entrypoint..."   3 minutes ago       Up 3 minutes        6379/tcp            swarm-master/redis1

可以看出來(lái),使用-H的話(huà),可以?xún)蓚€(gè)鏡像分別在兩個(gè)node中

例子2:創(chuàng)建3個(gè)容器

$docker -H 192.168.99.101:2376 pull russmckendrick/nginx-php
$docker -H 192.168.99.102:2376 pull russmckendrick/nginx-php
$docker -H 192.168.99.103:2376 pull russmckendrick/nginx-php

運(yùn)行3次哺徊,啟動(dòng)3個(gè)容器室琢。
docker run -d -p 80:80 russmckendrick/nginx-php

雖然端口一樣。但是swarm將其分到兩個(gè)節(jié)點(diǎn)上落追。

XiaoleideMacBook-Pro:nss professor$ docker ps
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                                NAMES
3d4493eb0934        russmckendrick/nginx-php   "supervisord"            2 seconds ago       Up 2 seconds        192.168.99.101:80->80/tcp, 443/tcp   swarm-master/kickass_aryabhata
7310e34db6b5        russmckendrick/nginx-php   "supervisord"            3 weeks ago         Up 3 weeks          192.168.99.103:80->80/tcp, 443/tcp   swarm-node-01/elated_joliot
f9fe781e0e34        russmckendrick/nginx-php   "supervisord"            3 weeks ago         Up 3 weeks          192.168.99.102:80->80/tcp, 443/tcp   swarm-node-00/brave_heyrovsky
0914302f1725        mysql                      "docker-entrypoint..."   3 weeks ago         Up 3 weeks          3306/tcp                             swarm-node-00/mysql
3.2.2 使用etcd提供的服務(wù)發(fā)現(xiàn)功能

這里不做贅述盈滴,只把如何配置etcd服務(wù),及如何修改docker-machine的命令列一下:

啟動(dòng)etcd服務(wù):

$docker-machine create \
    --engine-registry-mirror http://db8ff3fd.m.daocloud.io\
    localtest
$eval $(docker-machine env localtest)
$docker run -ti -d -p 4001:4001 -v /etc/ssl/certs/:/etc/ssl/certs/ docker.io/microbox/etcd --name discovery

這里可以看出轿钠,使用docker-machine啟動(dòng)了一個(gè)docker環(huán)境 localtest巢钓,ssh進(jìn)去后,創(chuàng)建一個(gè)etcd的鏡像谣膳,并暴露4001端口竿报。

啟動(dòng)swarm管理及工作節(jié)點(diǎn):

$docker-machine create \
     -d virtualbox \
    --engine-registry-mirror http://db8ff3fd.m.daocloud.io\
     --swarm \
     --swarm-master \
     --swarm-discovery etcd://192.168.99.100:4001 \
     swarm-master
$docker-machine create \
     -d openstack \
     --engine-registry-mirror http://db8ff3fd.m.daocloud.io\
     --swarm \
     --swarm-discovery etcd://192.168.99.100:4001  \
     swarm-node-00
$docker-machine create \
     -d virtualbox \
     --engine-registry-mirror http://db8ff3fd.m.daocloud.io\
     --swarm \
     --swarm-discovery etcd://192.168.99.100:4001 \
     swarm-node-01
$ docker run swarm list etcd://192.168.99.100:4001
time="2017-03-28T07:32:45Z" level=info msg="Initializing discovery without TLS"
192.168.99.101:2376
192.168.99.102:2376
192.168.99.103:2376

可以看出和上面github提供的token相比铅乡,--swarm-discovery使用的是etcd
后面就一樣了继谚。

3.3 使用原生命令啟動(dòng)swarm集群

根據(jù)官網(wǎng)的介紹。

In Docker 1.12 and higher, Swarm mode is integrated with Docker Engine.

所以阵幸,對(duì)于Docker1.12版本之前可以參閱此文檔中使用docker-machine的辦法來(lái)創(chuàng)建swarm集群花履。
對(duì)于Docker1.12版本之后,可以用新的姿勢(shì)來(lái)創(chuàng)造swarm集群挚赊。具體參閱另外一篇文章

3.4 docker-swarm工作原理

3.4.1 服務(wù)發(fā)現(xiàn) –swarm-discovery

總共有以下幾種方式:

  • Docker Hub (token://<token>)
  • etcd (etcd://<etcd服務(wù)器ip:端口>)
  • consul (consul://<consul服務(wù)器ip:端口>)
  • zookeeper (zk://<zookeeper服務(wù)器ip:端口>)
  • 靜態(tài)文件(file://文件路徑)
  • 節(jié)點(diǎn)發(fā)現(xiàn)(nodes://<工作節(jié)點(diǎn)ip:端口>)
3.4.2 調(diào)度機(jī)制

swarm支持多種調(diào)度策略來(lái)選擇節(jié)點(diǎn)诡壁。每次在swarm啟動(dòng)container的時(shí)候,swarm 會(huì)根據(jù)選擇的調(diào)度策略來(lái)選擇節(jié)點(diǎn)運(yùn)行container荠割。目前支持的有: spread妹卿,binpack和 random
在執(zhí)行 swarm manage 命令啟動(dòng) swarm 集群的時(shí)候可以通過(guò) --strategy 參數(shù) 來(lái)指定蔑鹦,默認(rèn)的是spread夺克。
spread和binpack策略會(huì)根據(jù)每臺(tái)節(jié)點(diǎn)的可用CPU,內(nèi)存以及正在運(yùn)行的containers 的數(shù)量來(lái)給各個(gè)節(jié)點(diǎn)分級(jí)嚎朽,而random策略铺纽,顧名思義,他不會(huì)做任何的計(jì)算哟忍,只是 單純的隨機(jī)選擇一個(gè)節(jié)點(diǎn)來(lái)啟動(dòng)container狡门。這種策略一般只做調(diào)試用。
使用spread策略锅很,swarm會(huì)選擇一個(gè)正在運(yùn)行的container的數(shù)量最少的那個(gè)節(jié)點(diǎn)來(lái) 運(yùn)行container其馏。這種情況會(huì)導(dǎo)致啟動(dòng)的container會(huì)盡可能的分布在不同的機(jī)器上運(yùn)行,這樣的好處就是如果有節(jié)點(diǎn)壞掉的時(shí)候不會(huì)損失太多的container爆安。
binpack 則相反尝偎,這種情況下,swarm會(huì)盡可能的把所有的容器放在一臺(tái)節(jié)點(diǎn)上面 運(yùn)行。這種策略會(huì)避免容器碎片化致扯,因?yàn)樗麜?huì)把未使用的機(jī)器分配給更大的容器肤寝, 帶來(lái)的好處就是swarm會(huì)使用最少的節(jié)點(diǎn)運(yùn)行最多的容器

3.4.3 過(guò)濾器

swarm 的調(diào)度器(scheduler)在選擇節(jié)點(diǎn)運(yùn)行容器的時(shí)候支持幾種過(guò)濾器 (filter):
可以在執(zhí)行 swarm manage 命令的時(shí)候通過(guò) --filter 選項(xiàng)來(lái)設(shè)置抖僵。

  • Constraint
  • Affinity: 通過(guò)使用 Affinity Filter鲤看,可以讓一個(gè)容器緊挨著另一個(gè)容器啟動(dòng),也就是說(shuō)讓兩個(gè) 容器在同一個(gè)節(jié)點(diǎn)上面啟動(dòng)耍群。
  • Port:Port 也會(huì)被認(rèn)為是一個(gè)唯一的資源
  • Dependency,
  • Health

具體可以參閱官方文檔义桂。

4 others

Docker鏡像蜂巢加速:

http://support.c.163.com/md.html#!容器服務(wù)/鏡像倉(cāng)庫(kù)/使用技巧/DockerHub 鏡像加速.md

Ubuntu | Debian | Centos

$ sudo echo "DOCKER_OPTS=\"--insecure-registry registry.hz.netease.com -H 0.0.0.0:2375 -H unix:///var/run/docker.sock\"" >> /etc/default/docker
$ service docker restart
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蹈垢,隨后出現(xiàn)的幾起案子慷吊,更是在濱河造成了極大的恐慌,老刑警劉巖曹抬,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溉瓶,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡谤民,警方通過(guò)查閱死者的電腦和手機(jī)堰酿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)张足,“玉大人触创,你說(shuō)我怎么就攤上這事∥梗” “怎么了哼绑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)碉咆。 經(jīng)常有香客問(wèn)我抖韩,道長(zhǎng),這世上最難降的妖魔是什么吟逝? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任帽蝶,我火速辦了婚禮,結(jié)果婚禮上块攒,老公的妹妹穿的比我還像新娘励稳。我一直安慰自己,他們只是感情好囱井,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布驹尼。 她就那樣靜靜地躺著,像睡著了一般庞呕。 火紅的嫁衣襯著肌膚如雪新翎。 梳的紋絲不亂的頭發(fā)上程帕,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音地啰,去河邊找鬼愁拭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛亏吝,可吹牛的內(nèi)容都是我干的岭埠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蔚鸥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惜论!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起止喷,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤馆类,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后弹谁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體乾巧,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年僵闯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卧抗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藤滥。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鳖粟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拙绊,到底是詐尸還是另有隱情向图,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布标沪,位于F島的核電站榄攀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏金句。R本人自食惡果不足惜檩赢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望违寞。 院中可真熱鬧贞瞒,春花似錦、人聲如沸趁曼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挡闰。三九已至乒融,卻和暖如春掰盘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赞季。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工愧捕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人申钩。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓晃财,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親典蜕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子断盛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 目錄 Swarm簡(jiǎn)介 Swarm架構(gòu) Swarm命令 總結(jié) 1. Swarm簡(jiǎn)介 Docker自誕生以來(lái),其容器特...
    garyond閱讀 1,311評(píng)論 1 9
  • 前兩篇東西愉舔,我們分別介紹了Mesos和Dockers的安裝和使用钢猛。在《Mesos實(shí)戰(zhàn)》這篇的結(jié)尾,我說(shuō)過(guò)將會(huì)介紹如...
    燕京博士閱讀 1,304評(píng)論 0 2
  • 很寂寞不管精神 還是肉體很寂寞不管白天 還是黑夜 秋葉隕落秋也寂寞 我是十月的天使墜落人間 從此芳菲塵土有關(guān)前生所...
    木南京路閱讀 221評(píng)論 1 4
  • 從一出生轩缤,我們就哇哇大哭命迈,進(jìn)入了這個(gè)世界,隨著時(shí)間的流逝火的,人的身體慢慢長(zhǎng)大壶愤,閱歷越來(lái)越多,思想也越來(lái)越豐富馏鹤。 思想...
    2f2fc2384970閱讀 307評(píng)論 0 0