docker 知識點(diǎn)

docker 官網(wǎng)

docker cli reference

  • windows10 安裝
    不要同時(shí)安裝virtual box和window docker , 只需安裝windows docker即可, 否則需要?jiǎng)h除環(huán)境變量里面的docker變量

  • 配置國內(nèi)鏡像
    推薦使用阿里云鏡像加速器, 方法: 注冊阿里云賬號,=>容器鏡像服務(wù)=>鏡像加速器=>操作文檔=>windows, 將加速器地址復(fù)制后打開docker 的setting=>daemon=>registry mirrors 粘貼復(fù)制的加速器地址 apply即可.

  • docker 整體流程


    docker
  • Shared drives 容器可訪問的共享文件夾
    需要本地計(jì)算機(jī)的用戶名密碼
    如果沒開啟的話,掛載本地volume 會(huì)報(bào)錯(cuò):
    docker: Error response from daemon: Drive has not been shared

Docker命令與 Git 和 GitHub比較類似。總的來說分為以下幾種:

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作運(yùn)維 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
鏡像倉庫 — docker [login|pull|push|search]
本地鏡像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]

  • 展示docker信息
docker version
docker info
docker -D info #The global -D option tells all docker comands to output debug information.

  • 執(zhí)行構(gòu)建命令
docker build -t webname . 
  • dockerfile
    ` [from maintainer run cmd label expose env add copy entrypoint volume user workdir arg onbuild stopsignal healthcheck shell]

  • .dockerignore

     # comment 
        */temp*
        */*/temp*
        temp?
        ~*
    
  • 查看鏡像文件

docker images [options] [name]
-a, --all=false      Show all images (by default filter out the intermediate image layers)
-f, --filter=[]      Provide filter values (i.e. 'dangling=true')
--no-trunc=false     Don't truncate output
-q, --quiet=false    Only show numeric IDs
  • 刪除鏡像
docker rmi image [imageid ...] 
docker rmi $(docker images | grep "none" | awk '{print $3}')
  • 運(yùn)行容器
docker run [options] [image] [command][agr...]
docker run -d -p 5000:80
-a,--attach=[]Attach to STDIN, STDOUT or STDERR.-c,--cpu-shares=0         CPU shares (relative weight)--cidfile=""Write the container ID to the file
--cpuset=""CPUsin which to allow execution (0-3,0,1)-d,--detach=falseDetached mode: run container in the background andprintnew container ID
--dns=[]Set custom DNS servers
--dns-search=[]Set custom DNS search domains
-e,--env=[]Set environment variables
--entrypoint=""Overwrite the default ENTRYPOINT of the image
--env-file=[]Readin a line delimited file of environment variables
--expose=[]Expose a port from the container without publishing it to your host
-h,--hostname=""Container host name
-i,--interactive=falseKeep STDIN open even ifnot attached
--link=[]Add link to another container in the form of name:alias--lxc-conf=[](lxc exec-driver only)Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"-m,--memory=""Memory limit (format:<number><optional unit>,where unit = b, k, m or g)--name=""Assign a name to the container
--net="bridge"Set the Network mode for the container
                               'bridge': creates a new network stack for the container on the docker bridge
                               'none':no networking forthis container
                               'container:<name|id>': reuses another container network stack
                               'host':use the host network stack inside the container.Note: the host mode gives the container full access to local system services such as D-bus andis therefore considered insecure.-P,--publish-all=falsePublish all exposed ports to the host interfaces
-p,--publish=[]Publish a container's port to the host
                               format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort
                               (use 'docker port' to see the actual mapping)
--privileged=false         Give extended privileges to this container
--rm=false                 Automatically remove the container when it exits (incompatible with -d)
--sig-proxy=true           Proxy received signals to the process (even in non-TTY mode). SIGCHLD, SIGSTOP, and SIGKILL are not proxied.
-t, --tty=false            Allocate a pseudo-TTY
-u, --user=""              Username or UID
-v, --volume=[]            Bind mount a volume (e.g., from the host: -v /host:/container, from Docker: -v /container)
--volumes-from=[]          Mount volumes from the specified container(s)
-w, --workdir=""           Working directory inside the container
  • 查看所有容器
docker ps -a
  • 查看運(yùn)行中容器
docker ps
  • 查看所有容器ID
docker ps -a -q
  • 啟動(dòng)容器(已停止的容器)
docker start [containerid ...]
-a,--attach=false Attach container's STDOUT and STDERR and forward all signals to the process
-i, --interactive=false    Attach container's STDIN
  • 重啟一個(gè)容器或多個(gè)容器
docker restart [options] [container ...]
-t,--time=10Number of seconds to try to stop for before killing the container.Once killed it will then be restarted.Defaultis10 seconds.
  • 停止容器
docker stop [containerid ...]
  • 停止所有容器
docker stop $(docker ps -a -q)
  • 暫停容器
docker pause [container]
  • 取消暫停容器
docker unpause [container]
  • 刪除容器
docker rm [options] [containerid ...]
-f,--force=falseForce removal of running container
-l,--link=falseRemove the specified link andnot the underlying container
-v,--volumes=falseRemove the volumes associated with the container
  • 刪除所有容器
docker rm $(docker ps -a -q)
docker rm `docker ps -a | grep Exited | awk '{print $1}'`
  • 查看所有volume
docker volume ls
  • 刪除指定volume (刪除容器時(shí)volume會(huì)保留,不需要時(shí)要?jiǎng)h除)
docker volume rm [volume name]
  • 刪除所有未使用的volume
docker volume prune
  • 查看volume詳細(xì)
docker volume inspect [volume name]
  • 安裝jenkins (-v 后jenkins是volume名稱,也可不命名)
docker run -p 8080:8080 -v jenkins:/var/jenkins_home jenkins
  • 提交一個(gè)新的image
docker commit [options] [repository[:tag]]
- options:
-a, --author=""     Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-m, --message=""    Commit message
-p, --pause=true    Pause container during commit
  • 提交一個(gè)存在的容器
$ docker ps
ID                  IMAGE               COMMAND             CREATED             STATUS              PORTS
c3f279d17e0a        ubuntu:12.04/bin/bash           7 days ago          Up25 hours
197387f1b436        ubuntu:12.04/bin/bash           7 days ago          Up25 
$ docker commit c3f279d17e0a  SvenDowideit/testimage:version3
f5283438590d
$ docker images | head
REPOSITORY                        TAG                 ID                  CREATED             VIRTUAL SIZE
SvenDowideit/testimage            version3            f5283438590d        16 s
  • 將容器中的文件拷貝到主機(jī)上
docker cp [container:path] [hostpath]
  • 進(jìn)入容器并進(jìn)行交互
docker exec -it [container] /bin/bash
  • 比較一個(gè)容器不同版本提交的文件差異
docker diff [container]
顯示中的A D C 含義
A-Add
D-Delete
C-Change
  • 獲取server中的實(shí)時(shí)事件
docker events [options]
--since=""Show all events created since timestamp
--until=""Stream events untilthis timestamp
  • 導(dǎo)入已有的image
docker import url|-[repository[:tag]]
# 支持壓縮包 (.tar, .tar.gz, .tgz, .bzip, .tar.xz, or .txz)
例如:
導(dǎo)入遠(yuǎn)程的包:
docker import http://example.com/exampleimage.tgz
導(dǎo)入本地文件:
$ cat exampleimage.tgz | sudo docker import- exampleimagelocal:new
$ sudo tar -c .| sudo docker import- exampleimagedir
導(dǎo)入本地目錄:
  • 導(dǎo)出一個(gè)容器
docker export [container] > latest.tar
  • 顯示一個(gè)image的歷史
docker history [options] image
--no-trunc=false   Don't truncate output
-q, --quiet=false    Only show numeric IDs
  • 殺死docker進(jìn)程
docker kill [options] [container ...]
-s,--signal="KILL"Signal to send to the container
  • 加載image
docker load
i,--input=""Readfrom a tar archive file, instead of STDIN
例如:加載一個(gè)打包好的鏡像
docker images
docker load < busybox.tar
docker load --input fedora.tar
  • 登陸docker注冊服務(wù)器
docker login [options][server]
可以使用自己的注冊服務(wù)器
docker login localhost:8080
  • 獲取容器的日志
docker logs [container]
-f,--follow=falseFollow log output
-t,--timestamps=falseShow timestamps
--tail="all"Output the specified number of lines at the end of logs (defaults to all logs)
  • 端口轉(zhuǎn)發(fā)
docker port [container] [private_port]
  • 從遠(yuǎn)端拉取一個(gè)image
docker pull [name[:tag]]
例如:
$ docker pull debian
# will pull all the images in the debian repository
$ docker pull debian:testing
# will pull only the image named debian:testing and any intermediate layers# it is based on. (Typically the empty `scratch` image, a MAINTAINERs layer,# and the un-tarred base).
$ docker pull registry.hub.docker.com/debian
# manually specifies the path to the default Docker registry. This could# be replaced with the path to a local regis
  • 推送image到這側(cè)服務(wù)器
docker push [name[:tag]]
  • 打包image
docker save [image]
-o,--output=""Write to an file, instead of STDOUT
例如:
$ sudo docker save busybox > busybox.tar
$ ls -sh busybox.tar
2.7M busybox.tar
$ sudo docker save --output busybox.tar busybox
$ ls -sh busybox.tar
2.7M busybox.tar
$ sudo docker save -o fedora-all.tar fedora
$ sudo docker save -o fedora-latest.tar fedora:latest
  • 搜索image
docker search [name]
  • 為image打標(biāo)簽
docker tag [options] [image[:tag][registryhost/][username/]name[:tag]
-f,--force=false Force
  • docker inspect
    檢查鏡像或者容器的參數(shù)屈扎,默認(rèn)返回 JSON 格式禀挫。
    -f 指定返回值的模板文件特定值。
docker instpect nginx:latest
docker inspect nginx-container
docker inspect -f {{.Mounts}} nginx-container
  • docker attach
docker attach <CONTAINER_ID>

Docker允許使用attach命令與運(yùn)行中的容器交互,并且可以隨時(shí)觀察容器內(nèi)進(jìn)程的運(yùn)行狀況。退出容器可以通過兩種方式來完成:
Ctrl+C 直接退出
Ctrl-\ 退出并顯示堆棧信息(stack trace)

  • docker stats
    查看和統(tǒng)計(jì)容器所占用的資源情況
root@VM-16-14-ubuntu ~# docker stats --no-stream b06d6fc
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
27811baf9933        lvliang_api         0.14%               94.49MiB / 15.51GiB   0.60%               78.7MB / 73.3MB     0B / 0B             28

b06d6fc為容器id, 這里傳遞了一個(gè) --no-stream 的參數(shù),是因?yàn)?docker stats 命令默認(rèn)是一個(gè)持續(xù)的動(dòng)態(tài)流式輸出(每秒一次)帜消,給它傳遞 --no-stream 參數(shù)后,它就只輸出一次便會(huì)退出了
接下來我為你介紹下它輸出內(nèi)容的含義:

Container ID:容器的 ID浓体,也是一個(gè)容器生命周期內(nèi)不會(huì)變更的信息泡挺。
Name:容器的名稱,如果沒有手動(dòng)使用 --name 參數(shù)指定命浴,則 Docker 會(huì)隨機(jī)生成一個(gè)娄猫,運(yùn)行過程中也可以通過命令修改。
CPU %:容器正在使用的 CPU 資源的百分比生闲,這里面涉及了比較多細(xì)節(jié)稚新,下面會(huì)詳細(xì)說。
Mem Usage/Limit:當(dāng)前內(nèi)存的使用及容器可用的最大內(nèi)存跪腹,這里我使用了一臺 16G 的電腦進(jìn)行測試褂删。
Mem %:容器正在使用的內(nèi)存資源的百分比。
Net I/O:容器通過其網(wǎng)絡(luò)接口發(fā)送和接受到的數(shù)據(jù)量冲茸。
Block I/O:容器通過塊設(shè)備讀取和寫入的數(shù)據(jù)量屯阀。
Pids:容器創(chuàng)建的進(jìn)程或線程數(shù)。

  • docker top
    查看容器中的進(jìn)程
root@VM-16-14-ubuntu ~# docker top --help
Usage:  docker top CONTAINER [ps OPTIONS]
Display the running processes of a container
root@VM-16-14-ubuntu ~# docker top (docker ps -ql)
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                8085                8059                0                   Feb03               ?                   00:18:44            dotnet ll.Api.dll
  • Dockerfile關(guān)鍵字
  1. FROM
    基于哪個(gè)鏡像
  2. RUN
    安裝軟件用
  3. MAINTAINER
    鏡像創(chuàng)建者
  4. CMD
    container啟動(dòng)時(shí)執(zhí)行的命令轴术,但是一個(gè)Dockerfile中只能有一條CMD命令难衰,多條則只執(zhí)行最后一條CMD。
    CMD主要用于container時(shí)啟動(dòng)指定的服務(wù)逗栽,當(dāng)docker run command的命令匹配到CMD command時(shí)盖袭,會(huì)替換CMD執(zhí)行的命令(同時(shí)執(zhí)行)。
  5. ENTRYPOINT
    container啟動(dòng)時(shí)執(zhí)行的命令,但是一個(gè)Dockerfile中只能有一條ENTRYPOINT命令鳄虱,如果多條弟塞,則只執(zhí)行最后一條ENTRYPOINT沒有CMD的可替換特性
  6. USER
    使用哪個(gè)用戶跑container
  7. EXPOSE
    container內(nèi)部服務(wù)開啟的端口。主機(jī)上要用還得在啟動(dòng)container時(shí)拙已,做host-container的端口映射:docker run -d -p 127.0.0.1:33301:22 centos6-ssh
  8. ENV
    用來設(shè)置環(huán)境變量决记,比如:
    ENV LANG en_US.UTF-8
    ENV LC_ALL en_US.UTF-8
  9. ADD
    將文件拷貝到container的文件系統(tǒng)對應(yīng)的路徑
    所有拷貝到container中的文件和文件夾權(quán)限為0755,uid和gid為0
    如果文件是可識別的壓縮格式,則docker會(huì)幫忙解壓縮倍踪,如果要ADD本地文件系宫,則本地文件必須在 docker build ,指定的目錄下建车,如果要ADD遠(yuǎn)程文件扩借,則遠(yuǎn)程文件必須在 docker build ,指定的目錄下缤至。比如:
    docker build github.com/creack/docker-firefox
    docker-firefox目錄下必須有Dockerfile和要ADD的文件
    注意:使用docker build - < somefile方式進(jìn)行build潮罪,是不能直接將本地文件ADD到container中。只能ADD url file凄杯。ADD只有在build鏡像的時(shí)候運(yùn)行一次,后面運(yùn)行container的時(shí)候不會(huì)再重新加載了秉宿。
  10. VOLUME
    可以將本地文件夾或者其他container的文件夾掛載到container中戒突。
  11. WORKDIR
    切換目錄用,可以多次切換(相當(dāng)于cd命令)描睦,對RUN,CMD,ENTRYPOINT生效
  12. ONBUILD
    ONBUILD 指定的命令在構(gòu)建鏡像時(shí)并不執(zhí)行膊存,而是在它的子鏡像中執(zhí)行
  • docker network ls
    查看網(wǎng)絡(luò)信息,默認(rèn)為:bridge none host
  • 自定義網(wǎng)絡(luò)
    docker 允許我們創(chuàng)建3種類型的自定義網(wǎng)絡(luò),bridge忱叭,overlay隔崎,MACVLAN
#1 bridge 模式
docker network create --driver bridge redis-net
#2 overlay模式 attachable
docker network create --driver=overlay --attachable name=myOverlayNet 
  • docker network inspect
    display detailed information on one or more networks
docker network inspect [options] network [network...]

options:
--format ,-f 格式化輸出
-verbose ,-v 診斷詳情

  • docker運(yùn)行dotnet示例
//此處用powershell
docker run -it -p 8080:5000 -v ${PWD}:/app --workdir "/app" --name "dotnet_docker" microsoft/dotnet /bin/bash
-it 參數(shù)表示進(jìn)入交互模式
-p 8080:5001 表示把容器里的5001端口映射給宿主的8080端口。
-v 表示創(chuàng)建volume
${PWD}是指宿主當(dāng)前的目錄韵丑。此處也可以用絕對路徑,如/c/work/web/
{PWD}:/app就是把容器里的/app文件夾連接到了宿主系統(tǒng)里的當(dāng)前文件夾爵卒,而容器里的/app目錄就是應(yīng)用程序?qū)⒁\(yùn)行的位置
 --workdir "/app"表示容器里當(dāng)前的工作目錄是/app。
--name "dotnet_docker"表示容器名稱是"dotnet_docker"
然后使用microsoft/dotnet這個(gè)鏡像撵彻。
最后使用/bin/bash返回一個(gè)終端钓株,以便讓我與容器里進(jìn)行交互
  • win10 中安裝的docker的路徑
    本質(zhì)上docker安裝到了hype-v虛擬機(jī)中的,該虛擬機(jī)路徑為
    C:\Users\Public\Documents\Hyper-V\Virtual hard disks

  • docker創(chuàng)建網(wǎng)絡(luò)net組,橋接網(wǎng)絡(luò)
    在一個(gè)Docker Host里,有許多容器陌僵,他們之間需要相互通信轴合。我們可以使用容器名進(jìn)行通信,尤其是開發(fā)的時(shí)候碗短。
    但是當(dāng)容器比較多的時(shí)候受葛,你可能就傾向于對一些容器進(jìn)行隔離,或者叫做分組。
    而我們通過Docker客戶端就可以創(chuàng)建這種隔離的網(wǎng)絡(luò)总滩。每一個(gè)隔離網(wǎng)絡(luò)里的容器可以相互通信纲堵,這時(shí)也可以使用容器名進(jìn)行通信。
    有了這種隔離的網(wǎng)絡(luò)咳秉,對容器間的通信管理就方便多了
    1.創(chuàng)建自定義橋接網(wǎng)絡(luò)
    docker network create --driver bridge 網(wǎng)絡(luò)名
    2.使容器加入到這個(gè)網(wǎng)絡(luò)
    docker run -d --net=網(wǎng)絡(luò)名 --name 網(wǎng)絡(luò)內(nèi)的容器名 鏡像名:tag
    3.查看網(wǎng)絡(luò)
    docker network ls

PS C:\Users\wweim> docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
cac37f4bf289        bridge              bridge              local
73740e25ac6e        host                host                local
e5ec0ad83aef        my-net              bridge              local
5d3fbea9181c        none                null                local

其中name為my-net即為自定義創(chuàng)建的bridge橋接網(wǎng)絡(luò)
使用docker insepct my-net查看網(wǎng)絡(luò)信息

PS C:\Users\wweim> docker inspect my-net
[
    {
        "Name": "my-net",
        "Id": "e5ec0ad83aef0f8be7ef4e1147f28223280ec73a27b5b0b6b31401f9c56185b0",
        "Created": "2020-02-03T13:47:36.5422024Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "62e6d09cfd1afb4552dbb75f2b42ee4ccf80529c1e4a369079bca485577fbd8e": {
                "Name": "lvliang_api",
                "EndpointID": "ba95b83c5f090a67b701a8e6216b9dda553bcbab167f7fd27eab4cfd1313535b",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

可以看到containers中已經(jīng)有一個(gè)容器了,再啟動(dòng)容器時(shí)使用 --net=網(wǎng)絡(luò)名參數(shù),就會(huì)創(chuàng)建自定義網(wǎng)格內(nèi)的其他容器,同一個(gè)橋接網(wǎng)絡(luò)的容器可以相互通信
并且其他容器就可以使用host=lvliaing_api作為服務(wù)器名連接了(比較常見的就是數(shù)據(jù)庫的連接字符串)

  • 清除內(nèi)容 prune

prune 命令用來刪除不再使用的 docker 對象婉支。
刪除所有未被 tag 標(biāo)記和未被容器使用的鏡像:
docker image prune

刪除所有未被容器使用的鏡像:
docker image prune -a

刪除所有停止運(yùn)行的容器:
docker container prune

刪除所有未被掛載的卷:
docker volume prune

刪除所有網(wǎng)絡(luò):
docker network prune

刪除 docker 所有資源:
docker system prune

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市澜建,隨后出現(xiàn)的幾起案子向挖,更是在濱河造成了極大的恐慌,老刑警劉巖炕舵,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件何之,死亡現(xiàn)場離奇詭異,居然都是意外死亡咽筋,警方通過查閱死者的電腦和手機(jī)溶推,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奸攻,“玉大人蒜危,你說我怎么就攤上這事《媚停” “怎么了辐赞?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長硝训。 經(jīng)常有香客問我响委,道長,這世上最難降的妖魔是什么窖梁? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任赘风,我火速辦了婚禮,結(jié)果婚禮上纵刘,老公的妹妹穿的比我還像新娘邀窃。我一直安慰自己,他們只是感情好假哎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布蛔翅。 她就那樣靜靜地躺著,像睡著了一般位谋。 火紅的嫁衣襯著肌膚如雪山析。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天掏父,我揣著相機(jī)與錄音笋轨,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛爵政,可吹牛的內(nèi)容都是我干的仅讽。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼钾挟,長吁一口氣:“原來是場噩夢啊……” “哼洁灵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掺出,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤徽千,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后汤锨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體双抽,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年闲礼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了牍汹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡柬泽,死狀恐怖慎菲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锨并,我是刑警寧澤露该,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站琳疏,受9級特大地震影響有决,放射性物質(zhì)發(fā)生泄漏闸拿。R本人自食惡果不足惜空盼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望新荤。 院中可真熱鬧揽趾,春花似錦、人聲如沸苛骨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痒芝。三九已至俐筋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間严衬,已是汗流浹背澄者。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粱挡。 一個(gè)月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓赠幕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親询筏。 傳聞我的和親對象是個(gè)殘疾皇子榕堰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

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