docker容器

docker快速入門01
docker快速入門02
KVM和Docker的對(duì)比

docker常用命令

systemctl start docker    ---啟動(dòng)容器服務(wù)
systemctl enable docker   ---容器服務(wù)開機(jī)自啟
docker version            ---查看docker的版本
ctrl pq                   ---靜悄悄的離開容器(容器不停)
docker run -d -p 80:80 nginx    ---啟動(dòng)帶nginx鏡像的容器
run                       ---創(chuàng)建并運(yùn)行一個(gè)容器
-d                        ---放在后臺(tái)
-p                        ---指定端口映射(訪問外網(wǎng))
-P                        ---隨機(jī)分配端口
nginx                     ---docker鏡像的名字
docker search             ---搜索鏡像
docker pull               ---從配置的鏡像網(wǎng)站拉取鏡像
docker image ls           ---查看擁有的鏡像
docker images             ---查看擁有的鏡像
docker image save -o docker_busybox1.29.tar.gz busybox:1.29   ---把鏡像導(dǎo)到當(dāng)前目錄下并取名加版本號(hào)加文件后綴
docker image rm busybox:1.29 ---刪除鏡像(加具體版本否則刪最新)
docker image load -i docker_busybox1.29.tar.gz  ---導(dǎo)入鏡像
docker image build        ---制作鏡像
docker image history      ---查看鏡像制作的歷史
docker run -it --name  centos:6.9 /bin/bash   ---運(yùn)行并進(jìn)入一個(gè)容器并指定名稱分配容器的初始命令
-it                       ---分配交互式終端
--name                    ---指定容器的名字
/bin/bash                 ---覆蓋容器的初始命令
docker container ls -a    ---查看所有容器的狀態(tài)(不加-a查看運(yùn)行中的容器)
docker start 容器名字或ID ---啟動(dòng)容器
docker stop 容器名字或ID  ---停止容器
docker kill 容器名字或ID  ---殺掉容器
docker container ls -a -l ---只顯示最近的一個(gè)容器
docker container rm       ---刪除一個(gè)容器
docker stop $(docker ps -a -q)  ---批量刪除未運(yùn)行的容器
docker ps -a              ---顯示所有容器(包括未運(yùn)行的)
docker ps -a -q           ---只顯示所有容器的ID
docker exec -it 容器名字或ID /bin/bash  ---進(jìn)入一個(gè)容器
docker commit 容器ID 新鏡像名稱    ---手動(dòng)制作容器
docker image build -t centos6.9_nginx:v2 /opt/dockerfile/nginx   ---自動(dòng)構(gòu)建鏡像命令(在當(dāng)前目錄下可用 . 表示)
-t           ---給鏡像創(chuàng)建名稱
docker run -it --workdir /tmp centos6.9   ---指定容器工作目錄
docker inspect             ---查看(容器师脂、鏡像乡数、卷)屬性

什么是容器晚唇?

容器就是在隔離的環(huán)境運(yùn)行的一個(gè)進(jìn)程,如果進(jìn)程停止杨何,容器就會(huì)銷毀酱塔。隔離的環(huán)境擁有自己的系統(tǒng)文件,ip地址危虱,主機(jī)名等

kvm虛擬機(jī)羊娃,linux,系統(tǒng)文件

image

程序:代碼埃跷,命令
進(jìn)程:正在運(yùn)行的程序

容器和虛擬化的區(qū)別

linux容器技術(shù)蕊玷,容器虛擬化和kvm虛擬化的區(qū)別

kvm虛擬化: 需要硬件的支持,需要模擬硬件弥雹,可以運(yùn)行不同的操作系統(tǒng)垃帅,啟動(dòng)時(shí)間分鐘級(jí)(開機(jī)啟動(dòng)流程)

#linux開機(jī)啟動(dòng)流程:
bios開機(jī)硬件自檢
根據(jù)bios設(shè)置的優(yōu)先啟動(dòng)項(xiàng)boot  網(wǎng)卡 硬盤 u盤 光驅(qū)
讀取mbr引導(dǎo) 2T  UEFI(gpt分區(qū))    mbr硬盤分區(qū)信息,內(nèi)核加載路徑, 
加載內(nèi)核
啟動(dòng)第一個(gè)進(jìn)程/sbin/init  systemd
系統(tǒng)初始化完成
運(yùn)行服務(wù)(nginx剪勿,httpd贸诚,mysql)

#容器啟動(dòng)流程:
共用宿主機(jī)內(nèi)核:
第一個(gè)進(jìn)程直接啟動(dòng)服務(wù)(nginx,httpd厕吉,mysql)

容器和虛擬機(jī)的區(qū)別:
容器:共用宿主機(jī)內(nèi)核酱固,輕量級(jí),損耗少头朱,啟動(dòng)快运悲,性能高,只能運(yùn)行在linux系統(tǒng)上
虛擬機(jī):需要硬件的支持项钮,需要模擬硬件班眯,需要走開機(jī)啟動(dòng)流程希停,可以運(yùn)行不同的操作系統(tǒng)

容器是linux內(nèi)核獨(dú)有的技術(shù)

性能好,速度快鳖敷,損耗少 脖苏,秒級(jí)啟動(dòng),只能在linux上運(yùn)行

容器技術(shù)的發(fā)展過程:

chroot技術(shù)
參考資料:https://www.ibm.com/developerworks/cn/linux/l-cn-chroot/
練習(xí)1:使用chroot監(jiān)獄限制SSH用戶訪問指定目錄和使用指定命令(cp,ls)
https://linux.cn/article-8313-1.html
ls

docker安裝

Docker提供了兩個(gè)版本:社區(qū)版(CE)和企業(yè)版(EE)定踱。
操作系統(tǒng)要求
以Centos7為例,且Docker要求操作系統(tǒng)必須為64位恃鞋,且centos內(nèi)核版本為3.1及以上崖媚。
查看系統(tǒng)內(nèi)核版本信息:
uname -r
?
0 準(zhǔn)備
卸載舊版本:
yum remove docker docker-common docker-selinux docker-engine
?yum remove docker-ce
?
卸載后將保留/var/lib/docker的內(nèi)容(鏡像、容器恤浪、存儲(chǔ)卷和網(wǎng)絡(luò)等)畅哑。
rm -rf /var/lib/docker
?
安裝依賴軟件包
yum install -y yum-utils device-mapper-persistent-data lvm2
?
# 安裝前可查看device-mapper-persistent-data 和 lvm2 是否已經(jīng)安裝
rpm -qa | grep device-mapper-persistent-data
rpm -qa | grep lvm2
?
?
安裝Base源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
?
下載docker源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
?
把docker官網(wǎng)地址改為清華源
sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
?
更新yum軟件包索引
yum makecache fast
?
二、安裝
安裝最新版本docker-ce
yum install docker-ce -y
?
#安裝指定版本docker-ce可使用以下命令查看
yum list docker-ce.x86_64  --showduplicates | sort -r
?
# 安裝完成之后可以使用命令查看
docker version

在docker上裝一個(gè)nginx

軟件包下載鏈接: 提取碼: mnsw

wget http://192.168.37.202/linux59/docker_nginx1.15.tar.gz
ls
docker load -i docker_nginx1.15.tar.gz 
docker run -d -p 80:80 nginx

image
docker run -d -p 80:80 nginx
run(創(chuàng)建并運(yùn)行一個(gè)容器)
-d 放在后臺(tái)
-p 端口映射
nginx docker鏡像的名字

docker的鏡像管理

配置鏡像加速

這里使用阿里云的免費(fèi)鏡像加速服務(wù)水由,也可以使用其他如時(shí)速云荠呐、網(wǎng)易云等。
注冊(cè)登錄開通阿里云容器鏡像服務(wù)
查看控制臺(tái)砂客,找到鏡像加速器并復(fù)制自己的加速器地址
加入以下配置
# 填寫自己的加速器地址
{
    "registry-mirrors": ["https://6kx4zyno.mirror.aliyuncs.com"]
}
?
docker倉(cāng)庫(kù)加速如下:
找到/etc/docker目錄下的daemon.json文件泥张,沒有則創(chuàng)建/etc/docker目錄后直接vi daemon.json編輯
vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}   
?或者阿里云docker加速
{ 
"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
 }
經(jīng)過多次測(cè)試,發(fā)現(xiàn)還是阿里云的好用鞠值,所以強(qiáng)烈推薦這款


通知systemd重載此配置文件
systemctl daemon-reload
?
重啟docker服務(wù)
systemctl restart docker
搜索鏡像:
docker search
[root@docker01 ~]# docker search  centos
[root@docker01 ~]# docker search  nginx

官方docker鏡像下載地址

hub.docker.com

image.png
image

拉取鏡像

獲取鏡像
?   docker pull(push)

[root@docker01 ~]# docker pull busybox
[root@docker01 ~]# docker pull busybox:1.29

查看鏡像

[root@docker01 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              19485c79a9bb        9 hours ago         1.22MB
busybox             1.29                758ec7f3a1ee        8 months ago        1.15MB
nginx               latest              be1f31be9a87        11 months ago       109MB

刪除鏡像

[root@docker01 ~]# docker image rm busybox:1.29 
[root@docker01 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              19485c79a9bb        9 hours ago         1.22MB
nginx               latest              be1f31be9a87        11 months ago       109MB

導(dǎo)出鏡像

[root@docker01 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              19485c79a9bb        9 hours ago         1.22MB
busybox             1.29                758ec7f3a1ee        8 months ago        1.15MB
nginx               latest              be1f31be9a87        11 months ago       109MB

[root@docker01 ~]# docker image save -o docker_busybox1.29.tar.gz busybox:1.29 

[root@docker01 ~]# ll
total 205572
-rw-------. 1 root root      1392 Apr 19 12:22 anaconda-ks.cfg
-rw-------  1 root root   1378816 Sep  5 12:08 docker_busybox1.29.tar.gz

導(dǎo)入鏡像

[root@docker01 ~]# docker image  load -i docker_busybox1.29.tar.gz 
23bc2b70b201: Loading layer   1.37MB/1.37MB
Loaded image: busybox:1.29

[root@docker01 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              19485c79a9bb        9 hours ago         1.22MB
busybox             1.29                758ec7f3a1ee        8 months ago        1.15MB
nginx               latest              be1f31be9a87        11 months ago       109MB

導(dǎo)入需要用到的鏡像

導(dǎo)入鏡像的下載鏈接: 提取碼: db3x

[root@docker01 ~]# ll
-rw-r--r--  1 root root   5853184 Sep  5 12:15 docker_alpine.tar.gz
-rw-r--r--  1 root root   1424896 Sep  5 12:15 docker_busybox.tar.gz
-rw-r--r--  1 root root 202872320 Sep  5 12:16 docker_centos6.9.tar.gz
-rw-r--r--  1 root root  74210304 Sep  5 12:15 docker_k8s_dns.tar.gz

[root@docker01 ~]# for i in `find /root/* -type f -name "docker*"`;do docker image load -i $i;done

[root@docker01 ~]# docker image ls

image.png

docker的容器管理

*** docker run -d -p 80:80 nginx:latest  
run(創(chuàng)建并運(yùn)行一個(gè)容器)
-d 放在后臺(tái)
-p 端口映射
-v  源地址(宿主機(jī)):目標(biāo)地址(容器)
?
nginx docker鏡像的名字
?
docker run -it --name centos6 centos:6.9 /bin/bash
-it   分配交互式的終端interactive tty
--name 指定容器的名字
/bin/sh覆蓋容器的初始命令
?
運(yùn)行容器***
    docker run image_name   
?
    docker run ==== docker create  + docker start
啟動(dòng)容器
    docker start
停止容器
    docker stop CONTAINER_ID
殺死容器
    docker kill container_name
查看容器列表
    docker ps(-a -l  -q <--no-trunc 全部顯示>)

?
進(jìn)入正在運(yùn)行的容器(目的媚创,調(diào)試,排錯(cuò))
*** docker exec  (會(huì)分配一個(gè)新的終端tty)
        docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
?
    docker exec -it  容器id或容器名字 /bin/bash(/bin/sh)   
    docker attach(使用同一個(gè)終端)  偷偷離開的快捷鍵ctrl+p,ctrl+q
        docker attach [OPTIONS] CONTAINER
    nsenter(安裝yum install -y util-linux 棄用)
?
刪除容器
    docker container rm <centos6>
批量刪除容器
    docker rm -f `docker ps -a -q`

總結(jié):docker容器內(nèi)的第一個(gè)進(jìn)程(初始命令)必須一直處于前臺(tái)運(yùn)行的狀態(tài)(必須夯淄瘛)钞钙,否則這個(gè)容器,就會(huì)處于退出狀態(tài)声离!

業(yè)務(wù)在容器中運(yùn)行:初始命令,夯住芒炼,啟動(dòng)服務(wù)

image
image.png

docker容器的網(wǎng)絡(luò)訪問(端口映射)

docker0:172.17.0.1   jumpserver:172.17.0.2   nginx:172.17.0.3

指定映射(docker 會(huì)自動(dòng)添加一條iptables規(guī)則來實(shí)現(xiàn)端口映射)
?   -p hostPort:containerPort
?   -p ip:hostPort:containerPort  多個(gè)容器都想使用8080端口
?   -p ip::containerPort(隨機(jī)端口)
?   -p hostPort:containerPort/udp
?   -p  10.0.0.100::53/udp   使用宿主機(jī)的10.0.0.100這個(gè)ip地址的隨機(jī)端口的udp協(xié)議映射容器的udp53端口
?   -p 81:80 –p 443:443 可以指定多個(gè)-p

隨機(jī)映射
?   docker run -P (隨機(jī)端口)

通過iptables來實(shí)現(xiàn)的端口映射

docker的數(shù)據(jù)卷管理

/usr/share/nginx/html

-v  /opt/xiaoniao:/usr/share/nginx/html

持久化
數(shù)據(jù)卷(文件或目錄)
?   -v 卷名:/data (第一次卷是空,會(huì)容器的數(shù)據(jù)復(fù)制到卷中,如果卷里面有數(shù)據(jù),把卷數(shù)據(jù)的掛載到容器中)
?   -v src(宿主機(jī)的目錄):dst(容器的目錄)
數(shù)據(jù)卷容器
?   --volumes-from(跟某一個(gè)已經(jīng)存在的容器掛載相同的卷)
?

小鳥飛飛飛_基礎(chǔ)版練習(xí)

小游戲軟件包下載鏈接 提取碼: jyqy

第一種方法:

執(zhí)行下面操作:小游戲的軟件包下載后上傳后將代碼放到容器中

docker run -d -p 80:80 nginx:latest 
docker exec -it <ID_當(dāng)前一臺(tái)容器可tab鍵補(bǔ)全名字> /bin/bash
cd /opt/
mkdir xiaoniao
cd xiaoniao/
wget http://192.168.37.202/linux59/xiaoniaofeifei.zip
unzip xiaoniaofeifei.zip 
ls
cd ..
docker container cp xiaoniao <容器名字或_ID>:/usr/share/nginx/html

進(jìn)入到nginx容器中查看站點(diǎn)目錄:
docker exec -it <容器名字或_ID> /bin/bash
cd /usr/share/nginx/html/
ls xiaoniao/

image

第二種方法:

批量刪除掉容器,用容器的數(shù)據(jù)復(fù)制方法把代碼放到容器中:
最后接的是nginx的鏡像术徊,需提前上傳好

docker container rm  -f  `docker ps -a -q`
docker run -d -p 80:80 -v /opt/xiaoniao:/usr/share/nginx/html nginx:latest

image.png

第三種方法

刪除容器本刽,沒有根目錄開始的就代表的是創(chuàng)建一個(gè)卷

[root@docker01 opt]# docker container rm -f `docker ps -a -q`
[root@docker01 opt]# docker run -d -p 80:80 -v xiaoniao:/usr/share/nginx/html nginx:latest
[root@docker01 opt]# docker volume ls   #卷的資源查看方式
DRIVER              VOLUME NAME
local               xiaoniao

查看卷的詳細(xì)信息
[root@docker01 opt]# docker volume inspect xiaoniao 
[
    {
        "CreatedAt": "2019-09-05T20:11:26+08:00",   創(chuàng)建時(shí)間
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/xiaoniao/_data", 掛載點(diǎn)
        "Name": "xiaoniao",
        "Options": null,
        "Scope": "local"
    }
]
[root@docker01 opt]# cd /var/lib/docker/volumes/xiaoniao/_data
[root@docker01 _data]# ls
50x.html  index.html
[root@docker01 _data]# echo '123456ABCDEFG' >index.html 

image.png
如果卷里面有數(shù)據(jù),把卷數(shù)據(jù)的掛載到容器中
再次清除容器,并創(chuàng)建新容器

[root@docker01 _data]# ls
50x.html  index.html
[root@docker01 _data]# docker container rm -f `docker ps -a -q`

內(nèi)容沒有改變弧关,還是之前的數(shù)據(jù)

修改標(biāo)題名字

image
image
image

小鳥飛飛飛_加強(qiáng)版練習(xí)

基于nginx啟動(dòng)一個(gè)容器盅安,監(jiān)聽80和81,訪問80世囊,出現(xiàn)nginx默認(rèn)歡迎首頁(yè)别瞭,訪問81,出現(xiàn)小鳥株憾。
-p 80:80 -p 81:81 -v xxx:xxx -v xxx:xxxx
基于nginx多端口的多站點(diǎn)蝙寨。

第一種方法:宿主機(jī)上修改

#宿主機(jī)上添加一個(gè)nginx配置文件xiaoniao.conf晒衩,端口為81,站點(diǎn)目錄為/opt
#記得打開nginx配置文件中的 include調(diào)用
#檢查語(yǔ)法后重啟nginx,查看80和81端口是否啟動(dòng)

[root@docker01 conf.d]# cat /etc/nginx/conf.d/xiaoniao.conf
server {
        listen       81;
        server_name  _;
        root         /opt;
        index index.html index.htm;
}
[root@docker01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@docker01 conf.d]# systemctl restart nginx
[root@docker01 conf.d]# netstat -lntup|grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      19770/nginx: master 
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      19770/nginx: master 

#刪除舊容器墙歪,殺死當(dāng)前nginx進(jìn)程
#創(chuàng)建新容器听系,將小鳥飛飛飛的nginx配置文件復(fù)制到容器的nginx配置文件下

[root@docker01 opt]# pkill -9 nginx 
[root@docker01 opt]# docker container rm -f `docker ps -a -q`   
[root@docker01 opt]# docker run -d -p 80:80 -p 81:81 -v /opt/xiaoniao.conf:/etc/nginx/conf.d/xiaoniao.conf -v /opt/xiaoniao:/opt nginx:latest

10.0.0.11:80

image

10.0.0.11:81

image.png

第二種方法:進(jìn)入容器修改

#創(chuàng)建新容器,把代碼復(fù)制到容器中后 進(jìn)入容器

[root@docker01 opt]# docker container rm -f `docker ps -a -q`
[root@docker01 opt]# docker run -d -p 80:80 -p 81:81 -v /opt/xiaoniao:/opt nginx:latest
[root@docker01 opt]# docker exec  -it silly_napier /bin/bash

#在容器中生成xiaoniao.conf的nginx配置文件
echo 'server {
        listen       81;
        server_name  _;
        root         /opt;
        index index.html index.htm;
}' >/etc/nginx/conf.d/xiaoniao.conf

root@cde61c762776:/etc/nginx/conf.d# ls
default.conf  xiaoniao.conf

#退出容器在宿主機(jī)上重啟nginx容器 瀏覽器訪問查看是否成功
[root@docker01 opt]# docker restart silly_napier
silly_napier

image.png
image.png

第三種方法:在容器中使用apt-get工具下載vim工具

Debian系統(tǒng)優(yōu)化源的鏈接

#刪除舊容器虹菲,創(chuàng)建新的nginx容器,把代碼復(fù)制到容器中靠胜,并進(jìn)入容器

[root@docker01 opt]# docker container rm -f `docker ps -a -q`
[root@docker01 opt]# docker run -d -p 80:80 -p 81:81 -v /opt/xiaoniao:/opt nginx:latest
[root@docker01 opt]# docker exec -it magical_engelbart /bin/bash
root@70e72068d2d0:/# 

#查看容器的版本—Debian,和當(dāng)前的源的命令

root@70e72068d2d0:/# cat /etc/os-release 
root@70e72068d2d0:/# cat /etc/apt/sources.list

#執(zhí)行下面的命令毕源,優(yōu)化Debian的源
root@70e72068d2d0:/# echo 'deb http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib' >/etc/apt/sources.list

#更新緩存
root@70e72068d2d0:/# apt-get update

#使用apt-get下載 vim
root@70e72068d2d0:/# apt-get install vim -y

#添加xiaoniao.conf的配置文件
root@70e72068d2d0:/# vim /etc/nginx/conf.d/xiaoniao.conf
server {
        listen       81;
        server_name  _;
        root         /opt;
        index index.html index.htm;
}

#和之前的步驟相同浪漠,退出容器,在宿主機(jī)上重啟nginx容器 
#瀏覽器訪問查看是否成功
[root@docker01 opt]# docker restart silly_napier
silly_napier

image
image

apt-get 常用的命令

apt-cache search packagename 搜索包
apt-cache show packagename 獲取包的相關(guān)信息霎褐,如說明址愿、大小、版本等
apt-get install packagename 安裝包
apt-get install packagename --reinstall 重新安裝包
apt-get -f install 修復(fù)安裝”-f = –fix-missing”
apt-get remove packagename 刪除包
apt-get remove packagename --purge 刪除包冻璃,包括刪除配置文件等
apt-get update 更新源
apt-get upgrade 更新已安裝的包
apt-get dist-upgrade 升級(jí)系統(tǒng)
apt-get dselect-upgrade 使用 dselect 升級(jí)
apt-cache depends packagename 了解使用依賴
apt-cache rdepends packagename 是查看該包被哪些包依賴
apt-get build-dep packagename 安裝相關(guān)的編譯環(huán)境
apt-get source packagename 下載該包的源代碼
apt-get clean 清理無用的包
apt-get autoclean 清理無用的包
apt-get check 檢查是否有損壞的依賴

Debian操作系統(tǒng)常用命令

資料鏈接

有些需要下載
apt-get install <軟件名> -y

iproute     # ip addr
wget        # 下載軟件
curl        # curl工具
ethtool     # 查看網(wǎng)卡狀態(tài)

一响谓、通用命令: 1\. date :print or set the system date and time
    2\. stty -a: 可以查看或者打印控制字符(Ctrl-C, Ctrl-D, Ctrl-Z 等)
    3\. passwd: print or set the system date and time (用 passwd -h 查看)
    4\. logout, login: 登錄 shell 的登錄和注銷命令
    5\. pwd: print or set the system date and time
    6\. more, less, head tail: 顯示或部分顯示文件內(nèi)容.
    7\. lp/lpstat/cancel, lpr/lpq/lprm: 打印文件.
    8\. 更改文件權(quán)限: chmod u+x...
    9\. 刪除非空目錄:rm -fr dir
    10.拷貝目錄: cp -R dir

二、ubuntu 常用命令:
1\. dpkg: package manager for Debian
    * 安裝: dpkg -i package
    * 卸載: dpkg -r package
    * 卸載并刪除配置文件: dpkg -P |--purge package
    * 如果安裝一個(gè)包時(shí)省艳。說依賴某些庫(kù)娘纷。可以先 #apt-get install somelib...
    * 查看軟件包安裝內(nèi)容 :dpkg -L package
    * 另外 dpkg 還有 dselect 和 aptitude 兩個(gè) frontend.

2\. apt
    * 安裝: apt-get install packs
    * apt-get update : 更新源
    * apt-get upgrade: 升級(jí)系統(tǒng)拍埠。
    * apt-get dist-upgrade: 智能升級(jí)失驶。安裝新軟件包,刪除廢棄的軟件包
    * apt-get -f install : -f == --fix broken 修復(fù)依賴
    * apt-get autoremove: 自動(dòng)刪除無用的軟件
    * apt-get remove packages :刪除軟件
    * apt-get remove package --purge 刪除包并清除配置文件
    * 清除所以刪除包的殘余配置文件: dpkg -l |grep ^rc|awk '{print $2}' |tr ["/n"] [" "]|sudo xargs dpkg -P
    * 安裝軟件時(shí)候包的臨時(shí)存放目錄 : /var/cache/apt/archives
    * 清除該目錄: apt-get clean
    * 清除該目錄的舊版本的軟件緩存: apt-get autoclean
    * 查詢軟件 some 的依賴包: apt-cache depends some
    * 查詢軟件 some 被哪些包依賴: apt-get rdepends some
    * 搜索軟件: apt-cache search name|regexp
    * 查看一個(gè)軟件的編譯依賴庫(kù): apt-cache showsrc packagename|grep Build-Depends
    * 下載軟件的源代碼 : apt-get source packagename (注: sources.list 中應(yīng)該有 deb-src 源)
    * 安裝軟件包源碼的同時(shí), 安裝其編譯環(huán)境 :apt-get build-dep packagename (有 deb-src 源)
    * 如何將本地光盤加入安裝源列表: apt-cdrom add

3\. 系統(tǒng)命令:
    * 查看內(nèi)核版本: uname -a
    * 查看 ubuntu 版本: cat /etc/issue * 查看網(wǎng)卡狀態(tài) : ethtool eth0
    * 查看內(nèi)存,cpu 的信息: cat /proc/meminfo ; cat /proc/cpuinfo
    (/proc 下面的有很多系統(tǒng)信息)
    * 打印文件系統(tǒng)空間使用情況: df -h
    * 查看硬盤分區(qū)情況: fdisk -l
    * 產(chǎn)看文件大小: du -h filename;
    * 查看目錄大小: du -hs dirname ; du -h dirname 是查看目錄下所有文件的大小
    * 查看內(nèi)存的使用: free -m|-g|-k
    * 查看進(jìn)程: ps -e 或 ps -aux -->顯示用戶
    * 殺掉進(jìn)程: kill pid
    * 強(qiáng)制殺掉: killall -9 processname

4\. 網(wǎng)絡(luò)相關(guān):
    * 配置 ADSL: sudo pppoeconf
    * ADSL 手工撥號(hào): sudo pon dsl-provider
    * 激活 ADSL : sudo /etc/ppp/pppoe_on_boot
    * 斷開 ADSL: sudo poff 
    * 根據(jù) IP 查網(wǎng)卡地址: arping IP 地址
    * 產(chǎn)看本地網(wǎng)絡(luò)信息(包括 ip 等): ifconfig | ifconfig eth0
    * 查看路由信息: netstat -r
    * 關(guān)閉網(wǎng)卡: sudo ifconfig eth0 down
    * 啟用網(wǎng)卡: sudo ifconfig eth0 up
    * 添加一個(gè)服務(wù): sudo update-rc.d 服務(wù)名 defaults 99
    * 刪除一個(gè)服務(wù): sudo update-rc.d 服務(wù)名 remove
    * 臨時(shí)重啟一個(gè)服務(wù): /etc/init.d/服務(wù)名 restart
    * 臨時(shí)關(guān)閉一個(gè)服務(wù): /etc/init.d/服務(wù)名 stop
    * 臨時(shí)啟動(dòng)一個(gè)服務(wù): /etc/init.d/服務(wù)名 start
    * 控制臺(tái)下顯示中文: sudo apt-get install zhcon
    * 查找某個(gè)文件: whereis filename 或 find 目錄 -name 文件名
    *通過 ssh 傳輸文件
    scp -rp /path/filename username@remoteIP:/path #將本地文件拷貝到服務(wù)器上
    scp -rp username@remoteIP:/path/filename /path #將遠(yuǎn)程文件從服務(wù)器下載到本地

5\. 壓縮:
    *解壓縮 a.tar.gz
    #tar zxvf a.tar.gz
    *解壓縮 a.tar.bz2 #tar jxvf a.tar.bz2
    *壓縮 aaa bbb 目錄為 xxx.tar.gz
    #tar zcvf xxx.tar.gz aaa bbb
    *壓縮 aaa bbb 目錄為 xxx.tar.bz2
    #tar jcvf xxx.tar.bz2 aaa bbb

6\. Nautilus:
    特殊 URI 地址
    * computer:/// - 全部掛載的設(shè)備和網(wǎng)絡(luò)
    * network:/// - 瀏覽可用的網(wǎng)絡(luò)
    * burn:/// - 一個(gè)刻錄 CDs/DVDs 的數(shù)據(jù)虛擬目錄
    * smb:/// - 可用的 windows/samba 網(wǎng)絡(luò)資源
    * x-nautilus-desktop:/// - 桌面項(xiàng)目和圖標(biāo)
    * file:/// - 本地文件
    * trash:/// - 本地回收站目錄
    * ftp:// - FTP 文件夾
    * ssh:// - SSH 文件夾
    * fonts:/// - 字體文件夾枣购,可將字體文件拖到此處以完成安裝
    * themes:/// - 系統(tǒng)主題文件夾
    * 顯示隱藏文件: Ctrl+h
    * 顯示地址欄: Ctrl+l
    * 查看已安裝字體: 在 nautilus 的地址欄里輸入”fonts:///“嬉探,就可以查看本機(jī)所有的 fonts`  

Vi Etc/network/interfaces · 在 Debian 及其衍生版本中,hostname 都可以通過一下方式修改棉圈。眾所周知涩堤,Linux 的一切都
是存在于文件當(dāng)中的,事實(shí)上 UNIX 是這種哲學(xué)的創(chuàng)立者分瘾。Debian 中 hostname 存在于以下文
件胎围。
/etc/hostname

10.挑戰(zhàn)-搭建Ghost博客系統(tǒng)

image

資料鏈接
https://iiong.com/gost-blog-install-notes/
https://blog.csdn.net/qq_35974759/article/details/84858358

手動(dòng)將容器保存為鏡像

docker commit 容器id或者容器的名字   新的鏡像名字[:版本號(hào)可選]

1):基于容器制作鏡像
docker run -it centos:6.9 
######
yum install httpd
yum install openssh-server
/etc/init.d/sshd start

vi /init.sh
#!/bin/bash
/etc/init.d/httpd start
/usr/sbin/sshd -D

chmod +x /init.sh

2)將容器提交為鏡像
docker commit oldboy centos6-ssh-httpd:v1

3)測(cè)試鏡像功能是否可用

手動(dòng)制作的鏡像,傳輸時(shí)間長(zhǎng)
鏡像初始命令

制作一個(gè)kodexplorer網(wǎng)盤docker鏡像德召。nginx + php-fpm(httpd + php)

手動(dòng)制作容器步驟

手動(dòng)創(chuàng)建一個(gè)centos6的鏡像并創(chuàng)建一臺(tái)容器

#創(chuàng)建一臺(tái)基礎(chǔ)容器白魂,81端口映射到80端口 下載nginx

docker run -it -p 81:80 centos:6.9 /bin/bash
ifconfig

#做端口映射,在容器中下載nginx

echo "192.168.37.202  mirrors.aliyun.com" >>/etc/hosts
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install nginx -y

在宿主機(jī)上手動(dòng)制作鏡像
使用創(chuàng)建的鏡像鏡像創(chuàng)建容器

#查看創(chuàng)建的centos6.9基礎(chǔ)容器的ID
#創(chuàng)建鏡像 centos6.9_nginx v1版本
#刪除當(dāng)前所有容器
#查看宿主機(jī)中的鏡像上岗,是否有剛剛創(chuàng)建的鏡像
#利用新建的鏡像創(chuàng)建容器,將82端口映射到80端口

docker ps -a
docker container commit 84265c434784 centos6.9_nginx:v1
docker container rm -f `docker ps -a -q`
docker image ls
docker run -d -p 82:80 centos6.9_nginx:v1 nginx -g 'daemon off;'

訪問10.0.0.11:82是否成功

image

容器搭建_掃雷小游戲

tomcat環(huán)境

思路

1:啟動(dòng)centos6 基礎(chǔ)容器
yum  install  tomcat

2:在容器中書寫腳本文件
vi   /init.sh
#!/bin/bash
service  tomcat start
tail   -f   /var/log/tomcat/catalina.out

3:把容器提交為鏡像
docker  commit   4a8871d37633   centos6.9_tomcat7:v1

4:啟動(dòng)容器
docker  run  -d   -p 8081:8080    -v    /opt/saolei:/var/lib/tomcat/webapps/ROOT                      centos6.9_tomcat7:v1   /bin/bash    /init.sh

image

具體操作步驟

掃雷軟件包下載鏈接_提取碼: 29tu

生產(chǎn)環(huán)境中福荸,一般把源代碼直接封裝到鏡像中,一運(yùn)行容器就可以用肴掷,就不用 < -v > 掛載了

#啟動(dòng)centos6基礎(chǔ)容器敬锐,下載tomcat
docker run -it -p 80:80 centos:6.9 /bin/bash

echo "192.168.37.202  mirrors.aliyun.com" >>/etc/hosts
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install tomcat -y

在容器中書寫腳本
vi /init.sh
#!/bin/bash
service tomcat start
tail -f /var/log/tomcat/catalina.out

#把容器提交為鏡像
docker commit <容器ID> centos6.9_tomcat7:v1

#將掃雷代碼放到/opt目錄下
[root@docker01 ~]# ll /opt/saolei/
total 12
drwxr-xr-x 2 root root  161 Dec  3  2009 imgs
-rw-r--r-- 1 root root 9250 Dec  1  2009 saolei.jsp

#啟動(dòng)容器,為了夯住背传,后面要執(zhí)行之前寫的腳本文件
#如果宿主機(jī)有tomcat的環(huán)境記得修改端口映射或把宿主機(jī)的環(huán)境殺掉
pkill -9 java
docker run -d -p 8080:8080 -v /opt/saolei:/var/lib/tomcat/webapps/ROOT centos6.9_tomcat7:v1 /bin/bash /init.sh

#瀏覽器訪問就可以玩了

image

容器搭建_可道云

可道云的站點(diǎn)包下載鏈接_提取碼: svg2

#刪除索引容器
docker container rm -f `docker ps -a -q`

================================================

#新建一個(gè)基礎(chǔ)容器
docker run -it -p 80:80 centos6.9_nginx:v1 /bin/bash

#hosts劫持
echo "192.168.37.202  mirrors.aliyun.com" >>/etc/hosts
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

#安裝php-fpm
yum install -y php-fpm php-gd php-mbstring

#在容器中修改php配置文件
[root@de6c450c9fe9 /]# grep  'nginx' /etc/php-fpm.d/www.conf
user = nginx
group = nginx

#在容器中修改nginx配置文件,設(shè)置站點(diǎn)目錄為 /code
[root@de6c450c9fe9 /]# cat /etc/nginx/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /code;
            index  index.php index.html index.htm;
        }
        location ~ \.php$ {
            root           /code;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /code$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

mkdir /code

#在容器中下載wget和unzip命令用來下載可道云的文件
#可道云的站點(diǎn)包在上面提供的下載路徑可以下載使用
#解壓到站點(diǎn)目錄下后,修改站點(diǎn)目錄的權(quán)限為nginx
yum install -y  wget unzip
wget http://192.168.37.202/linux59/kodexplorer4.40.zip
mv kodexplorer4.40.zip  code/
cd code/
unzip kodexplorer4.40.zip 
chown -R nginx.nginx .

#啟動(dòng)php和nginx
service php-fpm restart
service nginx restart

瀏覽器訪問查看

image
#把可道云做一個(gè)鏡像
docker commit <容器ID> kod:v1

#新建一個(gè)可道云的容器
docker run -d -p 81:80 kod:v1 service php-fpm nginx start

#登錄方式保證歷史命令存在
docker start <容器ID>
docker attach <容器ID>

#保證容器夯住台夺,在容器中書寫腳本
vi /init.sh
#!/bin/bash
service php-fpm start
nginx -g 'daemon off;'

#將php-fpm和nginx關(guān)閉掉
service php-fpm stop 
service nginx stop 

#測(cè)試腳本是否可用
sh /init.sh

#再次做鏡像v2
docker commit <容器ID> kod:v2

#利用鏡像v2運(yùn)行一個(gè)新的容器
docker run -d -p 81:80 kod:v2 /bin/bash /init.sh

image.png

完成

容器搭建_phpwind論壇

phpwind論壇站點(diǎn)包下載鏈接_提取碼: fw6p

#新建一個(gè)基礎(chǔ)容器径玖,80端口映射,80端口颤介,
#與上一個(gè)項(xiàng)目的可道云的81端口不要沖突
docker run -it -p 80:80 centos6.9_nginx:v1 /bin/bash

#在容器中執(zhí)行梳星,hosts本地劫持
echo "192.168.37.202  mirrors.aliyun.com" >>/etc/hosts
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

#下載php環(huán)境和需要用的的命令
yum install -y wget unzip php-fpm php-gd php-mbstring php-mysql vim 

#拉取phpwind論壇的站點(diǎn)包,上面已有下載鏈接
wget http://192.168.37.202/linux59/phpwind_UTF8_8.7.1.zip

#創(chuàng)建站點(diǎn)目錄滚朵,解壓后并修改權(quán)限為nginx
mkdir /code
mv phpwind_UTF8_8.7.1.zip code/
cd /code
unzip phpwind_UTF8_8.7.1.zip
chown -R nginx.nginx .

#修改php-fpm配置文件
[root@2fc2234b814b code]# grep  'nginx' /etc/php-fpm.d/www.conf
user = nginx
group = nginx

#在容器中修改nginx配置文件,設(shè)置站點(diǎn)目錄為 /code/upload
[root@de6c450c9fe9 /]# cat /etc/nginx/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /code/upload;
            index  index.php index.html index.htm;
        }
        location ~ \.php$ {
            root           /code/upload;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /code/upload$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

#啟動(dòng)php-fpm和nginx服務(wù)
service php-fpm restart
service nginx restart

#安裝數(shù)據(jù)庫(kù)并啟動(dòng)
yum install -y mysql-libs mysql-server
service mysqld restart

#進(jìn)入數(shù)據(jù)庫(kù)創(chuàng)庫(kù)丰泊,刪除空表
#為數(shù)據(jù)庫(kù)創(chuàng)建密碼
[root@2fc2234b814b code]# mysqladmin -uroot -p password 123456
[root@2fc2234b814b code]# mysql -uroot -p123456
#刪除空表
mysql> select user,host from mysql.user;
mysql>  drop user ''@'2fc2234b814b';
mysql>  drop user ''@'localhost';
mysql> flush privileges;

#創(chuàng)建phpwind庫(kù)
mysql> create database phpwind charset utf8;
mysql> show databases;

#調(diào)整時(shí)區(qū)
[root@2fc2234b814b code]# /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@2fc2234b814b code]# date
Fri Sep  6 15:26:33 CST 2019

#重啟服務(wù)
service php-fpm restart
service nginx restart
service mysqld restart

瀏覽器訪問查看

image.png
image
image
image
image
image.png

dockerfile自動(dòng)構(gòu)建docker鏡像

image

類似ansible劇本,大小幾kb
手動(dòng)做鏡像:大小幾百M(fèi)+
dockerfile 支持自定義容器的初始命令
dockerfile主要組成部分:

? 基礎(chǔ)鏡像信息 FROM centos:6.9
? 制作鏡像操作指令 RUN yum install openssh-server -y
? 容器啟動(dòng)時(shí)執(zhí)行初始命令 CMD ["/bin/bash"]

dockerfile常用指令:

FROM  這個(gè)鏡像的媽媽是誰始绍?(指定基礎(chǔ)鏡像)
MAINTAINER 告訴別人,誰負(fù)責(zé)養(yǎng)它话侄?(指定維護(hù)者信息亏推,可以沒有)
LABLE      描述,標(biāo)簽
RUN 你想讓它干啥(在命令前面加上RUN即可)
ADD 給它點(diǎn)創(chuàng)業(yè)資金(會(huì)自動(dòng)解壓tar)  制作docker基礎(chǔ)的系統(tǒng)鏡像
WORKDIR 我是cd,今天剛化了妝(設(shè)置當(dāng)前工作目錄)
VOLUME 給它一個(gè)存放行李的地方(設(shè)置卷年堆,掛載主機(jī)目錄)
EXPOSE 它要打開的門是啥(指定對(duì)外的端口)(-P 隨機(jī)端口)
CMD 奔跑吧吞杭,兄弟!(指定容器啟動(dòng)后的要干的事情)(容易被替換)
dockerfile其他指令: 
COPY 復(fù)制文件(不會(huì)解壓)rootfs.tar.gz
ENV  環(huán)境變量
ENTRYPOINT  容器啟動(dòng)后執(zhí)行的命令(無法被替換变丧,啟容器的時(shí)候指定的命令芽狗,會(huì)被當(dāng)成參數(shù))

測(cè)試——FROM & RUN


#手動(dòng)制作一次docker鏡像(收集命令)

#編寫dockerfile文件
[root@docker01 nginx]# mkdir -p /opt/dockerfile/nginx
[root@docker01 nginx]# cd /opt/dockerfile/nginx
[root@docker01 nginx]# vim dockerfile
FROM centos:6.9
RUN  curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
RUN  curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
RUN  yum install nginx -y
CMD  ["nginx","-g","daemon off;"]

#docker build自動(dòng)構(gòu)建docker鏡像
[root@docker01 nginx]# docker image build -t centos6.9_nginx:v2 --network=host /opt/dockerfile/nginx
.....
Successfully built 05342d047d21
Successfully tagged centos6.9_nginx:v2

#測(cè)試鏡像可不可以使用
docker run -d -p 88:80 centos6.9_nginx:v2

image.png
FROM centos:6.9 加載鏡像
RUN  啟動(dòng)一個(gè)臨時(shí)容器, curl產(chǎn)生文件變化痒蓬。保留文件變化童擎,提交為臨時(shí)鏡像,刪除臨時(shí)容器
RUN  啟動(dòng)一個(gè)臨時(shí)容器攻晒,yum install顾复,提交為臨時(shí)鏡像,刪除臨時(shí)容器

dockerfile RUN ==  docker run 

加速的一種方法就是把執(zhí)行的命令放到一行 && \

[root@docker01 nginx]# vim dockerfile 
FROM centos:6.9
RUN  curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo && \
 curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo && \
 yum install nginx php -y
CMD  ["nginx","-g","daemon off;"]

測(cè)試——ADD

#創(chuàng)建目錄
cd dockerfile/
mkdir saolei
[root@docker01 saolei]# pwd
/opt/dockerfile/saolei

#添加自動(dòng)創(chuàng)建鏡像的配置文件
[root@docker01 saolei]# vim dockerfile
FROM  centos:6.9
RUN  curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
RUN  curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
RUN  yum  install  tomcat  -y

RUN  cd /var/lib/tomcat/webapps/ && \
curl -o saolei.tar.gz  http://192.168.37.202/linux59/saolei.tar.gz && \
tar xf saolei.tar.gz && \
mv saolei ROOT

ADD  init.sh /init.sh
CMD  ["/bin/bash","/init.sh"]

#添加腳本文件
[root@docker01 saolei]# vim init.sh
#!/bin/bash
service  tomcat start
tail   -f   /var/log/tomcat/catalina.out

#docker build自動(dòng)構(gòu)建docker鏡像
docker build -t centos6.9_tomcat7:v2  --network=host .

#測(cè)試鏡像可不可以使用
docker run -d -p 8080:8080 centos6.9_tomcat7:v2
docker ps -a -l

瀏覽器訪問10.0.0.11:8080

image

測(cè)試——EXPOSE

#將站點(diǎn)包下載到saolei/下
[root@docker01 saolei]# curl -o saolei.tar.gz  http://192.168.37.202/linux59/saolei.tar.gz
[root@docker01 saolei]# vim dockerfile 
FROM  centos:6.9
RUN  curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
RUN  curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
RUN  yum  install  tomcat  -y

RUN  cd /var/lib/tomcat/webapps/ 
ADD  saolei.tar.gz .
RUN  mv saolei ROOT

ADD  init.sh /init.sh

EXPOSE 8080 

CMD  ["/bin/bash","/init.sh"]

#docker build自動(dòng)構(gòu)建docker鏡像
[root@docker01 saolei]# docker build -t centos6.9_tomcat7:v5  --network=host .

docker常用指令

image
docker volume ls

docker run -d -p 88:80 --volumes-from 0017aae5b068  kod:v6

docker鏡像的分層(kvm 鏈接克隆鲁捏,寫時(shí)復(fù)制的特性)

image
鏡像分層的好處:復(fù)用,節(jié)省磁盤空間芯砸,相同的內(nèi)容只需加載一份到內(nèi)存。
修改dockerfile之后给梅,再次構(gòu)建速度快

dockerfile 優(yōu)化:

1:盡可能選擇體積小linux假丧,alpine

2:盡可能合并RUN指令,清理無用的文件(yum緩存动羽,源碼包)

3:修改dockerfile包帚,把變化的內(nèi)容盡可能放在dockerfile結(jié)尾

4: 使用.dockerignore,減少不必要的文件ADD .   /html

image
image
image
image
image

容器間的互聯(lián)(--link 是單方向的2苤省)

hosts解析

image

[root@docker01 kod]# docker run -d  --name nginx centos6.9_nginx:v1 nginx -g 'daemon off;'
[root@docker01 kod]# docker exec -it nginx /bin/bash
[root@fef3cf194be8 /]# hostname -I
172.17.0.2 
[root@docker01 kod]# docker run -it --link nginx:web centos6.9_nginx:v1 /bin/bash
[root@969c228864f2 /]# ping web
PING web (172.17.0.2) 56(84) bytes of data.
64 bytes from web (172.17.0.2): icmp_seq=1 ttl=64 time=0.118 ms
64 bytes from web (172.17.0.2): icmp_seq=2 ttl=64 time=0.120 ms
^C
--- web ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1288ms
rtt min/avg/max/mdev = 0.118/0.119/0.120/0.001 ms
[root@969c228864f2 /]# cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2  web fef3cf194be8 nginx

docker部署zabbix監(jiān)控

上傳需要的tar包

image
#上傳后校驗(yàn)md5值
ls *.tar.gz|xargs md5sum

for n in `ls *.tar.gz`;do docker load -i $n  ;done

docker run --name mysql-server -it \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -d mysql:5.7 \
      --character-set-server=utf8 --collation-server=utf8_bin

docker run --name zabbix-java-gateway -t \
      -d zabbix/zabbix-java-gateway:latest

docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:latest

docker run --name zabbix-web-nginx-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:80 \
      -d zabbix/zabbix-web-nginx-mysql:latest

#zabbix的默認(rèn)監(jiān)控密碼
Admin:zabbix

image.png

監(jiān)控服務(wù)

zabbix-agent客戶端軟件包下載鏈接_提取碼: y7ri

開啟另外一臺(tái)docker宿主機(jī) 10.0.0.12

image
image
image
上傳zabbix-agent的軟件包:
[root@docker02 ~]# hostname -I
10.0.0.12 172.17.0.1 
[root@docker02 ~]# ls zabbix-agent-3.2.0-1.el7.x86_64.rpm 
zabbix-agent-3.2.0-1.el7.x86_64.rpm

安裝zabbix-agent客戶端:
[root@docker02 ~]# rpm -ivh zabbix-agent-3.2.0-1.el7.x86_64.rpm
warning: zabbix-agent-3.2.0-1.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zabbix-agent-3.2.0-1.el7         ################################# [100%]

修改zabbix-agent.conf配置文件中指定的服務(wù)端IP:
[root@docker02 ~]# egrep '^Server' /etc/zabbix/zabbix_agentd.conf 
Server=10.0.0.11
ServerActive=127.0.0.1

重啟zabbix-agent服務(wù)
[root@docker02 ~]# systemctl restart zabbix-agent.service 

在10.0.0.11 上重啟docker的zabbix服務(wù)端容器婴噩,數(shù)據(jù)能夠加速被監(jiān)控上
[root@docker01 ~]# docker restart zabbix-server-mysql 
zabbix-server-mysql

image

docker registry(私有倉(cāng)庫(kù))

強(qiáng)哥的文檔—docker私有倉(cāng)庫(kù)registry的使用

docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry  registry

上傳鏡像到私有倉(cāng)庫(kù):
a:給鏡像打標(biāo)簽
docker  tag centos6-sshd:v3 10.0.0.11:5000/centos6-sshd:v3
b:上傳鏡像
docker push 10.0.0.11:5000/centos6-sshd:v3

如果遇到報(bào)錯(cuò):
The push refers to repository [10.0.0.11:5000/centos6.9_ssh]
Get https://10.0.0.11:5000/v2/: http: server gave HTTP response to HTTPS client

解決方法:
vim  /etc/docker/daemon.json
{
  "insecure-registries": ["10.0.0.11:5000"]
}
systemctl restart docker

普通的registry

registry軟件包下載鏈接_提取碼: fy19

在10.0.0.11上導(dǎo)入私有倉(cāng)庫(kù)的配置文件
[root@docker01 opt]# docker load -i registry.tar.gz 
[root@docker01 opt]# docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry  registry
a958c7b6817dc8d38ba175c12e8a2452668a9b68b1fe9846e46004ee26646608

#上傳鏡像到私有倉(cāng)庫(kù)
[root@docker02 ~]# docker pull daocloud.io/huangzhichong/alpine-cn:latest
[root@docker02 ~]# docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
nginx                                 latest              be1f31be9a87        11 months ago       109MB
daocloud.io/huangzhichong/alpine-cn   latest              e8289dcc1d4b        2 years ago         3.98MB

給鏡像打標(biāo)簽:
[root@docker02 ~]# docker tag e8289dcc1d4b 10.0.0.11:5000/alpine:latest
[root@docker02 ~]# docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
nginx                                 latest              be1f31be9a87        11 months ago       109MB
10.0.0.11:5000/alpine                 latest              e8289dcc1d4b        2 years ago         3.98MB
daocloud.io/huangzhichong/alpine-cn   latest              e8289dcc1d4b        2 years ago         3.98MB

上傳鏡像:
[root@docker02 ~]# docker push 10.0.0.11:5000/alpine:latest 
The push refers to repository [10.0.0.11:5000/alpine]
Get https://10.0.0.11:5000/v2/: dial tcp 10.0.0.11:5000: connect: connection refused

第一次報(bào)錯(cuò)后添加下面的配置:
[root@docker02 ~]# vim  /etc/docker/daemon.json
{
  "insecure-registries": ["10.0.0.11:5000"]
}

重啟docker
[root@docker02 ~]# systemctl restart docker

再次上傳鏡像成功
[root@docker02 ~]# docker push 10.0.0.11:5000/alpine:latest 
The push refers to repository [10.0.0.11:5000/alpine]
78cd8c87ab42: Pushed 
60ab55d3379d: Pushed 
latest: digest: sha256:d438c876bc7cbfe7732ca1c9a689cc3c24e15f2492ba6270d55f0a8984f96078 size: 735

#再上傳一個(gè)nginx的鏡像
打標(biāo)簽
[root@docker02 ~]# docker tag be1f31be9a87 10.0.0.11:5000/nginx:latest

上傳鏡像
[root@docker02 ~]# docker push 10.0.0.11:5000/nginx
The push refers to repository [10.0.0.11:5000/nginx]
92b86b4e7957: Pushed 
94ad191a291b: Pushed 
8b15606a9e3e: Pushed 
latest: digest: sha256:204a9a8e65061b10b92ad361dd6f406248404fe60efd5d6a8f2595f18bb37aad size: 948

帶basic認(rèn)證的registry

yum install httpd-tools -y
mkdir /opt/registry-var/auth/ -p
htpasswd  -Bbn oldboy 123456  >> /opt/registry-var/auth/htpasswd

docker run -d -p 5000:5000 --restart=always -v /opt/registry-var/auth/:/auth/   -v /opt/myregistry:/var/lib/registry -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e  "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry 

#賬號(hào)密碼為oldboy 123456

[root@docker02 ~]# docker login 10.0.0.11:5000
Username: oldboy
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@docker02 ~]# cat /root/.docker/config.json 
{
    "auths": {
        "10.0.0.11:5000": {
            "auth": "b2xkYm95OjEyMzQ1Ng=="
        }
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/19.03.1 (linux)"
    }
}[root@docker02 ~]# 

刪除倉(cāng)庫(kù)的鏡像

docker-compose(單機(jī)版的容器編排工具)

ansible劇本

yum install -y docker-compose(需要epel源)

cd my_wordpress/
vi docker-compose.yml

version: '3'
?
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
?
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - web_data:/var/www/html
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:
    web_data:

啟動(dòng)

docker-compose up

后臺(tái)啟動(dòng)

docker-compose up -d

重啟docker服務(wù)擎场,容器全部退出的解決辦法

方法一:docker run  --restart=always

方法二:"live-restore": true
docker server配置文件/etc/docker/daemon.json參考
{
 "registry-mirrors": ["http://b7a9017d.m.daocloud.io"],
 "insecure-registries":["10.0.0.11:5000"],
 "live-restore": true
}

#harbor 企業(yè)級(jí)容器 docker-compose down


Docker Machine安裝docker服務(wù)

Docker Machine 二進(jìn)制  10.0.0.11
10.0.0.12 免密碼登陸  從docker的官網(wǎng)下載二進(jìn)制的包,去安裝docker
10.0.0.13 免密碼登陸

ansible:
shell


Docker網(wǎng)絡(luò)類型(插件形式)

Docker:網(wǎng)絡(luò)模式詳解
Docker網(wǎng)絡(luò)模式測(cè)試

image

查看容器的詳細(xì)信息(可以查看網(wǎng)絡(luò)類型Networks)

docker container inspect 容器ID

[root@controller ~]#   docker network ls
NAME                DRIVER              SCOPE
bridge              bridge              local
host                host                local
none                null                local

None: 不為容器配置任何網(wǎng)絡(luò)功能几莽, --net=none
Container: 與另一個(gè)運(yùn)行中的容器共享 Network Namespace迅办,--net=container:containerID(K8S)
Host: 與宿主機(jī)共享 Network Namespace,--network=host 性能最高
Bridge: Docker設(shè)計(jì)的NAT網(wǎng)絡(luò)模型 默認(rèn)類型
[root@docker01 ~]# docker run --help|grep -i '\-n'
      --name string                    Assign a name to the container
      --network network                Connect a container to a network
      --network-alias list             Add network-scoped alias for the
      --no-healthcheck                 Disable any container-specified

host(主機(jī))

與宿主機(jī)共用一個(gè)網(wǎng)絡(luò) --network=host`

image
[root@docker01 ~]# docker run --network=host -d centos6.9_nginx:v2 
47fcdc6d02a2fcaf96f94c01dd8c4e30f8d18f4554ecd041a5b92291dee3e72e
[root@docker01 ~]# docker inspect 47fcdc6d02a2  |grep -i network
            "NetworkMode": "host",
        "NetworkSettings": {
            "Networks": {
                    "NetworkID": "5755f7d4fc1e6e3b78efa629294ddc7f86a93a7d7863e
[root@docker01 /]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      1/nginx             
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 :::5000                     :::*                        LISTEN      -                   
tcp        0      0 :::80                       :::*                        LISTEN      1/nginx             
tcp        0      0 :::22                       :::*                        LISTEN      -                   
udp        0      0 127.0.0.1:323               0.0.0.0:*                               -                   
udp        0      0 ::1:323                     :::*                                    -     

image.png

bridge(橋接式網(wǎng)絡(luò))(默認(rèn))

image

啟動(dòng)容器時(shí)章蚣,首先會(huì)在主機(jī)上創(chuàng)建一個(gè)docker0的虛擬網(wǎng)橋站欺,相當(dāng)于交換機(jī),同時(shí)自動(dòng)分配一對(duì)網(wǎng)卡設(shè)備纤垂,一半在容器(eth0)矾策,一半在宿主機(jī),并且還關(guān)聯(lián)到了docker0峭沦,從而進(jìn)行連接贾虽。 每創(chuàng)建一個(gè)容器啟動(dòng)時(shí)自動(dòng)分配地址以后會(huì)生成iptables規(guī)則,iptables -t nat -vnL 查看postrouting 吼鱼,從任何接口進(jìn)來,只要不從docker0跳出去蓬豁,源地址任何網(wǎng)絡(luò)地址,無論到達(dá)任何主機(jī)菇肃,都要做地址偽裝地粪,自動(dòng)選擇主機(jī)物理源地址

image
[root@docker01 ~]# yum install bridge-utils -y
[root@docker01 ~]# docker run --network=bridge -d centos6.9_nginx:v2
[root@docker01 ~]# brctl show
bridge name bridge id       STP enabled interfaces
docker0     8000.0242dffbd98d   no      vetha7e18ee
[root@docker01 ~]# brctl show
bridge name bridge id       STP enabled interfaces
docker0     8000.0242dffbd98d   no      veth4e42c2f
                            vetha30a6de

Container(K8S會(huì)常用)

與另一個(gè)運(yùn)行得容器共用一個(gè)網(wǎng)絡(luò)Network Namespace --network=container:容器ID

默認(rèn)先起一個(gè)容器:
docker run -d phpwind:v1
隨便啟一個(gè)容器共用phpwind:v1的網(wǎng)絡(luò)
docker run -it --network container:2735c9b78546 nginx
這時(shí)nginx容器和phpwind的ip都是相同的 ,同樣誰先占用80端口就是誰的

##查看網(wǎng)絡(luò)類型
docker inspect nginx容器ID |grep -i network
  NetworkMode

none (空)

不為容器配置任何網(wǎng)絡(luò)功能 --network=none 不使用任何網(wǎng)絡(luò)類型

docker run --network=none -d phpwind:v1 /bin/bash

沒有網(wǎng)絡(luò)適合聯(lián)系使用琐谤,只有基礎(chǔ)命令


Docker跨主機(jī)容器之間的通信macvlan

image
默認(rèn)一個(gè)物理網(wǎng)卡蟆技,只有一個(gè)物理mac地址,虛擬多個(gè)mac地址

##創(chuàng)建macvlan網(wǎng)絡(luò)
docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
##設(shè)置eth0的網(wǎng)卡為混雜模式
ip link set eth1 promisc on
##創(chuàng)建使用macvlan網(wǎng)絡(luò)的容器
docker run -it --network macvlan_1 --ip=10.0.0.200 busybox

練習(xí)1:docker跨主機(jī)容器間的通信flannel

[root@docker01 ~]# docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
[root@docker01 ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
e088d87e361f        bridge              bridge              local
e7638e062d74        macvlan_1           macvlan             local
[root@docker01 ~]# docker run -it --network macvlan_1 alpine:latest 
/ # 
/ # ifconfig 
eth0      Link encap:Ethernet  HWaddr 02:42:0A:00:00:01  
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0

[root@docker01 ~]# docker run -it --network macvlan_1 --ip 10.0.0.100 alpine:latest 
/ # 
/ # ifconfig 
eth0      Link encap:Ethernet  HWaddr 02:42:0A:00:00:64  
          inet addr:10.0.0.100  Bcast:10.0.0.255  Mask:255.255.255.0

[root@docker01 ~]# docker stats --no-stream 
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
e1b597321916        laughing_nobel      0.00%               192KiB / 1.934GiB   0.01%               0B / 0B             0B / 0B             1
af48e50366d1        confident_hypatia   0.00%               188KiB / 1.934GiB   0.01%               0B / 0B             0B / 0B  


Dcoker跨主機(jī)容器通信之overlay

image.png

準(zhǔn)備 overlay 網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境

docker_progrium_consul.tar.gz鏡像包下載鏈接_提取碼: uk8p

設(shè)置容器的主機(jī)名

consul:kv類型的存儲(chǔ)數(shù)據(jù)庫(kù)(key:value)

docker01上:

[root@docker01 ~]# wget http://192.168.37.202/linux59/docker_progrium_consul.tar.gz
[root@docker01 ~]# docker load -i docker_progrium_consul.tar.gz
[root@docker01 ~]# vim  /etc/docker/daemon.json
{
  "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
  "cluster-store": "consul://10.0.0.11:8500",
  "cluster-advertise": "10.0.0.11:2376"
}

[root@docker01 ~]# vim /usr/lib/systemd/system/docker.service
...
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock

[root@docker01 ~]# systemctl daemon-reload 
[root@docker01 ~]# systemctl restart docker

docker02上:

[root@docker02 ~]# wget http://192.168.37.202/linux59/docker_progrium_consul.tar.gz
[root@docker02 ~]# docker load -i docker_progrium_consul.tar.gz
[root@docker02 ~]# vim  /etc/docker/daemon.json
{
  "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
  "cluster-store": "consul://10.0.0.11:8500",
  "cluster-advertise": "10.0.0.12:2376"
}

[root@docker02 ~]# vim /usr/lib/systemd/system/docker.service
...
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock

docker01上創(chuàng)建容器:

[root@docker01 ~]# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

瀏覽器訪問10.0.0.11:8500

image.png

創(chuàng)建overlay網(wǎng)絡(luò)

[root@docker01 ~]# docker network create -d overlay --subnet 172.16.2.0/24 --gateway 172.16.2.254  ol1
[root@docker01 ~]# docker network ls
b2de7ebcc1f6        ol1                 overlay             global

#docker02上查看
[root@docker02 ~]# docker network ls
b2de7ebcc1f6        ol1                 overlay             global


啟動(dòng)容器測(cè)試

[root@docker01 ~]# docker run -it --network ol1 --name test01  busybox:latest

[root@docker02 ~]# docker run -it --network ol1 --name test02  busybox:latest 
/ # ifconfig 
eth0      Link encap:Ethernet  HWaddr 02:42:AC:10:02:02  
          inet addr:172.16.2.2  Bcast:172.16.2.255  Mask:255.255.255.0
/ # ping 172.16.2.1
64 bytes from 172.16.2.1: seq=0 ttl=64 time=1.665 ms
64 bytes from 172.16.2.1: seq=1 ttl=64 time=0.399 ms

#每個(gè)容器有兩塊網(wǎng)卡,eth0實(shí)現(xiàn)容器間的通訊,eth1實(shí)現(xiàn)容器訪問外網(wǎng)

搭建zabbix監(jiān)控測(cè)試環(huán)境

docker01上:

# 添加--network ol1的網(wǎng)絡(luò)環(huán)境
上面已添加

docker run --name mysql-server -t --network ol1\
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -d mysql:5.7 \
      --character-set-server=utf8 --collation-server=utf8_bin

docker run --name zabbix-java-gateway -t --network ol1\
      -d zabbix/zabbix-java-gateway:latest

docker run --name zabbix-server-mysql -t --network ol1\
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:latest

docker02上:

#上傳zabbix-web-nginx-mysql.tar.gz的鏡像并導(dǎo)入鏡像
[root@docker02 ~]# ls zabbix-web-nginx-mysql.tar.gz 
zabbix-web-nginx-mysql.tar.gz
[root@docker02 ~]# docker load  -i zabbix-web-nginx-mysql.tar.gz

#在docker02上添加zabbix-web-nginx-mysql容器
docker run --name zabbix-web-nginx-mysql -t --network ol1\
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:80 \
      -d zabbix/zabbix-web-nginx-mysql:latest

瀏覽器訪問10.0.0.12

image.png
image.png

官方下載模板_cadvisor

官方下載模板_InfluxDB Docker

導(dǎo)入模板

image
image
image
image

另外一種

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載斗忌,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者质礼。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市飞蹂,隨后出現(xiàn)的幾起案子几苍,更是在濱河造成了極大的恐慌,老刑警劉巖陈哑,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妻坝,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡惊窖,警方通過查閱死者的電腦和手機(jī)刽宪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來界酒,“玉大人圣拄,你說我怎么就攤上這事』傩溃” “怎么了庇谆?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵岳掐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我饭耳,道長(zhǎng)串述,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任寞肖,我火速辦了婚禮纲酗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘新蟆。我一直安慰自己觅赊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布琼稻。 她就那樣靜靜地躺著吮螺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帕翻。 梳的紋絲不亂的頭發(fā)上乡革,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天等孵,我揣著相機(jī)與錄音蝌蹂,去河邊找鬼熄赡。 笑死躲撰,一個(gè)胖子當(dāng)著我的面吹牛对蒲,可吹牛的內(nèi)容都是我干的昆禽。 我是一名探鬼主播茬缩,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼卿拴,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼衫仑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起堕花,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤文狱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后缘挽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞄崇,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年壕曼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苏研。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡腮郊,死狀恐怖摹蘑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轧飞,我是刑警寧澤衅鹿,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布撒踪,位于F島的核電站,受9級(jí)特大地震影響大渤,放射性物質(zhì)發(fā)生泄漏制妄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一兼犯、第九天 我趴在偏房一處隱蔽的房頂上張望忍捡。 院中可真熱鬧,春花似錦切黔、人聲如沸砸脊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)凌埂。三九已至,卻和暖如春诗芜,著一層夾襖步出監(jiān)牢的瞬間瞳抓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工伏恐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孩哑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓翠桦,卻偏偏與公主長(zhǎng)得像横蜒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子销凑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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