docker volume 容器卷的那些事(一)

https://deepzz.com/post/the-docker-volumes-basic.html
Desc:docker volume没佑,容器卷褐奴,Permission denied扫尺,解決容器卷映射的問(wèn)題,容器卷那些事

[docker volume 容器卷的那些事(二)](https://deepzz.com/post/
the-docker-volumes-permissions
.html)述雾。接觸 docker 的朋友都知道驳庭,docker 鏡像是以 layer 概念存在的,一層一層的疊加柔纵,最終成為我們需要的鏡像缔杉。但該鏡像的每一層都是 ReadOnly 只讀的。只有在我們運(yùn)行容器的時(shí)候才會(huì)創(chuàng)建讀寫(xiě)層搁料。文件系統(tǒng)的隔離使得:

  • 容器不再運(yùn)行時(shí)或详,數(shù)據(jù)將不會(huì)持續(xù)存在,數(shù)據(jù)很難從容器中取出郭计。
  • 無(wú)法在不同主機(jī)之間很好的進(jìn)行數(shù)據(jù)遷移鸭叙。
  • 數(shù)據(jù)寫(xiě)入容器的讀寫(xiě)層需要內(nèi)核提供聯(lián)合文件系統(tǒng),這會(huì)額外的降低性能拣宏。

docker 為我們提供了三種不同的方式將數(shù)據(jù)掛載到容器中:volume沈贝、bind mount、tmpfs勋乾。

types-of-mounts

volume 方式

volume 方式是 docker 中數(shù)據(jù)持久化的最佳方式宋下。

  • docker 默認(rèn)在主機(jī)上會(huì)有一個(gè)特定的區(qū)域(/var/lib/docker/volumes/ Linux),該區(qū)域用來(lái)存放 volume辑莫。
  • 非 docker 進(jìn)程不應(yīng)該去修改該區(qū)域学歧。
  • volume 可以通過(guò) docker volume 進(jìn)行管理,如創(chuàng)建各吨、刪除等操作枝笨。
  • volume 在生成的時(shí)候如果不指定名稱,便會(huì)隨機(jī)生成。
$ ls /var/lib/docker/volumes
ff664768bfe64e1a8cae4369dd4a2e1929362e29580735480290684e38c8f140
ffa4846b581c1a50a01e7a12a6342ad2aaa442701a35ae56ef2f0e5d7888b22c
  • volume 在容器停止或刪除的時(shí)候會(huì)繼續(xù)存在横浑,如需刪除需要顯示聲明剔桨。
$ docker rm -v <container_id>
$ docker volume rm <volume_name>

相關(guān)用例

volume 方式應(yīng)該是持久化數(shù)據(jù)的首選方式, 其推薦用例:

  • 在多個(gè)容器之間共享數(shù)據(jù)徙融,volume 在容器停止或刪除的時(shí)候依然存在洒缀,如果需要?jiǎng)h除需要顯示(dockr rm -v...),多個(gè)容器可以加載相同的卷欺冀。
  • 當(dāng)主機(jī)不能保證有一個(gè)指定的目錄或文件結(jié)構(gòu)時(shí)树绩。
  • 當(dāng)需要備份、還原或主機(jī)間的數(shù)據(jù)遷移時(shí)隐轩。停止容器饺饭,備份卷的目錄(如/var/lib/docker/volumes/<volume-name>

使用方式

volume 在 docker 中被推薦為首選方式职车,它與 bind mount 相比瘫俊,有以下優(yōu)點(diǎn):

  • 與 bind mount 相比,volume 更容易備份或遷移提鸟。
  • 可以使用 Docker CLI 命令或 Docker API 來(lái)管理军援。
  • volume 在 Linux 和 Windows 容器上都能工作仅淑。
  • volume 可以在多個(gè)容器之間更安全的共享称勋。
  • volume 驅(qū)動(dòng)程序允許你在遠(yuǎn)程主機(jī)或云上提供存儲(chǔ)、加密或其他功能涯竟。
  • 新 volume 的內(nèi)容可以由容器預(yù)填充赡鲜。

-v/-mount 標(biāo)志
最初,-v-volume 用于獨(dú)立的容器庐船,--mount 用于 swarm server银酬。但 docker 17.06 之后,也可以使用 --mount筐钟。兩者的區(qū)別在于揩瞪,-v 將所有選項(xiàng)組合在一個(gè)字段中,--mount 則將它們分開(kāi)篓冲。

新用戶應(yīng)使用 --mount 語(yǔ)法李破,老用戶推薦使用 --mount

  • -v/--volume壹将,由(:)分隔的三個(gè)字段組成嗤攻,<卷名>:<容器路徑>:<選項(xiàng)列表>。選項(xiàng)列表诽俯,如:ro只讀妇菱。
  • --mount,由多個(gè)鍵值對(duì)組成,由,分隔闯团,每個(gè)由一個(gè)<key=<value>>元組組成辛臊。
    • type,值可以為 bind偷俭,volume浪讳,tmpfs
    • source涌萤,對(duì)于命名卷淹遵,是卷名。對(duì)于匿名卷负溪,這個(gè)字段被省略透揣。可能被指定為 sourcesrc川抡。
    • destination辐真,文件或目錄將被掛載到容器中的路徑⊙碌蹋可以指定為 destination侍咱,dsttarget
    • volume-opt 可以多次指定密幔。

創(chuàng)建管理 volume

# 創(chuàng)建一個(gè)卷
$ docker volume create my-vol

# 卷列表
$ docker volume ls

local               my-vol

# 卷信息
$ docker volume inspect my-vol
[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
        "Name": "my-vol",
        "Options": {},
        "Scope": "local"
    }
]

# 刪除卷
$ docker volume rm my-vol

用卷啟動(dòng)容器
下例楔脯,將卷 myvol2 掛載到容器 /app/-v--mount 產(chǎn)生的效果相同胯甩,但下面命令不能同時(shí)執(zhí)行昧廷,會(huì)沖突:

# --mount
# 使用  --mount source=myvol2,target/app,readonly 創(chuàng)建只讀的
$ docker run -d \
  -it \
  --name devtest \
  --mount source=myvol2,target=/app \
  nginx:latest
  
# -v 
# 使用 -v myvol2:/app:ro 創(chuàng)建只讀的
$ docker run -d \
  -it \
  --name devtest \
  -v myvol2:/app \
  nginx:latest

你可以執(zhí)行 docker inspect devtest 驗(yàn)證卷是否創(chuàng)建并且掛載正確:

"Mounts": [
    {
        "Type": "volume",
        "Name": "myvol2",
        "Source": "/var/lib/docker/volumes/myvol2/_data",
        "Destination": "/app",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
],

該卷有正確的 Source 和 Destination,可讀寫(xiě)偎箫。

停止容器和清理卷:

$ docker container stop devtest

$ docker container rm devtest

$ docker volume rm myvol2

當(dāng)啟動(dòng) service 的時(shí)候木柬,如果 Driverlocal 的時(shí)候,則任何容器都不能共享此數(shù)據(jù)淹办。另外 service 只能使用 --mount 標(biāo)志眉枕。

使用 volume driver

當(dāng)使用 docker volume create 創(chuàng)建卷或啟動(dòng)尚未創(chuàng)建卷的容器的時(shí)候,可以指定卷驅(qū)動(dòng)程序怜森。

下面這個(gè)例子速挑,首先創(chuàng)建獨(dú)立卷時(shí)使用 volume driver,然后在啟動(dòng)創(chuàng)建新卷的容器時(shí)使用 volume driver塔插。

初始設(shè)置
這個(gè)例子假定你有 2 個(gè)節(jié)點(diǎn)梗摇,第一個(gè)是 docker 主機(jī),可以使用 SSH 連接到第二個(gè)節(jié)點(diǎn)想许。

在 docker 主機(jī)上安裝 vieux/sshfx 插件:

$ docker plugin install --grant-all-permissions vieux/sshfs

使用 volume driver 創(chuàng)建卷
下面指定了一個(gè) SSH 密碼伶授,但如果 2 臺(tái)主機(jī)共享密鑰已配置断序,則可以省略密碼。每個(gè) volume driver 可以有多個(gè)配置選項(xiàng)糜烹,使用 -o 標(biāo)志指定违诗。

$ docker volume create --driver vieux/sshfs \
  -o sshcmd=test@node2:/home/test \
  -o password=testpassword \
  sshvolume

創(chuàng)建容器時(shí)使用 volume driver
這里需要注意的是,如果需要在命令中使用選項(xiàng)疮蹦,則必須使用 --mount诸迟,而不是 -v

$ docker run -d \
  -it \
  --name sshfs-container \
  --volume-driver vieux/sshfs \
  --mount src=sshvolume,target=/app,volume-opt=sshcmd=test@node2:/home/test,volume-opt=password=testpassword \
  nginx:latest

bind mount 方式

通過(guò) bind mount 方式愕乎,你可以將你主機(jī)上的任何文件或目錄(絕對(duì)路徑)掛載到容器中阵苇。

  • 掛載的文件或目錄可以被任何進(jìn)程修改,因此有時(shí)候容器中修改了該文件或目錄將會(huì)影響其他進(jìn)程感论。
  • 如果掛載主機(jī)的文件或目錄不存在將會(huì)自動(dòng)創(chuàng)建绅项。
  • 使用該方式不能通過(guò) docker volume 管理,推薦使用 volume 方式比肄。

相關(guān)用例

bind mounts快耿,一般情況在如下方式使用:

  • 從主機(jī)共享配置文件到容器。默認(rèn)情況芳绩,docker 會(huì)綁定類似 /etc/resolv.conf 的文件用于 DNS 的解析掀亥。
  • 主機(jī)與容器共享源代碼或構(gòu)建工具。如妥色,你可以將 Maven target/ 掛載到容器中搪花,并且每次主機(jī)上構(gòu)建 Maven 項(xiàng)目時(shí),容器都可以訪問(wèn)重建的構(gòu)件垛膝。
  • 主機(jī)的文件或目錄結(jié)構(gòu)與容器所需的一致時(shí)鳍侣。

如果將空文件或目錄掛載到容器丁稀,容器中的該目錄又有文件吼拥,那么,這些文件將會(huì)被復(fù)制到主機(jī)上的目錄中线衫。如果將非空的文件或目錄掛載到容器凿可,容器中的該目錄也有文件,那么授账,容器中的文件將會(huì)被隱藏枯跑。

使用方式

-v/-mount 標(biāo)志
最初,-v-volume 用于獨(dú)立的容器白热,--mount 用于 swarm server敛助。但 docker 17.06 之后,也可以使用 --mount屋确。兩者的區(qū)別在于纳击,-v 將所有選項(xiàng)組合在一個(gè)字段中续扔,--mount 則將它們分開(kāi)。

新用戶應(yīng)使用 --mount 語(yǔ)法焕数,老用戶推薦使用 --mount纱昧。

  • -v--volume:由(:)分隔的字段組成。這些字段是有順序的堡赔。
    • 第一個(gè)字段识脆,主機(jī)上的文件或目錄。
    • 第二個(gè)字段善已,容器中的文件或目錄灼捂。
    • 第三個(gè)字段,可選换团,且用逗號(hào)分隔纵东,如:roconsistent啥寇,delegated偎球,cachedzZ辑甜。
  • --mount:由多個(gè)鍵值對(duì)組成衰絮,由逗號(hào)分隔,每一個(gè)由 <key>=<value> 元祖組成磷醋。鍵值對(duì)沒(méi)有順序猫牡。
    • type,可以是 bind邓线,volume淌友,tmpfs
    • source骇陈,主機(jī)上的文件或目錄的路徑震庭“吃常可能用 src刀脏,source 指定。
    • destination遍烦,容器中的文件或目錄的路徑婿崭〔ν兀可能用 destinationdst氓栈,target 指定渣磷。
    • readonly,如果存在授瘦,將更改 Propagation醋界,可以是一個(gè) rprivate祟身。
    • consistency,如果存在物独,可以是 consistent袜硫,delegatedcached,只在 Mac 版有效挡篓。
    • --mount 標(biāo)志不支持 zZ 修改 selinux婉陷。

-v 和 --mount 的差異
使用 -v--volume 綁定主機(jī)不存在的文件或目錄,將會(huì)自動(dòng)創(chuàng)建官研。始終創(chuàng)建的是一個(gè)目錄秽澳。

使用 --mount 綁定主機(jī)上不存在的文件或目錄,則不會(huì)自動(dòng)創(chuàng)建戏羽,會(huì)產(chǎn)生一個(gè)錯(cuò)誤担神。

使用 bind mount 啟動(dòng)容器
主機(jī)上的目錄 source/target,容器的目錄 /app/始花。$(pwd) 將使用當(dāng)前目錄:

# 只讀方式:--mount type=bind,source="$(pwd)"/target,target=/app,readonly
$ docker run -d \
  -it \
  --name devtest \
  --mount type=bind,source="$(pwd)"/target,target=/app \
  nginx:latest

# 只讀方式:-v "$(pwd)"/target:/app:ro
$ docker run -d \
  -it \
  --name devtest \
  -v "$(pwd)"/target:/app \
  nginx:latest

docker inspect devtest 可以查看相關(guān)信息妄讯,查看 Mounts 部分:

"Mounts": [
    {
        "Type": "bind",
        "Source": "/tmp/source/target",
        "Destination": "/app",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
],

這些信息表明了這是一個(gè) bind 掛載,源路徑和目的路徑酷宵,并且是可讀寫(xiě)的亥贸,且 Propagation 設(shè)置為 rprivate

停止容器:

$ docker container stop devtest

$ docker container rm devtest

配置 Propagation
Propagation 的在 bind mount 和 volume 中默認(rèn)為 rprivate浇垦。它只能在 bind mount 配置炕置,并且只能在 Linux 主機(jī)上配置。這是一個(gè)高級(jí)選項(xiàng)男韧,許多用戶不需要配置它朴摊。

Propagation 是指在給定的掛載卷或命名卷中創(chuàng)建的掛載是否可以傳播到該掛載的副本〈寺牵考慮一個(gè)掛載點(diǎn) /mnt甚纲,它被掛載在 /tmp。傳播設(shè)置控制是否掛載 /tmp/a 也可用 /mnt/a.每個(gè) Propagation 設(shè)置都有一個(gè)遞歸對(duì)應(yīng)點(diǎn)寡壮。在遞歸的情況下贩疙,考慮 /tml/a 被掛載為 /foo讹弯。傳播設(shè)置控制是否 /mnt/a/tmp/a 將存在况既。

Propagation 設(shè)置 描述
shared 原始安裝的子安裝會(huì)暴露給副本安裝,并且副本安裝的子安裝也會(huì)傳播到原始安裝组民。
slave 類似于共享的安裝棒仍,但僅在一個(gè)方向上。如果原始安裝顯示一個(gè)子安裝臭胜,副本安裝可以看到它莫其。但是癞尚,如果副本安裝公開(kāi)了子安裝,則原始安裝無(wú)法看到它乱陡。
private 這座山是私人的浇揩。其中的子安裝不會(huì)暴露給副本安裝,并且副安裝的子安裝不會(huì)暴露給原始安裝憨颠。
rshared 與共享相同胳徽,但是傳播也擴(kuò)展到嵌套在任何原始或副本安裝點(diǎn)內(nèi)的掛載點(diǎn)。
rslave 與從屬設(shè)備相同爽彤,但傳播也延伸到嵌套在任何原始或副本安裝點(diǎn)內(nèi)的掛載點(diǎn)养盗。
rprivate 默認(rèn)。與私有相同适篙,這意味著在原始或副本安裝點(diǎn)內(nèi)的任何位置都不會(huì)有安裝點(diǎn)向任一方向傳播往核。

在可以在安裝點(diǎn)上設(shè)置綁定傳播之前,主機(jī)文件系統(tǒng)需要已經(jīng)支持綁定傳播嚷节。有關(guān)綁定傳播的更多信息聂儒,請(qǐng)參閱 共享子樹(shù)Linux內(nèi)核文檔

以下示例將 target/ 目錄裝載到容器中兩次硫痰,第二個(gè)裝入設(shè)置 ro 選項(xiàng)和 rslave 綁定傳播選項(xiàng)薄货。

--mount-v 實(shí)例有同樣的結(jié)果。

$ docker run -d \
  -it \
  --name devtest \
  --mount type=bind,source="$(pwd)"/target,target=/app \
  --mount type=bind,source="$(pwd)"/target,target=/app2,readonly,bind-propagation=rslave \
  nginx:latest


$ docker run -d \
  -it \
  --name devtest \
  -v "$(pwd)"/target:/app \
  -v "$(pwd)"/target:/app2:ro,rslave \
  nginx:latest

現(xiàn)在如果你創(chuàng)建 /app/foo/碍论,/app2/foo/ 也將存在谅猾。

配置selinux標(biāo)簽

如果使用的 selinux 話,可以添加 z 或者 Z 選項(xiàng)來(lái)修改正在裝入容器的主機(jī)文件或目錄selinux 標(biāo)簽鳍悠。這會(huì)影響主機(jī)本身的文件或目錄税娜,并可能導(dǎo)致Docker范圍之外的后果。

  • z 選項(xiàng)指示綁定安裝內(nèi)容在多個(gè)容器之間共享藏研。
  • Z 選項(xiàng)指示綁定安裝內(nèi)容是私有的和非共享的敬矩。

使用極端謹(jǐn)慎使用這些選項(xiàng)。綁定一個(gè)系統(tǒng)目錄蠢挡,例如 /home或者 /usr 用這個(gè) Z 選項(xiàng)弧岳,將會(huì)使你的主機(jī)無(wú)法工作,你可能需要手工重新標(biāo)記主機(jī)文件业踏。

重要:在使用綁定安裝服務(wù)時(shí)禽炬,selinux標(biāo)簽(:Z:z)以及 :ro 被忽略。有關(guān)詳細(xì)信息勤家,請(qǐng)參閱 moby/moby#32579腹尖。

這個(gè)例子設(shè)置 z 選項(xiàng)來(lái)指定多個(gè)容器可以共享綁定掛載的內(nèi)容:

使用 --mount 標(biāo)志來(lái)修改selinux標(biāo)簽是不可能的。

$ docker run -d \
  -it \
  --name devtest \
  -v "$(pwd)"/target:/app:z \
  nginx:latest

配置macOS的安裝一致性

Docker for Mac用于 osxfs 將從 macOS 共享的目錄和文件傳播到 Linux VM伐脖。這種傳播使這些目錄和文件可用于在 Docker for Mac 上運(yùn)行的 Docker 容器热幔。

默認(rèn)情況下乐设,這些共享是完全一致的,這意味著每次在 macOS 主機(jī)上發(fā)生寫(xiě)入或通過(guò)容器中的掛載時(shí)绎巨,都會(huì)將更改刷新到磁盤(pán)近尚,以便共享中的所有參與者都具有完全一致的視圖。在某些情況下场勤,完全一致可能會(huì)嚴(yán)重影響性能肿男。Docker 17.05 和更高版本引入了選項(xiàng)來(lái)調(diào)整一個(gè)一個(gè),每個(gè)容器的一致性設(shè)置却嗡。以下選項(xiàng)可用:

  • consistent 或者 default:完全一致的默認(rèn)設(shè)置舶沛,如上所述。
  • delegated:容器運(yùn)行時(shí)的掛載視圖是權(quán)威的窗价。在容器中進(jìn)行的更新可能在主機(jī)上可見(jiàn)之前可能會(huì)有延遲如庭。
  • cached:macOS主機(jī)的掛載視圖是權(quán)威的。在主機(jī)上進(jìn)行的更新在容器中可見(jiàn)之前可能會(huì)有延遲撼港。

這些選項(xiàng)在除 macOS 以外的所有主機(jī)操作系統(tǒng)上完全忽略坪它。

在--mount和-v實(shí)例有同樣的結(jié)果。

$ docker run -d \
  -it \
  --name devtest \
  --mount type=bind,source="$(pwd)"/target,destination=/app,consistency=cached \
  nginx:latest

$ docker run -d \
  -it \
  --name devtest \
  -v "$(pwd)"/target:/app:cached \
  nginx:latest

tmpfs 方式

tmpfs帝牡,僅存儲(chǔ)在主機(jī)系統(tǒng)的內(nèi)存中往毡,不會(huì)寫(xiě)入主機(jī)的文件系統(tǒng)。

相關(guān)用例

tmpfs靶溜,使用它的情況一般是开瞭,對(duì)安全比較重視以及不需要持久化數(shù)據(jù)。

使用方式

--tmpfs--mount 的關(guān)系與前面兩種方式的關(guān)系不用多說(shuō)罩息。那它們之間的差異是:

  • --tmpfs 不允許指定任何可配置選項(xiàng)嗤详。
  • --tmpfs 不能用語(yǔ) swarm service,你必須使用 --mount瓷炮。

tmpfs 容器的限制

  • tmpfs 掛載不能在容器間共享葱色。
  • tmpfs 職能在 Linux 容器上工作,不能在 windows 容器上工作娘香。

容器中使用 tmpfs

$ docker run -d \
  -it \
  --name tmptest \
  --mount type=tmpfs,destination=/app \
  nginx:latest

$ docker run -d \
  -it \
  --name tmptest \
  --tmpfs /app \
  nginx:latest

tmpfs 通過(guò)運(yùn)行 docker container inspect tmptest 并查找 Mounts 部分來(lái)驗(yàn)證安裝是掛載:

"Tmpfs": {
    "/app": ""
},

刪除容器:

$ docker container stop tmptest

$ Docker container rm tmptest

指定 tmpfs 選項(xiàng)
tmpfs 掛載允許兩個(gè)配置選項(xiàng)苍狰,這兩個(gè)都是不需要的。如果您需要指定這些選項(xiàng)烘绽,則必須使用該 --mount 標(biāo)志淋昭,因?yàn)樵?--tmpfs 標(biāo)志不支持它們。

選項(xiàng) 描述
tmpfs-size tmpfs 的大小诀姚,以字節(jié)為單位响牛。無(wú)限制默認(rèn)。
tmpfs-mode tmpfs 的八進(jìn)制文件模式赫段。例如呀打,700 或者 0770。默認(rèn)為 1777 或世界可寫(xiě)糯笙。

以下示例將設(shè)置 tmpfs-mode1770贬丛,以便在容器內(nèi)不可世界讀取。

docker run -d \
  -it \
  --name tmptest \
  --mount type=tmpfs,destination=/app,tmpfs-mode=1770 \
  nginx:latest
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末给涕,一起剝皮案震驚了整個(gè)濱河市豺憔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌够庙,老刑警劉巖恭应,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異耘眨,居然都是意外死亡昼榛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)剔难,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胆屿,“玉大人,你說(shuō)我怎么就攤上這事偶宫》羌#” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵纯趋,是天一觀的道長(zhǎng)憎兽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)吵冒,這世上最難降的妖魔是什么唇兑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮桦锄,結(jié)果婚禮上扎附,老公的妹妹穿的比我還像新娘。我一直安慰自己结耀,他們只是感情好留夜,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著图甜,像睡著了一般碍粥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上黑毅,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天嚼摩,我揣著相機(jī)與錄音,去河邊找鬼。 笑死枕面,一個(gè)胖子當(dāng)著我的面吹牛愿卒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播潮秘,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼琼开,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了枕荞?” 一聲冷哼從身側(cè)響起柜候,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎躏精,沒(méi)想到半個(gè)月后渣刷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡矗烛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年辅柴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片高诺。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碌识,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出虱而,到底是詐尸還是另有隱情筏餐,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布牡拇,位于F島的核電站魁瞪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏惠呼。R本人自食惡果不足惜导俘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剔蹋。 院中可真熱鬧旅薄,春花似錦、人聲如沸泣崩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)矫付。三九已至凯沪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間买优,已是汗流浹背妨马。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工挺举, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人烘跺。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓湘纵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親液荸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瞻佛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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