寫給前端的docker簡明教程

大家好,我是前端dog君躲庄,一名95后前端小兵查剖。2019年畢業(yè)于北京化工大學(xué),天津人噪窘,不知道有校友和老鄉(xiāng)嘛笋庄?對前端的熱愛,讓我們在此相聚倔监,希望這篇文章直砂,能幫助到您,也同時希望能交到志同道合的小伙伴丐枉,共同發(fā)展,一起進步掘托。我的微信號dm120225瘦锹,備注簡書,期待您的光臨。

大家注意弯院,這是一篇寫給前端的docker簡明教程辱士,亦可以說是dog君對最近對docker的簡單總結(jié)。談到的是一些基礎(chǔ)內(nèi)容听绳,不涉及docker的一些高級用法或k8s容器編排等技術(shù)颂碘,旨在前端開發(fā)工程師擴展知識面,為全棧開發(fā)打好基礎(chǔ)椅挣。dog君水平有限头岔,如果有一些地方寫的不太好,您可以聯(lián)系dog君或評論鼠证,dog君非常愿意傾聽您的建議峡竣,交個朋友嘛~

下面我們就一起來學(xué)習(xí)docker,揭開docker的神秘面紗量九。

docker介紹

引言

在我們?nèi)粘i_發(fā)中适掰,可能會遇到以下問題:

1.我本地運行沒問題啊
環(huán)境不一致
2.哪個哥們又寫死循環(huán)了,怎么這么卡
在多用戶的操作系統(tǒng)下荠列,會相互影響
3.淘寶在雙11的時候类浪,用戶量暴增
運維成本過高的問題
4.學(xué)習(xí)一門技術(shù),學(xué)習(xí)安裝成本過高
關(guān)于軟件成本過高

相信大家在日常的開發(fā)過程中肌似,也沒少遇到這樣的問題费就。以上的問題呢,也是我們工作中的一些場景锈嫩,很是頭疼受楼。那么這就有一款神器,docker來幫助我們解決這些問題呼寸。

docker 的由來

2010年的時候艳汽,有一幫年輕人創(chuàng)業(yè),創(chuàng)辦了一家公司对雪,他們是專門做PASS平臺的河狐。那時候市場上PASS平臺還比較少,這家公司也是混的風(fēng)生水起瑟捣。
但是到了2013年的時候馋艺,各大公司也都注意到了PASS這塊肉,像亞馬遜迈套,微軟捐祠,Google 等都競相開始做PASS平臺,導(dǎo)致這家公司的營業(yè)額直線下降桑李,瀕臨破產(chǎn)踱蛀。
那么最后呢窿给,創(chuàng)始人一狠心,既然我們干不過他們率拒,那么我們就為人類做做貢獻把崩泡。說時遲那時快,2013年猬膨,這家公司將核心技術(shù)對外開源角撞,那么這個核心技術(shù),就是docker勃痴。
docker開源之后谒所,立刻獲得了一大片追捧。深受資本家的喜愛召耘。
于是乎百炬,到了2014年的時候,得到了C輪的融資污它,4000w美元
到了2015年的時候剖踊,得到了D輪的融資,9500w美元
這不就有錢了嘛衫贬?這家公司開始全神貫注的維護docker德澈。

docker的思想

不是說我們很多情況下是因為環(huán)境不一致導(dǎo)致的問題嘛,那么好固惯,我們直接將環(huán)境打包梆造,這樣就不會出現(xiàn)問題了吧。那么將環(huán)境打包都會分為幾個步驟呢葬毫?這就是docker 的思想镇辉。
docker將本地環(huán)境打包,發(fā)布到遠程的一個中央大倉庫贴捡,其他的用戶通過docker拿到其他用戶發(fā)布上去的環(huán)境忽肛,運行在自己的機器上,這就是docker的思想烂斋。

介紹幾個概念吧

1.集裝箱
會將所有需要的內(nèi)容放到不同的集裝箱中屹逛,誰需要這些環(huán)境,直接拿這個集裝箱就可以了汛骂。
2.標準化:
運輸?shù)臉藴驶篋ocker 有一個碼頭罕模,所有上傳的集裝箱都放在了這個碼頭上,當誰需要某一個環(huán)境帘瞭,就直接指派docker去搬運這個集裝箱就可以了淑掌。
命令的標準化:Docker提供了一系列的命令,幫助我們?nèi)カ@取集裝箱等等操作蝶念。
提供了REST的API:衍生出很多的圖形化界面 如Rancher
3.隔離性:
Docker在運行的集裝箱內(nèi)的內(nèi)容時抛腕,會在Linux的內(nèi)核中诈悍,單獨的開辟一片空間,這片空間不會影響到其他程序兽埃。

注冊中心:超級碼頭,上面放的就是集裝箱
鏡像:集裝箱
容器:運行起來的鏡像

docker 基本操作

安裝docker

那么我們來聊聊docker的基本操作适袜。我們想要使用docker柄错,首先需要下載docker。因為windows操作系統(tǒng)下載docker需要docker專業(yè)版苦酱,并且安裝過程相對比較麻煩售貌,所以說我們在服務(wù)器上來使用下,服務(wù)器操作系統(tǒng)是CentOS 7疫萤,下面附CentOS 7 安裝docker的一些操作步驟颂跨,這里給出鏈接,按照步驟一步步來就可以了扯饶。在安裝docker的過程中可能會遇到一些問題恒削,這里也給出參考鏈接,如下:

CentOS 7 安裝docker

安裝好后尾序,我們在控制臺輸入docker run hello-world钓丰,出現(xiàn)如下信息,即為安裝成功

Docker的中央倉庫

我們上面說到docker的思想每币,是即可携丁。那么我們從哪里下載docker鏡像呢?這里我們推薦三個地址:

1.Docker官方的中央倉庫:這個倉庫是鏡像最全的兰怠,但是下載速度較慢梦鉴,還需要登錄,也有可能被墻揭保。
地址: http://hub.docker.com
2.國內(nèi)的鏡像網(wǎng)站:網(wǎng)易蜂巢肥橙,daoCloud......
網(wǎng)易蜂巢:也是需要進行登錄,操作也比較繁瑣一點
地址:http://c.163yun.com/hub#/home
daoCloud:免登陸掖举,國內(nèi)鏡像快骗,下載速度較快,推薦使用
地址:http://hub.daocloud.io
3.在公司內(nèi)部會采用私服的方式拉取鏡像塔次,但是需要添加一些配置

# 需要在/etc/docker/daemon.json
{
  "registry-mirrors":["https://registry.docker-cn.com"],
  "inscure-registries":["ip:port"],
}

# 重啟兩個服務(wù)
systemctl daemon-reload
systemctl restart docker

# 這樣我們就在公司內(nèi)部搭建起來docker的私有中央倉庫方篮。具體的一些實踐操作,還需要大家來操作哈励负。

鏡像的操作

下面我們開始進行鏡像的操作藕溅。首先我們回顧下docker的思想:用戶上傳制作好的鏡像,發(fā)布到中央倉庫继榆,我們從中央倉庫下載鏡像巾表,運行起來變成一個容器汁掠。我們一步步的來。

拉取鏡像到本地

docker pull 鏡像名稱[:tag]

舉個例子集币,我們想從中央倉庫拉取tomcat的鏡像

  • 輸入tomcat 查找
  • 點擊版本考阱,找到8.5.14-jre8


  • 點擊拉取

  • 復(fù)制命令,控制臺執(zhí)行 docker pull daocloud.io/library/tomcat:8.5.14-jre8,控制臺顯示鏡像安裝過程

這樣我們的鏡像就從中央倉庫拉取到了我們本地

查看全部本地的鏡像

docker images

這里我們可以看到本地的全部鏡像鞠苟,包括tomcat和hello-world

刪除本地鏡像

docker rmi 鏡像的標識

比如說乞榨,刪除我們剛才下載的tomcat鏡像 docker rmi a0

我們在查看下所有鏡像


發(fā)現(xiàn)tomcat鏡像已經(jīng)被我們從本地刪除了

這里我們說下鏡像的標識,我們可以看到IMAGE ID這個字段当娱,就是鏡像的ID吃既,我們不用全部輸入好,只需要前面幾位跨细,保證它在我們本地的鏡像中是唯一的就好了鹦倚。

鏡像的導(dǎo)入導(dǎo)出

這是一種不規(guī)范的行為,但是如果我們遇到外網(wǎng)環(huán)境下載冀惭,內(nèi)網(wǎng)環(huán)境使用的場景的時候震叙,我們可以采用這種方法。

# 將本地的鏡像導(dǎo)出
docker save -o 導(dǎo)出的路徑 鏡像id
# 加載本地的鏡像文件
docker load -i 鏡像文件
# 修改鏡像名稱
docker tag 鏡像id 新鏡像名稱:版本

舉個例子散休,我們將tomcat 鏡像導(dǎo)出后再導(dǎo)入到我們本地

  • 拉取tomcat鏡像(看上面操作)
  • 查看本地所有鏡像捐友,找到tomcat的鏡像id


  • 將本地的鏡像導(dǎo)出
docker save -o ./tomcat.images a0
  • 刪除已有的tomcat 鏡像
docker rmi a0
  • 導(dǎo)入制作好的tomcat鏡像
docker load -i tomcat.images

我們可以看到,鏡像已經(jīng)成功被我們導(dǎo)入進去了溃槐。但是并沒有名字和版本號匣砖,這里我們修改下

  • 修改名稱和版本號
docker tag a0 tomcat:1.0.0

名稱已經(jīng)被我們成功修改過來了

容器的操作

我們來說說容器的操作。老規(guī)矩昏滴,我們還是來回顧下docker的思想猴鲫。用戶將制作好的鏡像發(fā)布到中央倉庫,我們從中央倉庫拉取鏡像到本地谣殊,運行鏡像變成一個容器拂共。
我們運行鏡像變成容器后,這個鏡像就可以正常的使用了姻几。

運行容器

  • 簡單操作
docker run 鏡像的標識|鏡像名稱[:tag]
  • 常用參數(shù)
docker run -d -p 宿主機端口:容器端口 --name 容器名稱 鏡像的標識|鏡像名稱[:tag]

# -d:代表后臺運行容器
# -p:宿主機端口:容器端口:為了映射當前的Linux的端口和容器的端口
# --name 容器名稱:指定容器名稱

我們直接使用參數(shù)來運行起來我們剛才制作的tomcat鏡像

docker run -d -p 8081:8080 --name tomcat a0

然后我們通過瀏覽器訪問下tomcat服務(wù) ip:+8081


正常顯示出tomcat服務(wù)宜狐,表示我們的鏡像運行成功,變成一個容器

查看正在運行的容器

docker ps [-qa]

# -a:查看全部容器
# -q:只查看容器的標識

我們來看看目前我們正在運行的容器有哪些docker ps

這里我們看到運行中的容器是tomcat蛇捌,所有的容器還包含我們之前安裝docker使用過的hello-world容器

查看容器日志

docker logs -f 容器id
# -f:可以滾動查看日志的最后幾行

進入到容器內(nèi)部

docker exec -it 容器id bash

比如說抚恒,我們進入tomcat容器,查看容器內(nèi)部樣子docker exec -it 4d bash

可以看到络拌,docker容器相當于一個小虛擬機俭驮,一些詳細內(nèi)容大家自行查閱相關(guān)資料,這里就不做介紹了哈~

刪除容器

我們在刪除容器前春贸,如果這個容器正在運行混萝,需要先停止當前容器

# 停止指定的容器
docker stop 容器id
# 停止所有容器
docker stop $(docker ps -aq)
# 刪除指定容器
docker rm 容器id
# 刪除所有容器
docker rm $(docker ps -aq)

我們一起來刪除下tomcat還有之前的hello-world容器

  • 停止所有容器docker stop $(docker ps -aq)

我們可以看到遗遵,這時已經(jīng)沒有正在運行中的容器了,并且我們用瀏覽器訪問也訪問不到

  • 刪除所有容器 docker rm $(docker ps -aq)

我們可以看到逸嘀,所有的容器已經(jīng)全部刪除

那么我們想啟動停止的容器怎么辦呢

docker start 容器id
  • 運行tomcat鏡像docker run -d -p 8080:8080 --name tomcat a0
  • 查看當前運行容器docker ps

  • 停止當前運行的容器docker stop ee

  • 啟動停止的容器 docker start ee

  • 我們用瀏覽器訪問下: ip:+8080


tomcat容器又重新啟動了

docker 應(yīng)用

現(xiàn)在我們已經(jīng)掌握了一些基本的docker操作车要,那就一起來實踐一下吧!我們寫一個html文件崭倘,部署到服務(wù)器上運行感受下屯蹦,這里我們以tomcat為例。

那么tomcat如何部署web應(yīng)用呢绳姨?我們只需要將編寫好的index.html文件放在tomcat的webapps目錄下即可正常訪問。好阔挠,我們首先制作一個index.html文件飘庄,這里我們用vim 查看下 vim index.html

  • 啟動tomcat容器 docker run -d -p 8080:8080 --name tomcat a0

  • 用瀏覽器訪問下可以正常訪問

  • 將index.html 文件放到tomcat容器的webapps目錄下tomcat目錄下
    1.進入tomcat容器 docker exec -it ee bash
    2.新建tomcat目錄 mkdir tomcat
    3.從tomcat容器退出 exit
    4.將index.html放入tomcat容器中

docker cp 文件名稱 容器id:容器內(nèi)部路徑

docker cp index.html ee:/usr/local/tomcat/webapps/tomcat

現(xiàn)在我們已經(jīng)可以看到tomcat容器中已經(jīng)有了我們編寫的index.html文件,下面我們訪問下把购撼! ip:8080/tomcat

顯示成功跪削!

那么我們這么操作會不會很麻煩呢?實際上迂求,我們?nèi)ミM入到容器中碾盐,修改容器內(nèi)部的文件是不規(guī)范的,因為當我們刪除容器揩局,再次運行時毫玖,我們的文件就丟失了,達不到持久化的目的凌盯。那怎么辦呢?這里介紹一個數(shù)據(jù)卷的概念付枫。

數(shù)據(jù)卷

我們將容器內(nèi)部的一些文件夾或目錄,和宿主機進行一個映射驰怎,我們在宿主機去做一些操作阐滩,容器內(nèi)部也會同步修改,并且當我們刪除容器后县忌,再次運行時掂榔,只需要指定數(shù)據(jù)卷,那么這個容器就又會重新加載我們保留在宿主機上的文件了症杏,達到了持久化的目的装获。下面我們一起來看下數(shù)據(jù)卷如何使用把!

創(chuàng)建數(shù)據(jù)卷
docker volume create 數(shù)據(jù)卷名稱
# 創(chuàng)建數(shù)據(jù)卷后,默認會存放在一個目錄下 /var/lib/docker/volumes/數(shù)據(jù)卷名稱/_data

我們來創(chuàng)建一個tomcat數(shù)據(jù)卷 docker volume create tomcat

進入目錄查看 cd /var/lib/docker/volumes/tomcat/_data

我們可以看到,數(shù)據(jù)卷已經(jīng)創(chuàng)建成功方灾,目前是空的步责,沒有任何數(shù)據(jù)酝掩。

查看全部數(shù)據(jù)卷
docker volume ls

我們可以看到剛才創(chuàng)建的tomcat數(shù)據(jù)卷

查看某個數(shù)據(jù)卷的詳細信息
docker volume inspect 數(shù)據(jù)卷名稱

我們也可以拿到數(shù)據(jù)卷存放的目錄

刪除數(shù)據(jù)卷
docker volume rm 數(shù)據(jù)卷名稱

我們刪除下tomcat數(shù)據(jù)卷看看

我們可以看到幅聘,tomcat數(shù)據(jù)卷已經(jīng)全部刪除

應(yīng)用數(shù)據(jù)卷
# 當你映射數(shù)據(jù)卷時震糖,如果數(shù)據(jù)卷不存在总珠,Docker會幫助我們自動創(chuàng)建肋杖,會將容器內(nèi)部自帶的文件溉仑,存儲在默認路徑中。
docker run -v 數(shù)據(jù)卷名稱:容器內(nèi)部路徑 鏡像id
# 直接指定一個路徑作為數(shù)據(jù)卷的存放位置状植,這個路徑下是空的
docker run -v 路徑:容器內(nèi)部路徑 鏡像id

下面我們以tomcat為例浊竟,分別來看下這兩種的效果

  • Docker自動創(chuàng)建數(shù)據(jù)卷:

1.查看當前所有鏡像docker images


2.自動創(chuàng)建數(shù)據(jù)卷方式,啟動tomcat容器

docker run -d -p 8080:8080 --name tomcat -v tomcat:/usr/local/tomcat/webapps a0

我們可以看到津畸,docker為我們自動創(chuàng)建了tomcat數(shù)據(jù)卷振定。我們查看下tomcat數(shù)據(jù)卷信息,進入到目錄看下

我們可以看到肉拓,tomcat容器的數(shù)據(jù)已經(jīng)保存到宿主機上面了

3.將index.html放到tomcat數(shù)據(jù)卷的tomcat目錄中

mkdir tomcat
cp /dev/project/index.html ./tomcat

我們訪問下看看

頁面正常顯示

4.刪除tomcat容器后频,重新啟動看頁面是否還能正常顯示

docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker images
docker run -d -p 8080:8080 --name tomcat -v tomcat:/usr/local/tomcat/webapps a0

我們的頁面仍然正常顯示。說明數(shù)據(jù)卷具有持久化容器數(shù)據(jù)能力

我們來試試第二種暖途,將數(shù)據(jù)卷保存到自定義路徑下

  • 將數(shù)據(jù)卷保存到自定義路徑下
# 我們先根據(jù)如下命令刪除容器和數(shù)據(jù)卷
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker volume rm tomcat
# 以自定義路徑方式保存數(shù)據(jù)卷(本地路徑只能使用絕對路徑)
# 我們在/dev/project 目錄下進行
# 在該目錄下新建webapps目錄
mkdir webapps
docker images
docker run -d -p 8080:8080 --name tomcat -v /dev/project/webapps:/usr/local/tomcat/webapps a0
cd webapps
docker exec -it fe bash
cd webapps

我們可以看到卑惜,宿主機的webapps和容器內(nèi)的webapps都沒有文件

我們在宿主機webapps目錄下新建ROOT,將index.html復(fù)制一份到ROOT目錄下

cd /dev/project/webapps
mkdir ROOT
cd ROOT
cp /dev/project/index.html /dev/project/webapps/ROOT

此時我們通過瀏覽器訪問 ip:8080

同樣驻售,我們能夠正常訪問露久,這也方便我們對容器數(shù)據(jù),或者容器日志更好的管理欺栗。

docker自定義鏡像

下面我們來說說docker自定義鏡像毫痕。老規(guī)矩,我們還是來一起回顧下docker的思想迟几。用戶將制作好的鏡像發(fā)布到中央倉庫镇草,我們從中央倉庫拿到鏡像,運行瘤旨,變成一個容器梯啤。

我們之所以能從中央倉庫下載鏡像,是因為中央倉庫的鏡像存哲,也都是用戶上傳上去的因宇,那么這里我們一起來制作一個自定義鏡像。

1.創(chuàng)建一個Dockerfile文件祟偷,并且指定自定義鏡像信息察滑。
Dockerfile文件中常用的內(nèi)容:
from:指定當前自定義鏡像依賴的環(huán)境
copy:將相對路徑下的內(nèi)容復(fù)制到自定義鏡像中

其他的像workdir cmd run expose等命令在這里就不一一給大家介紹了,下面這個參考鏈接修肠,可以給大家答案贺辰。
Dockerfile文件詳解

前面我們演示了使用tomcat部署一個index.html頁面,那么我們就制作一個tomcat_index鏡像,運行后饲化,我們可以直接訪問莽鸭。一起來看下操作步驟吧。

  • 刪除所有鏡像和容器
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker rmi $(docker images -aq)
  • 創(chuàng)建Dockerfile文件并編寫如下內(nèi)容

我們是在/dev/project/目錄下操作的吃靠,我們看下該目錄都有什么

  • 打包鏡像
docker build -t 鏡像名稱:[tag] .

我們執(zhí)行docker build -t tomcat:1.0.0 .

注意最后面還有一個. 這個. 的作用就是指明Dockerfile文件所在目錄

我們來看下當前所有鏡像docker images

已經(jīng)有了我們的tomcat鏡像硫眨,下面我們運行起來看下

docker run -d -p 8080:8080 --name tomcat 66

在瀏覽器中正常訪問。

docker-compose 使用

來巢块,老規(guī)矩礁阁,我們一起來回顧下docker的思想。用戶將制作好的鏡像發(fā)布到一個中央倉庫族奢,我們從中央倉庫下載好鏡像到我們本地姥闭,運行鏡像變成一個容器。到此為止呢越走,其實我們已經(jīng)掌握了docker的基本用法棚品。但是我們有沒有發(fā)現(xiàn)一個問題,就是在操作docker的時候弥姻,有點繁瑣,命令太多掺涛。我們能不能實現(xiàn)只編寫一次庭敦,后面直接使用呢?當然可以薪缆,這就是我們的docker-compose秧廉。我們先來看下它可以解決什么問題。

之前運行一個鏡像拣帽,需要添加大量的參數(shù)
可以通過docker-compose編寫這些參數(shù)
docker-compose可以幫助我們批量的管理容器
只需要通過一個docker-compose.yml文件去維護即可

安裝docker-compose

我們進入github疼电,輸入docker/compose,點擊進入

我們點擊紅框內(nèi)容,找到發(fā)行版本

就拿最新版1.28.2 為例减拭。因為我們是在centos 7環(huán)境下蔽豺,我們選擇如下畫紅框部分,點擊下載

下載完畢后拧粪,我們通過scp命令發(fā)送到centos 7 中修陡。這是一個可執(zhí)行文件,所以我們需要修改一下權(quán)限

# 首先修改下名字
mv docker-compose-Linux-x86_64 docker-compose
chmod 777 docker-compose

# 現(xiàn)在我們已經(jīng)可以使用docker-compose命令了可霎。為了方便后期操作魄鸦,配置一個環(huán)境變量

# 將docker-compose 文件移動到/usr/local/bin  
mv docker-compose /usr/local/bin
# 修改/etc/profile 文件
vim /etc/profile 

如果沒有的話,加上即可癣朗。
最后我們應(yīng)用一下配置文件 source /etc/profile

在任意目錄下使用docker-compose

打印出一下信息拾因,說明我們的docker-compose安裝完畢

使用docker-compose管理tomcat容器

下面我們就一起來使用docker-compose管理我們的tomcat容器把!

前面提到,使用docker-compose管理我們的容器需要一個docker-compose.yml文件绢记。關(guān)于這個文件的配置扁达,這里只做簡單的介紹,詳細的配置同Dockerfile給出參考鏈接庭惜,大家自行學(xué)習(xí)哈~

docker-compose.yml 文件詳解

我們新建docker-compose.yml文件罩驻,編寫內(nèi)容如下:

我們一起來看下docker-compose的一些常用命令把!

在使用docker-compose的命令時护赊,默認會在當前目錄下找docker-compose.yml文件
1.基于dockr-compose.yml啟動管理的容器
docker-compose up -d
2.關(guān)閉并刪除容器
docker-compose down
3.開啟|關(guān)閉|重啟已經(jīng)存在的由docker-compose維護的容器
docker-compose start|stop|restart
4.查看由docker-compose管理的容器
docker-compose ps
5.查看日志
docker-compose logs -f

我們使用下docker-compose管理tomcat容器
控制臺執(zhí)行docker-compose up -d

我們在瀏覽器訪問下

瀏覽器能夠正常訪問惠遏。

我們的docker-compose還可以配合Dockerfile來管理自定義鏡像,這里我們就不做介紹了骏啰,就留給大家去探索吧节吮!

總結(jié)

到此為止呢,我們的docker基礎(chǔ)教程就結(jié)束了判耕。使用docker呢透绩,方便我們安裝和管理各種各樣的軟件,免去了繁瑣的配置問題壁熄,并且對于我們前端工程師來說帚豪,這也是進擊大前端和全棧開發(fā)的必經(jīng)之路。

參考鏈接:
千鋒教育-2020版-Docker最新超詳細版教程通俗易懂

我是前端dog君草丧,一名95后前端小兵狸臣。對前端的熱愛,讓我們在此相聚昌执,希望這篇文章烛亦,能幫助到您,也同時希望能交到志同道合的小伙伴懂拾,共同發(fā)展煤禽,一起進步。我的微信號dm120225岖赋,備注簡書檬果,期待您的光臨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唐断,一起剝皮案震驚了整個濱河市汁汗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栗涂,老刑警劉巖知牌,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異斤程,居然都是意外死亡角寸,警方通過查閱死者的電腦和手機菩混,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扁藕,“玉大人沮峡,你說我怎么就攤上這事∫诟蹋” “怎么了邢疙?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長望薄。 經(jīng)常有香客問我疟游,道長,這世上最難降的妖魔是什么痕支? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任颁虐,我火速辦了婚禮,結(jié)果婚禮上卧须,老公的妹妹穿的比我還像新娘另绩。我一直安慰自己,他們只是感情好花嘶,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布笋籽。 她就那樣靜靜地躺著,像睡著了一般椭员。 火紅的嫁衣襯著肌膚如雪车海。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天拆撼,我揣著相機與錄音容劳,去河邊找鬼喘沿。 笑死闸度,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蚜印。 我是一名探鬼主播莺禁,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窄赋!你這毒婦竟也來了哟冬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤忆绰,失蹤者是張志新(化名)和其女友劉穎浩峡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體错敢,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡翰灾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年缕粹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纸淮。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡平斩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咽块,到底是詐尸還是另有隱情绘面,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布侈沪,位于F島的核電站揭璃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏峭竣。R本人自食惡果不足惜塘辅,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望皆撩。 院中可真熱鬧扣墩,春花似錦、人聲如沸扛吞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滥比。三九已至亚脆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盲泛,已是汗流浹背濒持。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寺滚,地道東北人柑营。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像村视,于是被迫代替她去往敵國和親官套。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

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