测试工程师Docker基础

    body {        width: 35em;        margin: 0 auto;        font-family: Tahoma, Verdana, Arial, sans-serif;    }2、docker安装

直接yum安装即可:

#查看linux内核版本[root@ecs-x-large-2-linux-20200305213344 ~]# uname -r3.10.0-1160.6.1.el7.x86_64#查看系统版本详情[root@ecs-x-large-2-linux-20200305213344 ~]# cat /etc/os-releaseNAME="CentOS Linux"VERSION="7 (Core)"ID="centos"ID_LIKE="rhel fedora"VERSION_ID="7"PRETTY_NAME="CentOS Linux 7 (Core)"ANSI_COLOR="0;31"CPE_NAME="cpe:/o:centos:centos:7"HOME_URL="https://www.centos.org/"BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"CENTOS_MANTISBT_PROJECT_VERSION="7"REDHAT_SUPPORT_PRODUCT="centos"REDHAT_SUPPORT_PRODUCT_VERSION="7"#查看docker是否安装成功[root@ecs-x-large-2-linux-20200305213344 ~]# docker versionClient: Version:        1.13.1 API version:    1.26 Package version: docker-1.13.1-203.git0be3e21.el7.centos.x86_64 Go version:      go1.10.3 Git commit:      0be3e21/1.13.1 Built:          Thu Nov 12 15:11:46 2020 OS/Arch:        linux/amd64Server: Version:        1.13.1 API version:    1.26 (minimum version 1.12) Package version: docker-1.13.1-203.git0be3e21.el7.centos.x86_64 Go version:      go1.10.3 Git commit:      0be3e21/1.13.1 Built:          Thu Nov 12 15:11:46 2020 OS/Arch:        linux/amd64 Experimental:    false

#测试docker[root@ecs-x-large-2-linux-20200305213344 ~]# docker run hello-worldUnable to find image 'hello-world:latest' locallyTrying to pull repository docker.io/library/hello-world ...latest: Pulling from docker.io/library/hello-worldb8dfde127a29: Pull completeDigest: sha256:89b647c604b2a436fc3aa56ab1ec515c26b085ac0c15b0d105bc475be15738fbStatus: Downloaded newer image for docker.io/hello-world:latestHello from Docker!This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.    (amd64) 3. The Docker daemon created a new container from that image which runs the    executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it    to your terminal.To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID: https://hub.docker.com/For more examples and ideas, visit: https://docs.docker.com/get-started/

#查看下载后的镜像[root@ecs-x-large-2-linux-20200305213344 ~]# docker imagesREPOSITORY              TAG                IMAGE ID            CREATED            SIZEdocker.io/hello-world  latest              d1165f221234        7 hours ago        13.3 kBdocker.io/nginx        latest              35c43ace9216        2 weeks ago        133 MB

3、docker运行原理

docker是一个client-server结构的系统,docker的守护进程运行在主机上,通过socker从客户端访问。server接收到client指令,就只执行这个命令。

网络异常 取消重新上传

三、docker常用命令

1、帮助命令

docker version #显示dokcer版本信息

docker info #显示docker的系统信息,包括镜像和容器数量

docker 命令 --help #帮助命令

2、镜像命令

docker images #查看所有本地主机上的镜像

docker search #搜索某个镜像

docker pull #下载镜像

docker rmi #删除镜像

docker images #查看所有本地主机上的镜像

[root@ecs-x-large-2-linux-20200305213344 ~]# docker imagesREPOSITORY              TAG                IMAGE ID            CREATED            SIZEdocker.io/hello-world  latest              d1165f221234        7 hours ago        13.3 kBdocker.io/nginx        latest              35c43ace9216        2 weeks ago        133 MB#解释#REPOSITORY  镜像的仓库源#TAG        镜像标签#IMAGE ID    镜像id#CREATED    镜像创建时间#SIZE        镜像大小#可选项Options:  -a, --all            Show all images (default hides intermediate images)#查看所有镜像  -q, --quiet          Only show numeric IDs #只显示镜像id  [root@ecs-x-large-2-linux-20200305213344 ~]# docker images -aq  #显示所有镜像idd1165f22123435c43ace9216

docker pull #下载镜像

#下载镜像 docker pull 镜像名[:tag]  如果不写tag默认下载最新[root@ecs-x-large-2-linux-20200305213344 ~]# docker pull redisUsing default tag: latestTrying to pull repository docker.io/library/redis ...latest: Pulling from docker.io/library/redis45b42c59be33: Already exists  #分层下载5ce2e937bf62: Pull complete2a031498ff58: Pull complete2f3d47096658: Pull complete04f5cb8ac4c0: Pull complete9ed141398658: Pull completeDigest: sha256:9a1a2bb9fd2bd8b2c15aaca44d8e6ba8bc448df9b7b8d7d24ba4b472e0da1b8aStatus: Downloaded newer image for docker.io/redis:latest #镜像的真实地址

docker rmi #删除镜像

docker rmi -f 镜像id #删除指定的镜像

docker rmi -f 镜像id 镜像id #删除指定的镜像

docker rmi -f $(docker images -aq) #删除全部的镜像

3、容器命令

备注:我们有了镜像才能创建容器

docker run 镜像id #新建容器并启动

docker ps #列出所有运行的容器

docker rm 容器id #删除指定容器

docker start 容器id #启动容器

docker restart容器id #重启容器

docker stop 容器id #停止当前正在运行的容器

docker kill 容器id #强制停止当前容器

#查看容器所有命令[root@ecs-x-large-2-linux-20200305213344 ~]# docker containerUsage:docker container COMMANDManage containersOptions:      --helpPrint usageCommands:  attach      Attach to a running container  commit      Create a new image from a container's changes

  cp          Copy files/folders between a container and the local filesystem

  create      Create a new container

  diff        Inspect changes on a container's filesystemexecRun acommandina running containerexportExport a container's filesystem as a tar archive

  inspect    Display detailed information on one or more containers

  kill        Kill one or more running containers

  logs        Fetch the logs of a container

  ls          List containers

  pause      Pause all processes within one or more containers

  port        List port mappings or a specific mapping for the container

  prune      Remove all stopped containers

  rename      Rename a container

  restart    Restart one or more containers

  rm          Remove one or more containers

  run        Run a command in a new container

  start      Start one or more stopped containers

  stats      Display a live stream of container(s) resource usage statistics

  stop        Stop one or more running containers

  top        Display the running processes of a container

  unpause    Unpause all processes within one or more containers

  update      Update configuration of one or more containers

  wait        Block until one or more containers stop, then print their exit codes

新建容器并启动

docker runb [可选参数] image#参数说明--name =”name“#容器名字,用于区分不同的的容器-d#后台运行-it#使用交互模式运行,进入容器查看相关内容-p#指定容器端口-p 主机端口:容器端口#测试-it[root@ecs-x-large-2-linux-20200305213344 ~]# docker run -it 300e315adb2f /bin/bash[root@9f5b41ce646c /]# lsbin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var[root@9f5b41ce646c /]# exit  #退出容器exit#测试 --name -p -d[root@ecs-x-large-2-linux-20200305213344 ~]# docker run --name nginx01 -d -p 3334:80 35c43ace9216cacf7a960d29dc24755f6b9896aaa85f2e9f902ff7f620470c907acf5e17bd7a[root@ecs-x-large-2-linux-20200305213344 ~]# curl localhost:3334#成功访问3334端口

Welcome to nginx!

If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.

For online documentation and support please refer tonginx.org.

Commercial support is available atnginx.com.

Thank youforusing nginx.

#测试是否后台运行[root@ecs-x-large-2-linux-20200305213344 ~]# docker psCONTAINER ID        IMAGE              COMMAND                  CREATED              STATUS              PORTS                  NAMEScacf7a960d29        35c43ace9216"/docker-entrypoin..."About a minute ago  Up About a minute  0.0.0.0:3334->80/tcp  nginx01

列出所有运行的容器

#docker ps #列出当前正在运行的容器Options:  -a, --all            Show all containers (default shows just running)#列出目前所有容器-q, --quiet          Only display numeric IDs#只显示容器id[root@ecs-x-large-2-linux-20200305213344 ~]# docker ps -aq    #显示所有容器id9f5b41ce646c7aab85f14183

退出容器

exit#退出容器

删除容器

docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -rf docker

rm -f $(docker ps -aq) #删除指定的容器

docker ps -a -q|xargs docker rm #删除所有的容器

启动和停止容器

docker start 容器id#启动容器 docker restart 容器id#重启容器 docker stop 容器id#停止当前正在运行的容器 dockerkill容器id#强制停止当前容器

查看日志

[root@ecs-x-large-2-linux-20200305213344 ~]# docker logs --helpOptions:      --details        Show extra details provided to logs  -f, --follow        Follow log output      --help          Print usage      --since string  Show logs since timestamp      --tail string    Number of lines to show from the end of the logs (default "all")  -t, --timestamps    Show timestamps

#显示日志-tf #显示日志信息(一直更新)--tail number #需要显示日志条数docker logs -t --tail n 容器id #查看n行日志 docker logs -ft 容器id #跟着日志

查看容器中的进程信息

#docker top 容器id [root@ecs-x-large-2-linux-20200305213344 ~]# docker top cacf7a960d29UID                PID                PPID                C                  STIME              TTY                TIME                CMDroot                27859              27841              0                  16:26              ?                  00:00:00            nginx: master process nginx -g daemon off;101                27908              27859              0                  16:26              ?                  00:00:00            nginx: worker process

查看容器元数据

#docker inspect 容器id[root@ecs-x-large-2-linux-20200305213344 ~]# docker inspect cacf7a960d29[    {"Id":"cacf7a960d29dc24755f6b9896aaa85f2e9f902ff7f620470c907acf5e17bd7a","Created":"2021-03-06T08:26:19.015315592Z","Path":"/docker-entrypoint.sh","Args": ["nginx","-g","daemon off;"],"State": {"Status":"running","Running":true,"Paused":false,"Restarting":false,"OOMKilled":false,"Dead":false,"Pid": 27859,"ExitCode": 0,"Error":"","StartedAt":"2021-03-06T08:26:19.32665951Z","FinishedAt":"0001-01-01T00:00:00Z"},"Image":"sha256:35c43ace9216212c0f0e546a65eec93fa9fc8e96b25880ee222b7ed2ca1d2151","ResolvConfPath":"/var/lib/docker/containers/cacf7a960d29dc24755f6b9896aaa85f2e9f902ff7f620470c907acf5e17bd7a/resolv.conf","HostnamePath":"/var/lib/docker/containers/cacf7a960d29dc24755f6b9896aaa85f2e9f902ff7f620470c907acf5e17bd7a/hostname","HostsPath":"/var/lib/docker/containers/cacf7a960d29dc24755f6b9896aaa85f2e9f902ff7f620470c907acf5e17bd7a/hosts","LogPath":"","Name":"/nginx01","RestartCount": 0,"Driver":"overlay2","MountLabel":"","ProcessLabel":"","AppArmorProfile":"","ExecIDs": null,"HostConfig": {

进入当前正在运行的容器

#我们通常容器都是在后台运行方式,如果需要修改一些配置或其他操作,那么我们需要进入运行的容器#方式一:docker exec - it容器id /bin/bash[root@ecs-x-large-2-linux-20200305213344 ~]# docker exec -it cacf7a960d29 /bin/bashroot@cacf7a960d29:/# lsbin  dev  docker-entrypoint.sh  home  lib64  mnt  proc  run  srv  tmp  varboot  docker-entrypoint.d  etc lib  media  opt  root  sbin  sys  usr#方式二:docker attach 容器id[root@ecs-x-large-2-linux-20200305213344 ~]# docker attach cacf7a960d29正在执行的代码******[root@ecs-x-large-2-linux-20200305213344 ~]#  #ctrl+c 退出#区别#docker exec #进入当前容器后开启一个新的终端,可以在里面操作。(常用)#docker attach # 进入容器正在执行的终端

从容器内拷贝到主机

#docker cp 容器id:容器内路径 主机目的路径#测试#进入容器内部[root@ecs-x-large-2-linux-20200305213344 ~]# docker exec -it cacf7a960d29 /bin/bashroot@cacf7a960d29:/# lsbin  dev  docker-entrypoint.sh  home  lib64  mnt  proc  run  srv  tmp  varboot  docker-entrypoint.d  etc lib  media  opt  root  sbin  sys  usr#新建一个文件root@cacf7a960d29:/# echo "hello" >test.javaroot@cacf7a960d29:/# lsbin  dev  docker-entrypoint.sh  home  lib64  mnt  proc  run  srv  test.java  usrboot  docker-entrypoint.d  etc lib  media  opt  root  sbin  sys  tmp        var#退出容器exit#拷贝docker cp cacf7a960d29:test.java /home/#验证是否copy到主机[root@ecs-x-large-2-linux-20200305213344 ~]# ls /home/test.java

commit镜像

命令:docker commit -m=“描述信息” -a=“作者” 容器id 目标镜像名:[tag]实战测试:#1、启动tomcat默认镜像文件[root@ecs-x-large-2-linux-20200305213344 ~]# docker run -d -p 3344:8080 bf4709e77b187984fe235242c4164dcede5053663a44db96ae89e0035a13e351faab03634d17#2、查看容器的webapp文件[root@ecs-x-large-2-linux-20200305213344 ~]# docker exec -it 7984fe235242c4164dcede5053663a44db96ae89e0035a13e351faab03634d17 /bin/bashroot@7984fe235242:/usr/local/tomcat# lsBUILDING.txt LICENSE  README.md RUNNING.txt  conf  logs    temp    webapps.distCONTRIBUTING.md  NOTICE  RELEASE-NOTES  bin      lib  native-jni-lib  webapps  workroot@7984fe235242:/usr/local/tomcat# cd webappsroot@7984fe235242:/usr/local/tomcat/webapps# ls#3、拷贝webapps.dist下文件到webapps下root@7984fe235242:/usr/local/tomcat# cp -r webapps.dist/* webapps/root@7984fe235242:/usr/local/tomcat# ls webappsROOT  docs  examples  host-manager  managerroot@7984fe235242:/usr/local/tomcat##4、将该容器提交为一个新的镜像文件[root@ecs-x-large-2-linux-20200305213344 ~]# docker commit -m="梵响测试容器提交为一个新的镜像" -a="fanxiang" 7984fe235242c4164dcede5053 tomcat01:1.0sha256:3622a772f2315dc2d22140698a45cc8c30a9c8b5e7fb961937429307669ced92[root@ecs-x-large-2-linux-20200305213344 ~]# docker imagesREPOSITORY              TAG                IMAGE ID            CREATED            SIZEtomcat01                1.0                3622a772f231        12 seconds ago      672 MBdocker.io/hello-world  latest              d1165f221234        2 days ago          13.3 kBdocker.io/redis        5.0                d00afcde654e        5 days ago          98.4 MBdocker.io/redis        latest              f877e80bb9ef        5 days ago          105 MBdocker.io/nginx        latest              35c43ace9216        2 weeks ago        133 MBdocker.io/tomcat        latest              bf4709e77b18        3 weeks ago        667 MBdocker.io/centos        latest              300e315adb2f        3 months ago        209 MB

save镜像

[root@ecs-x-large-2-linux-20200305213344 ~]#docker save --helpUsage:docker save [OPTIONS] IMAGE [IMAGE...]Save one or more images to a tar archive (streamed to STDOUT by default)Options:      --helpPrint usage  -o, --output string  Write to a file, instead of STDOUT  实战:[root@ecs-x-large-2-linux-20200305213344 ~]# docker save -o /home/redis01.tar docker.io/redis:5.0[root@ecs-x-large-2-linux-20200305213344 ~]# ls /homeredis01.tar  test.java  tomcat02.tar

load镜像

[root@ecs-x-large-2-linux-20200305213344 ~]# docker load --helpUsage:docker load [OPTIONS]Load an image from a tar archive or STDINOptions:      --helpPrint usage  -i, --input string  Read from tar archive file, instead of STDIN  -q, --quiet          Suppress the load output实战:[root@ecs-x-large-2-linux-20200305213344 ~]# docker load -i /home/redis01.tar01b7eeecc774: Loading layer [==================================================>]  24.7 MB/24.7 MBf2df42e57d5e: Loading layer [==================================================>] 1.536 kB/1.536 kBb537eb7339bc: Loading layer [==================================================>] 3.584 kB/3.584 kBLoaded image: docker.io/redis:5.0[root@ecs-x-large-2-linux-20200305213344 ~]# docker imagesREPOSITORY              TAG                IMAGE ID            CREATED            SIZEdocker.io/hello-world  latest              d1165f221234        2 days ago          13.3 kBdocker.io/redis        5.0                d00afcde654e        5 days ago          98.4 MBdocker.io/redis        latest              f877e80bb9ef        5 days ago          105 MBdocker.io/nginx        latest              35c43ace9216        2 weeks ago        133 MBdocker.io/tomcat        latest              bf4709e77b18        3 weeks ago        667 MBdocker.io/centos        latest              300e315adb2f        3 months ago        209 MB

4、命令总结

![image-20210306164709448](/Users/zhaoyang/Library/Application Support/typora-user-images/image-20210306164709448.png)

四、docker镜像

1、镜像是什么

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含了运行某个软件所需的所有内容,包括代码、运行时库、环境变量和配置问价等。

将所有的应用和环境直接打包成镜像,就可以直接运行。

2、镜像分层原理

docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。平时我们安装进虚拟机的CentOS都是好几个G,为什么Docker这里才200M?

对于个精简的OS,rootfs可以很小,只需要包合最基本的命令,工具和程序库就可以了,因为底层直接用 Host的kernel,自己只需要提供rootfs就可以了。由此可见对于不同的Linux发行版, boots基本是一致 的, rootfs会有差別,因此不同的发行版可以公用bootfs. 虚拟机是分钟级别,容器是秒级!

3、分层理解

[root@ecs-x-large-2-linux-20200305213344 ~]# docker pull redis:5.0

Trying to pull repository docker.io/library/redis ...

5.0: Pulling from docker.io/library/redis

45b42c59be33: Already exists

5ce2e937bf62: Already exists

2a031498ff58: Already exists

ec50b60c87ea: Pull complete

2bf0c804a5c0: Pull complete

6a3615492950: Pull complete

Digest: sha256:6ba62effb31d8d74e6e2dec4b7ef9c8985e7fcc85c4f179e13f622f5785a4135

Status: Downloaded newer image for docker.io/redis:5.0

docker镜像为什么要采用这种分层的结构呢?

最大的好处,我觉得莫过于资源共享了!比如有多个镜像都从相同的Base镜像构建而来,那么宿主机

只需在磁盘上保留一份base镜像,同时内存中也只需要加载一份base镜像,这样就可以为所有的容器

服务了,而且镜像的每一层都可以被共享。

总结:

所有的 Docker镜像都起始于一个基础镜像层,当进行修改或培加新的内容时,就会在当前镜像层之

上,创建新的镜像层。Docker 镜像都是只读的,当容器启动时,一个新的可写层加载到镜像的顶部!这一层就是我们通常说的容器层,容器之下的都叫镜像层!

查看docker镜像分层信息

命令:docker inspect 镜像id或镜像名称

[root@ecs-x-large-2-linux-20200305213344 ~]# docker inspect d00afcde654e[    {"Id":"sha256:d00afcde654e3125384d52fb872c88986d2046fa598a12abcee52ff0d98e7562","RepoTags": ["docker.io/redis:5.0"],"RepoDigests": ["docker.io/redis@sha256:6ba62effb31d8d74e6e2dec4b7ef9c8985e7fcc85c4f179e13f622f5785a4135"],"Parent":"","Comment":"","Created":"2021-03-02T23:29:46.396151327Z","Container":"6a7820655f2592fdc2b254036170652520beb98f79a41e6aedc17987ccec3829","ContainerConfig": {"Hostname":"6a7820655f25","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"ExposedPorts": {"6379/tcp": {}            },"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","GOSU_VERSION=1.12","REDIS_VERSION=5.0.12","REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-5.0.12.tar.gz","REDIS_DOWNLOAD_SHA=7040eba5910f7c3d38f05ea5a1d88b480488215bdbd2e10ec70d18380108e31e"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"redis-server\"]"],"Image":"sha256:f43399b52be67a391b4bf53e210c55002a2bce5e4fa5f1021d4dc9725ec7f537","Volumes": {"/data": {}            },"WorkingDir":"/data","Entrypoint": ["docker-entrypoint.sh"],"OnBuild": null,"Labels": {}        },"DockerVersion":"19.03.12","Author":"","Config": {"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"ExposedPorts": {"6379/tcp": {}            },"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","GOSU_VERSION=1.12","REDIS_VERSION=5.0.12","REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-5.0.12.tar.gz","REDIS_DOWNLOAD_SHA=7040eba5910f7c3d38f05ea5a1d88b480488215bdbd2e10ec70d18380108e31e"],"Cmd": ["redis-server"],"Image":"sha256:f43399b52be67a391b4bf53e210c55002a2bce5e4fa5f1021d4dc9725ec7f537","Volumes": {"/data": {}            },"WorkingDir":"/data","Entrypoint": ["docker-entrypoint.sh"],"OnBuild": null,"Labels": null        },"Architecture":"amd64","Os":"linux","Size": 98358570,"VirtualSize": 98358570,"GraphDriver": {"Name":"overlay2","Data": {"LowerDir":"/var/lib/docker/overlay2/343be33bc297acdf8bc2b57b335c025ea76b8d1263548ba269c0aefb81aaf28d/diff:/var/lib/docker/overlay2/3302ce8415cd3a8a1e1e9753eebbb38df5b15cc02fef109e30be41f4310ee810/diff:/var/lib/docker/overlay2/44c8b45db6fd63960703e604f43a4acc5633f09a3a91a8d7263ad2f9bfd0d038/diff:/var/lib/docker/overlay2/5eb368e142c6079aa1f507149216281ca79b5df08ba19bad51390d74dfbf3c1f/diff:/var/lib/docker/overlay2/219cf0492ba08d03dc4f2a5649ec1124fff82ebe22c6f9a0a26ccf303be0e0d1/diff","MergedDir":"/var/lib/docker/overlay2/d38f31592715a55459f4556623786c5878014bf8ffdcc1e88506069e32ba75dc/merged","UpperDir":"/var/lib/docker/overlay2/d38f31592715a55459f4556623786c5878014bf8ffdcc1e88506069e32ba75dc/diff","WorkDir":"/var/lib/docker/overlay2/d38f31592715a55459f4556623786c5878014bf8ffdcc1e88506069e32ba75dc/work"}        },"RootFS": {"Type":"layers","Layers": [#镜像分层信息"sha256:9eb82f04c782ef3f5ca25911e60d75e441ce0fe82e49f0dbf02c81a3161d1300","sha256:f973e3e0e07c6e9f9418a6dd0c453cd70c7fb87a0826172275883ab4bdb61bf4","sha256:c16b4f3a3f99ebbcd59795b54faf4cdf2e00ee09b85124fda5d0746d64237ca6","sha256:01b7eeecc774b7669892f89fc8b84eea781263448978a411f0f429b867410fc5","sha256:f2df42e57d5eef289656ef8aad072d2828a61e93833e2928a789a88bc2bc1cbc","sha256:b537eb7339bcbff729ebdc63a0f910b39ae3d5540663a74f55081b62e92f66e3"]        }    }]

亚马逊测评 www.yisuping.cn

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 197,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,846评论 2 374
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,146评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,789评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,656评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,467评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,870评论 3 389
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,500评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,790评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,828评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,628评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,449评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,881评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,077评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,376评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,879评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,089评论 2 338

推荐阅读更多精彩内容