Docker學(xué)習(xí)(一)——基礎(chǔ)知識

1. Docker 基礎(chǔ)

菜鳥教程:傳送門

1.1 Docker Hello World

Docker 允許你在容器內(nèi)運(yùn)行應(yīng)用程序燥翅, 使用 docker run 命令來在容器內(nèi)運(yùn)行一個應(yīng)用程序慨绳;

[root@bogon /]# docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world

Docker 以 ubuntu15.10 鏡像創(chuàng)建一個新容器,然后在容器里執(zhí)行 bin/echo "Hello world",然后輸出結(jié)果活翩;

  • 參數(shù)解析:
    • docker : Docker 的二進(jìn)制執(zhí)行文件戳玫;
    • run :與前面的 docker 組合來運(yùn)行一個容器;
    • ubuntu :15.10指定要運(yùn)行的鏡像匪补,Docker首先從本地主機(jī)上查找鏡像是否存在伞辛,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像夯缺;
    • /bin/echo "Hello world": 在啟動的容器里執(zhí)行的命令始锚;

1.1.1 運(yùn)行交互式的容器

通過docker的兩個參數(shù) -i -t ,讓docker運(yùn)行的容器實現(xiàn)"對話"的能力:

[root@bogon /]# docker run -i -t ubuntu:15.10 /bin/bash
root@b453fa34daea:/# cat /proc/version
Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
root@b453fa34daea:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

執(zhí)行命令后已進(jìn)入一個 ubuntu15.10系統(tǒng)的容器喳逛,在容器中運(yùn)行命令 cat /proc/versionls 分別查看當(dāng)前系統(tǒng)的版本信息和當(dāng)前目錄下的文件列表瞧捌;

  • 參數(shù)解析:
    • -t : 在新容器內(nèi)指定一個偽終端或終端;
    • -i : 允許你對容器內(nèi)的標(biāo)準(zhǔn)輸入 (STDIN) 進(jìn)行交互润文;

1.1.2 啟動容器(后臺模式)

命令中加入 -d 以創(chuàng)建一個以進(jìn)程方式運(yùn)行的容器姐呐,執(zhí)行后出現(xiàn)的長字符串叫做容器ID,對每個容器來說都是唯一的典蝌,我們可以通過容器ID來查看對應(yīng)的容器發(fā)生了什么曙砂;

[root@bogon /]# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
7f940a34f32a44fd1f7a386072ae073d7e5f8498eb79f5b1f13bcdc35dd09b49

通過執(zhí)行 docker ps 來查看容器有在運(yùn)行:

[root@bogon /]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
7f940a34f32a        ubuntu:15.10        "/bin/sh -c 'while t…"   About a minute ago   Up About a minute                       youthful_leakey

CONTAINER ID:容器ID;NAMES:自動分配的容器名稱

通過執(zhí)行 docker logs 容器ID/容器NAMES 命令骏掀,查看容器內(nèi)的標(biāo)準(zhǔn)輸出鸠澈;

[root@bogon /]# docker logs 7f940a34f32a 或 [root@bogon /]# docker logs youthful_leakey
hello world
...

1.1.3 停止容器

通過執(zhí)行 docker stop 容器ID/容器NAMES 命令來停止容器,再通過執(zhí)行 docker ps 來查看容器有在運(yùn)行截驮;

[root@bogon /]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
7f940a34f32a        ubuntu:15.10        "/bin/sh -c 'while t…"   10 minutes ago      Up 10 minutes                           youthful_leakey
[root@bogon /]# docker stop 7f940a34f32a 或 [root@bogon /]# docker stop youthful_leakey
youthful_leakey
[root@bogon /]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

1.2 Docker 容器使用

1.2.1 Docker 客戶端

通過執(zhí)行 docker 命令來查看到 Docker 客戶端的所有命令選項笑陈;

Docker所有命令選項

通過執(zhí)行 docker command --help 命令更深入的了解指定的 Docker 命令使用方法,如查看 docker stats 指令的具體使用方法葵袭;

查看指令

1.2.2 運(yùn)行一個web應(yīng)用

使用 docker 構(gòu)建一個 web 應(yīng)用程序涵妥,例如在docker容器中運(yùn)行一個 Python Flask 應(yīng)用來運(yùn)行一個web應(yīng)用:

[root@localhost ~]# docker pull training/webapp
[root@localhost ~]# docker run -d -P training/webapp python app.py
db5e673a8de956b3873c2fe0384cabc895e683c9453a9eb72e8d3066c924aa7d
  • 參數(shù)說明:
    • -d: 讓容器在后臺運(yùn)行;
    • -P: 將容器內(nèi)部使用的網(wǎng)絡(luò)端口映射到我們使用的主機(jī)上;

1.2.3 查看 WEB 應(yīng)用容器

使用 docker ps 命令來查看我們正在運(yùn)行的容器:

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
db5e673a8de9        training/webapp     "python app.py"     37 seconds ago      Up 31 seconds       0.0.0.0:32768->5000/tcp   suspicious_wozniak
[root@localhost docker]# ip addr # 查看docker映射主機(jī)的ip地址:192.168.74.128

其中 Docker 開放了 5000 端口(默認(rèn) Python Flask 端口)映射到主機(jī)端口 32769 上,可以通過瀏覽器輸入192.168.74.128:327769訪問WEB應(yīng)用坡锡;

還可以通過 -p 參數(shù)來設(shè)置不一樣的端口蓬网,然后再通過 docker ps查看正在運(yùn)行的容器,最后通過瀏覽器輸入192.168.74.128:5000訪問WEB應(yīng)用:

[root@localhost ~]# docker run -d -p 5000:5000 training/webapp python app.py
162469a9aec01edd590d28eb1295637c41f6d039794878ce8b0c96cdc8575164
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
162469a9aec0        training/webapp     "python app.py"     3 seconds ago       Up 2 seconds        0.0.0.0:5000->5000/tcp   focused_beaver

1.2.4 網(wǎng)絡(luò)端口的快捷方式

通過 docker ps 命令可以查看到容器的端口映射鹉勒,docker 還提供了另一個快捷方式 docker port帆锋,使用 docker port 可以查看指定 (ID 或者名字)容器的某個確定端口映射到宿主機(jī)的端口號:

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
162469a9aec0        training/webapp     "python app.py"     3 seconds ago       Up 2 seconds        0.0.0.0:5000->5000/tcp   focused_beaver
[root@localhost ~]# docker port 162469a9aec0
5000/tcp -> 0.0.0.0:5000

1.2.5 查看 WEB 應(yīng)用程序日志

docker logs [ID或者名字] 可以查看容器內(nèi)部的標(biāo)準(zhǔn)輸出:

[root@localhost docker]# docker logs -f 162469a9aec0
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.74.1 - - [24/Aug/2019 18:46:12] "GET / HTTP/1.1" 200 -
192.168.74.1 - - [24/Aug/2019 18:46:12] "GET /robots.txt HTTP/1.1" 404 -
192.168.74.1 - - [24/Aug/2019 18:46:12] "GET /favicon.ico HTTP/1.1" 404 -
192.168.74.1 - - [24/Aug/2019 18:46:14] "GET / HTTP/1.1" 200 -
  • -f: 讓 docker logs 像使用 tail -f一樣來輸出容器內(nèi)部的標(biāo)準(zhǔn)輸出;

1.2.6 查看WEB應(yīng)用程序容器的進(jìn)程

使用 docker top [容器名稱] 來查看容器內(nèi)部運(yùn)行的進(jìn)程:

[root@localhost docker]# docker top focused_beaver
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                16017               16000               0                   02:45               ?                   00:00:00            python app.py

1.2.7 檢查 WEB 應(yīng)用程序

使用 docker inspect [容器名稱] 來查看 Docker 的底層信息禽额, 會返回一個 JSON 文件記錄著 Docker 容器的配置和狀態(tài)信息锯厢;

[root@localhost docker]# docker inspect focused_beaver
...

1.2.8 停止 WEB 應(yīng)用容器

使用 docker stop [容器名稱]或者[容器ID]停止 WEB 應(yīng)用容器;

1.2.9 重啟WEB應(yīng)用容器

對已停止的容器使用 docker start [容器名稱]進(jìn)行啟動绵疲;正在運(yùn)行的容器哲鸳,我們可以使用 docker restart [容器名稱] 命令來重啟;

使用docker ps -l 查詢最后一次創(chuàng)建的容器盔憨;

1.2.10 移除WEB應(yīng)用容器

使用 docker rm [容器名稱] 命令來刪除不需要的容器徙菠,注意刪除容器時,容器必須是停止?fàn)顟B(tài)郁岩,否則會報如下錯誤婿奔;

1.3 Docker 鏡像使用

1.3.1 列出鏡像列表

使用 docker images 來列出本地主機(jī)上的鏡像:

[root@localhost docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        7 months ago        1.84kB
ubuntu              15.10               9b9cb95443b5        3 years ago         137MB
training/webapp     latest              6fae60ef3446        4 years ago         349MB

各個選項說明:

  • REPOSITORY:表示鏡像的倉庫源缺狠;
  • TAG:鏡像的標(biāo)簽;
  • IMAGE ID:鏡像ID萍摊;
  • CREATED:鏡像創(chuàng)建時間挤茄;
  • SIZE:鏡像大小冰木;

同一倉庫源可以有多個 TAG穷劈,代表這個倉庫源的不同個版本,如 ubuntu 倉庫源里踊沸,有15.10歇终、14.04等多個不同的版本,我們使用 REPOSITORY:TAG 來定義不同的鏡像逼龟,例如版本為15.10的ubuntu系統(tǒng)鏡像來運(yùn)行容器時:docker run -t -i ubuntu:15.10 /bin/bash评凝;

1.3.2 獲取一個新的鏡像

當(dāng)我們在本地主機(jī)上使用一個不存在的鏡像時 Docker 就會自動下載這個鏡像;也可以使用 docker pull 命令來預(yù)下載指定名稱版本號的鏡像腺律,下載完成后奕短,可以直接使用這個鏡像來運(yùn)行容器。

[root@localhost docker]# docker pull ubuntu:14.04

1.3.3 查找鏡像

可以從 Docker Hub 網(wǎng)站來搜索鏡像匀钧,Docker Hub 網(wǎng)址為: https://hub.docker.com/翎碑,也可以使用 docker search 命令來搜索鏡像,例如需要一個 httpd 的鏡像來作為我們的web服務(wù)榴捡,就可以使用docker search 命令來搜索杈女;

[root@localhost docker]# docker search httpd
NAME                                 DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
httpd                                The Apache HTTP Server Project                  2622                [OK]                
centos/httpd                                                                         24                                      [OK]
centos/httpd-24-centos7              Platform for running Apache httpd 2.4 or bui…   22                                      
arm32v7/httpd                        The Apache HTTP Server Project                  8                                       
  • NAME: 鏡像倉庫源的名稱;
  • DESCRIPTION: 鏡像的描述吊圾;
  • OFFICIAL: 是否docker官方發(fā)布;

1.3.4 拖取鏡像

使用命令 docker pull 來下載鏡像翰蠢,下載完成后项乒,我們就可以使用 docker run httpd 運(yùn)行這個鏡像了。

1.3.5 創(chuàng)建鏡像

若從docker鏡像倉庫中下載的鏡像不能滿足需求時梁沧,可以通過以下兩種方式對鏡像進(jìn)行更改:

  1. 從已經(jīng)創(chuàng)建的容器中更新鏡像檀何,并且提交這個鏡像;
  2. 使用 Dockerfile 指令來創(chuàng)建一個新的鏡像廷支;

1.3.6 更新鏡像

更新鏡像之前频鉴,需要使用鏡像來創(chuàng)建一個容器,如: docker run -t -i ubuntu:15.10 /bin/bash恋拍;然后再運(yùn)行的容器中使用 apt-get update 命令進(jìn)行更新垛孔;完成操作后使用 exit 進(jìn)行退出;此時afe22e398ee5ID的容器就是按照需求更改的容器施敢,再通過命令 docker commit 來提交容器副本;

[root@localhost docker]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               latest              7d85cc3b2d80        2 days ago          154MB
hello-world         latest              fce289e99eb9        7 months ago        1.84kB
ubuntu              15.10               9b9cb95443b5        3 years ago         137MB
training/webapp     latest              6fae60ef3446        4 years ago         349MB
[root@localhost docker]# docker run -t -i ubuntu:15.10 /bin/bash
root@afe22e398ee5:/# apt-get update # 同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引周荐,這樣才能獲取到最新的軟件包狭莱,只是更新了apt的資源列表
...
root@afe22e398ee5:/# exit
[root@localhost docker]# docker commit -m="has update" -a="runoob" afe22e398ee5 runoob/ubuntu:v2

各個參數(shù)說明:

  • -m: 提交的描述信息;
  • -a:指定鏡像作者概作;
  • e218edb10161:容器ID腋妙;
  • runoob/ubuntu:v2: 指定要創(chuàng)建的目標(biāo)鏡像名

1.3.7 構(gòu)建鏡像

使用命令 docker build 從零開始來創(chuàng)建一個新的鏡像;為此需要創(chuàng)建一個 Dockerfile 文件讯榕,其中包含一組指令來告訴 Docker 如何構(gòu)建鏡像骤素,測試是在虛擬機(jī)的/home/dockerBuildTest目錄下新建了一個 Dockerfile 文件,將下面的內(nèi)容復(fù)制進(jìn)去:

[root@localhost home]# cat Dockerfile
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
  • 每一個指令都會在鏡像上創(chuàng)建一個新的層愚屁,每一個指令的前綴都必須是大寫的济竹;
  • 第一條FROM,指定使用哪個鏡像源集绰;
  • RUN 指令告訴 docker 在鏡像內(nèi)執(zhí)行命令规辱,安裝了什么;
  • 然后使用 Dockerfile 文件栽燕,通過 docker build 命令來構(gòu)建一個鏡像:
[root@localhost home]# docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon  2.048kB
Step 1/9 : FROM    centos:6.7
6.7: Pulling from library/centos
cbddbc0189a0: Pull complete
Digest: sha256:4c952fc7d30ed134109c769387313ab864711d1bd8b4660017f9d27243622df1
Status: Downloaded newer image for centos:6.7
 ---> 9f1de3c6ad53
Step 2/9 : MAINTAINER      Fisher "fisher@sudops.com"
 ---> Running in 0c187664f82c
Removing intermediate container 0c187664f82c
 ---> cd27f5545362
Step 3/9 : RUN     /bin/echo 'root:123456' |chpasswd
 ---> Running in 79ffe342cc0e
Removing intermediate container 79ffe342cc0e
 ---> fe4cc14abecc
Step 4/9 : RUN     useradd runoob
 ---> Running in 23ef5afd9655
Removing intermediate container 23ef5afd9655
 ---> 7af4fef8c0aa
Step 5/9 : RUN     /bin/echo 'runoob:123456' |chpasswd
 ---> Running in c93e51643569
Removing intermediate container c93e51643569
 ---> e11a014ca16d
Step 6/9 : RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
 ---> Running in bfb908697150
Removing intermediate container bfb908697150
 ---> 2f730ba3cc10
Step 7/9 : EXPOSE  22
 ---> Running in 7b35db7f6085
Removing intermediate container 7b35db7f6085
 ---> b5cefb31f421
Step 8/9 : EXPOSE  80
 ---> Running in a93483068a8c
Removing intermediate container a93483068a8c
 ---> a5fca49d0d9a
Step 9/9 : CMD     /usr/sbin/sshd -D
 ---> Running in 8502582a965f
Removing intermediate container 8502582a965f
 ---> 7c3b7236c7a8
Successfully built 7c3b7236c7a8
Successfully tagged runoob/centos:6.7

構(gòu)建命令的參數(shù)說明:

  • -t :指定要創(chuàng)建的目標(biāo)鏡像名罕袋;
  • .:Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑碍岔;

使用docker images 查看創(chuàng)建的鏡像已經(jīng)在列表中存在浴讯,鏡像 ID為 7c3b7236c7a8

[root@localhost home]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
runoob/centos       6.7                 7c3b7236c7a8        2 minutes ago       191MB
httpd               latest              7d85cc3b2d80        2 days ago          154MB
centos              6.7                 9f1de3c6ad53        5 months ago        191MB
hello-world         latest              fce289e99eb9        7 months ago        1.84kB
ubuntu              15.10               9b9cb95443b5        3 years ago         137MB
training/webapp     latest              6fae60ef3446        4 years ago         349MB

最后使用新的鏡像來創(chuàng)建容器,查看新鏡像已經(jīng)包含創(chuàng)建的用戶runoob:

[root@localhost home]# docker run -t -i runoob/centos:6.7  /bin/bash
[root@471fa88eb567 /]# id runoob
uid=500(runoob) gid=500(runoob) groups=500(runoob)

1.3.8 設(shè)置鏡像標(biāo)簽

使用 docker tag [鏡像ID] 命令蔼啦,為鏡像添加一個新的標(biāo)簽:

[root@localhost home]# docker tag 7c3b7236c7a8 geekleng/centos:dev
[root@localhost home]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
geekleng/centos     dev                 7c3b7236c7a8        16 minutes ago      191MB
runoob/centos       6.7                 7c3b7236c7a8        16 minutes ago      191MB
httpd               latest              7d85cc3b2d80        2 days ago          154MB
centos              6.7                 9f1de3c6ad53        5 months ago        191MB
hello-world         latest              fce289e99eb9        7 months ago        1.84kB
ubuntu              15.10               9b9cb95443b5        3 years ago         137MB
training/webapp     latest              6fae60ef3446        4 years ago         349MB

使用 docker images 命令可以看到榆纽,ID為 7c3b7236c7a8 的鏡像多一個名稱 geekleng/centos和標(biāo)簽dev

1.4 Docker 容器連接

1.4.1 網(wǎng)絡(luò)端口映射

可以指定容器綁定的網(wǎng)絡(luò)地址以及端口號捏肢,比如綁定到 127.0.0.1:5000奈籽,使用之前的 python 應(yīng)用的容器:

[root@localhost home]# docker run -d -P training/webapp python app.py
[root@localhost home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
4c5536ccc37a        training/webapp     "python app.py"     11 seconds ago      Up 9 seconds        0.0.0.0:32768->5000/tcp   epic_montalcini

[root@localhost home]# docker run -d -p 5000:5000 training/webapp python app.py
[root@localhost home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
a8cd6936ab21        training/webapp     "python app.py"     10 seconds ago      Up 7 seconds        0.0.0.0:5000->5000/tcp    laughing_kilby
4c5536ccc37a        training/webapp     "python app.py"     55 seconds ago      Up 53 seconds       0.0.0.0:32768->5000/tcp   epic_montalcini

[root@localhost home]# docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
82de5f1b230e2401e89e28f83c97e4ae66dd6e95be3b89fc8454d91c44880fd0
[root@localhost home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                      NAMES
82de5f1b230e        training/webapp     "python app.py"     3 seconds ago        Up 1 second         127.0.0.1:5001->5000/tcp   zen_proskuriakova
a8cd6936ab21        training/webapp     "python app.py"     About a minute ago   Up 57 seconds       0.0.0.0:5000->5000/tcp     laughing_kilby
4c5536ccc37a        training/webapp     "python app.py"     About a minute ago   Up About a minute   0.0.0.0:32768->5000/tcp    epic_montalcini

使用 -P 參數(shù)創(chuàng)建一個容器,使用 docker ps 可以看到容器端口 5000 綁定主機(jī)端口 32768; 使用 -p 標(biāo)識來指定容器端口綁定到主機(jī)端口鸵赫,兩種方式的區(qū)別是:

-P (大寫P): 是容器內(nèi)部端口隨機(jī)映射到主機(jī)的高端口衣屏;
-p (小寫p): 是容器內(nèi)部端口綁定到指定的主機(jī)端口;

1.4.2 Docker容器連接

端口映射并不是唯一把 docker 連接到另一個容器的方法辩棒; docker 有一個連接系統(tǒng)允許將多個容器連接在一起狼忱,共享連接信息; docker 連接會創(chuàng)建一個父子關(guān)系一睁,其中父容器可以看到子容器的信息钻弄;

容器命名:在創(chuàng)建一個容器的時候, docker 會自動對它進(jìn)行命名者吁;也可以使用 --name 標(biāo)識來命名容器窘俺;

[root@localhost home]# docker run -d -P --name runoob training/webapp python app.py
431af1c61e6a8c5171318e1b07c2eb0d074766c09212305322d80d39bee6789c
[root@localhost home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
431af1c61e6a        training/webapp     "python app.py"     3 seconds ago       Up 2 seconds        0.0.0.0:32769->5000/tcp   runoob

系列鏈接

  1. Docker學(xué)習(xí)(一)——基礎(chǔ)知識
  2. Docker學(xué)習(xí)(二)——實例
  3. Docker學(xué)習(xí)(三)——命令匯總
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市砚偶,隨后出現(xiàn)的幾起案子批销,更是在濱河造成了極大的恐慌洒闸,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件均芽,死亡現(xiàn)場離奇詭異丘逸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)掀宋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門深纲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人劲妙,你說我怎么就攤上這事湃鹊。” “怎么了镣奋?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵币呵,是天一觀的道長。 經(jīng)常有香客問我侨颈,道長余赢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任哈垢,我火速辦了婚禮妻柒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耘分。我一直安慰自己举塔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布求泰。 她就那樣靜靜地躺著央渣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渴频。 梳的紋絲不亂的頭發(fā)上痹屹,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機(jī)與錄音枉氮,去河邊找鬼。 笑死暖庄,一個胖子當(dāng)著我的面吹牛聊替,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播培廓,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惹悄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肩钠?” 一聲冷哼從身側(cè)響起泣港,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤暂殖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后当纱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呛每,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年坡氯,在試婚紗的時候發(fā)現(xiàn)自己被綠了晨横。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡箫柳,死狀恐怖手形,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情悯恍,我是刑警寧澤库糠,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站涮毫,受9級特大地震影響瞬欧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜窒百,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一黍判、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧篙梢,春花似錦顷帖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至妄呕,卻和暖如春陶舞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绪励。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工肿孵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疏魏。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓停做,卻偏偏與公主長得像,于是被迫代替她去往敵國和親大莫。 傳聞我的和親對象是個殘疾皇子蛉腌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354