Docker快速入門

一繁扎、概述

Docker is the world’s leading software container platform. Developers use Docker to eliminate “works on my machine” problems when collaborating on code with co-workers. Operators use Docker to run and manage apps side-by-side in isolated containers to get better compute density. Enterprises use Docker to build agile software delivery pipelines to ship new features faster, more securely and with confidence for both Linux and Windows Server apps.

Docker是一個(gè)開源的引擎廉沮,可以為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的呕乎、自給自足的容器胸嘁。

應(yīng)用場景:

  • web應(yīng)用的自動(dòng)化打包和發(fā)布
  • 自動(dòng)化測試和持續(xù)集成承二、發(fā)布
  • 在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他后臺(tái)應(yīng)用
  • 編譯或擴(kuò)展現(xiàn)有的OpenShift或Cloud Foundry平臺(tái)來搭建Paas環(huán)境

Docker使用客戶端/服務(wù)器架構(gòu)模式淋淀,通常客戶端和服務(wù)器運(yùn)行在同一臺(tái)機(jī)器上易桃。

  • docker服務(wù)器是一個(gè)守護(hù)進(jìn)程褥琐,負(fù)責(zé)管理所有的容器
  • docker客戶端是一個(gè)遠(yuǎn)程控制器,負(fù)責(zé)接收用戶指令并與守護(hù)進(jìn)程通信

官網(wǎng)地址

二晤郑、主要部件

1敌呈、鏡像image

Docker鏡像是Docker容器運(yùn)行時(shí)的只讀模板,由文件系統(tǒng)疊加而成造寝。

最底層是一個(gè)引導(dǎo)文件系統(tǒng)bootfs磕洪,當(dāng)容器啟動(dòng)后會(huì)被移到內(nèi)存中,引導(dǎo)文件系統(tǒng)會(huì)被卸載诫龙。 第二層是一個(gè)root文件系統(tǒng)rootfs析显,位于引導(dǎo)文件系統(tǒng)之上,可以是一種或多種操作系統(tǒng)签赃。Docker中的rootfs是只讀狀態(tài)谷异,并且利用聯(lián)合加載技術(shù),在rootfs之上加載更多的文件系統(tǒng)锦聊。聯(lián)合加載指一次同時(shí)加載多個(gè)文件系統(tǒng)歹嘹,但在外部只能看到一個(gè)文件系統(tǒng),最終的文件系統(tǒng)會(huì)包含所有底層的文件和目錄孔庭。

Docker將這樣的文件系統(tǒng)稱為鏡像尺上,一個(gè)鏡像可以放到另一個(gè)鏡像的頂部,位于下面的鏡像稱為父鏡像,最底層的鏡像稱為基礎(chǔ)鏡像尖昏。

2仰税、倉庫repository

Docker倉庫用來保存鏡像构资,而倉庫存在于Registry中抽诉,默認(rèn)的Registry是由Docker公司提供的公共Registry服務(wù)。

Docker Hub是公有的Docker倉庫吐绵,提供了大量的鏡像集合以供使用迹淌。Docker官網(wǎng)提供了所有可用的容器鏡像,網(wǎng)址:index.docker.io己单。除了公有倉庫中的鏡像唉窃,還可以自己創(chuàng)建私有鏡像。

3纹笼、容器container

Docker容器包含了某個(gè)應(yīng)用運(yùn)行所需要的環(huán)境纹份,每一個(gè)容器都是一個(gè)獨(dú)立的平臺(tái)。容器是通過鏡像所創(chuàng)建廷痘,可以運(yùn)行蔓涧、開始、停止笋额、刪除等元暴。

當(dāng)從一個(gè)鏡像啟動(dòng)容器時(shí),Docker會(huì)在該鏡像的最頂層加載一個(gè)讀寫文件系統(tǒng)兄猩。在Docker中運(yùn)行的程序就是在這個(gè)讀寫層中執(zhí)行茉盏。當(dāng)創(chuàng)建一個(gè)新容器時(shí),Docker會(huì)構(gòu)建出一個(gè)鏡像棧枢冤,并在棧的最頂端添加一個(gè)讀寫層鸠姨。這個(gè)讀寫層加上其下面的鏡像層以及一些配置數(shù)據(jù),就構(gòu)成了一個(gè)容器淹真。

三讶迁、用法

1、安裝

可參考官方文檔:https://docs.docker.com/engine/installation/

2趟咆、常用命令

查看docker命令列表:

docker

查看docker命令的具體用法:

docker <command> --help

查看docker版本:

docker version

查看docker信息:

docker info

檢索docker鏡像:

docker search <image_name>

下載docker鏡像:

docker pull <image_name>

查看所有安裝過的鏡像:

docker images

構(gòu)建新的鏡像添瓷,返回一個(gè)新版本鏡像的id,提交的只是創(chuàng)建容器的鏡像與容器當(dāng)前狀態(tài)之間有差異的部分(目前已不推薦此做法):

docker commit id <new_image_name>
  • -m 指定新創(chuàng)建的鏡像的提交信息
  • --author 指定鏡像的作者信息

查看鏡像的詳細(xì)信息:

docker inspect <image_name>

將鏡像發(fā)布到官網(wǎng):

docker push <image_name>

使用dockerfile文件構(gòu)建鏡像:

docker build -t="倉庫名/新鏡像名:標(biāo)簽" Dockerfile文件所在的目錄

查看鏡像的構(gòu)建歷史:

docker history <image_id>

刪除鏡像:

docker rmi <image_id>

持久化鏡像:

docker save <image_id> > /tmp/save_image.tar

使用鏡像創(chuàng)建一個(gè)新的容器值纱,并在容器中執(zhí)行命令:

docker run <image_name> <command>
  • --name 設(shè)置容器名(容器的命名是唯一的)
  • -i 保持標(biāo)準(zhǔn)輸入開啟
  • -t 分配一個(gè)偽終端
  • -d 在后臺(tái)運(yùn)行容器(守護(hù)式容器)
  • -p 指定容器與宿主機(jī)的端口映射
  • -h/--hostname 設(shè)置容器的主機(jī)名
  • -v/--volume 掛載卷鳞贷,host:/dir從主機(jī)掛載,/dir從容器掛載

Docker首先會(huì)檢查本地是否存在鏡像虐唠,如果沒有搀愧,則會(huì)連接官方Docker Hub查看是否存在。找到之后,會(huì)下載該鏡像并將其保存在本地宿主機(jī)中咱筛。創(chuàng)建的容器擁有自己的網(wǎng)絡(luò)搓幌、IP地址、用來和宿主機(jī)進(jìn)行通信的橋接網(wǎng)絡(luò)接口等迅箩。容器的主機(jī)名就是容器的ID溉愁,并且在/etc/hosts文件中為容器的IP地址添加了一條主機(jī)配置項(xiàng)。

創(chuàng)建一個(gè)新容器饲趋,用法同run拐揭,但不啟動(dòng)容器:

docker create <image_name> <command>

查看正在運(yùn)行的容器列表,可以獲得容器的id:

docker ps
  • -a 查看所有容器
  • -l 查看最近一次運(yùn)行的容器
  • -n x 查看最后x個(gè)容器
  • -q 只顯示容器ID

啟動(dòng)/停止/重啟/附著/暫停/取消暫停容器:

docker start/stop/restart/attach/pause/unpause <container_id>

查看容器日志:

docker logs <container_id>
  • -f 監(jiān)控日志
  • -t 顯示時(shí)間戳
  • --tail 輸出日志末尾的指定內(nèi)容

查看容器內(nèi)運(yùn)行的進(jìn)程:

docker top <container_id>

在容器中啟動(dòng)新進(jìn)程:

docker exec <container_id> <process_name>
  • -d 后臺(tái)進(jìn)程
  • -i 保持標(biāo)準(zhǔn)輸入開啟
  • -t 分配一個(gè)偽終端

通過docker exec后臺(tái)命令奕塑,可以在正在運(yùn)行的容器中進(jìn)行維護(hù)堂污、監(jiān)控及管理任務(wù)。

查看容器的詳細(xì)信息:

docker inspect <container_id>
  • -f/--format 指定查看結(jié)果

刪除容器(不能刪除運(yùn)行中的容器):

docker rm <container_id>

刪除所有容器:

docker rm `sudo docker ps -a -q`

持久化容器:

docker export <container_id> > /tmp/export_container.tar

在docker容器和宿主機(jī)之間復(fù)制文件:

  • 宿主機(jī)->容器:sudo docker cp host_path containerID:container_path
  • 容器->宿主機(jī):sudo docker cp containerID:container_path host_path

四龄砰、Dockerfile

目前推薦使用Dockerfile和build命令來構(gòu)建鏡像盟猖。Dockerfile由一系列的指令和參數(shù)組成,指令會(huì)按順序從上到下執(zhí)行换棚,每條指令都會(huì)創(chuàng)建一個(gè)新的鏡像層并進(jìn)行提交式镐。

1、執(zhí)行流程

  • Docker從基礎(chǔ)鏡像運(yùn)行一個(gè)容器
  • 執(zhí)行一條指令圃泡,對(duì)容器做出修改
  • 提交一個(gè)新的鏡像層
  • 執(zhí)行下一條指令碟案,直到所有指令都執(zhí)行完畢

2、Dockerfile指令

  • FROM <image>

每個(gè)Dockerfile的第一條指令都應(yīng)該是FROM颇蜡,指定一個(gè)已經(jīng)存在的鏡像价说,后續(xù)指令都基于該鏡像進(jìn)行。FROM指令可以在Dockerfile中出現(xiàn)多次风秤。如果本地沒有指定的鏡像鳖目,則從Docker公共庫pull鏡像。如果沒有指定鏡像標(biāo)簽缤弦,則使用latest標(biāo)簽领迈。

  • MAINTAINER <name>

用來說明該鏡像的作者以及其他信息。

  • CMD

指定容器啟動(dòng)時(shí)要運(yùn)行的命令碍沐,存放在一個(gè)數(shù)組結(jié)構(gòu)中:CMD ["/bin/bash", "-l"]狸捅。Docker run命令可以覆蓋CMD指令。在Dockerfile中只能指定一條CMD指令累提,如果指定多條尘喝,只有最后一條指令有效。

  • RUN

在當(dāng)前鏡像上執(zhí)行指定命令斋陪,并提交為新鏡像朽褪,后續(xù)的RUN都在之前RUN提交后的鏡像為基礎(chǔ)上執(zhí)行置吓。RUN產(chǎn)生的緩存在下一次構(gòu)建時(shí)不會(huì)失效,可以使用--no-cache選項(xiàng)清除緩存缔赠。

  • ENTRYPOINT

與CMD指令類似衍锚,但提供的命令不會(huì)被run命令覆蓋,run命令行中指定的任何參數(shù)都會(huì)被傳遞給ENTRYPOINT指令嗤堰。每個(gè)Dockerfile中只能有一個(gè)ENTRYPOINT戴质,當(dāng)指定多個(gè)時(shí),只有最后一個(gè)生效梁棠。與CMD指令聯(lián)合使用置森,既可以實(shí)現(xiàn)指定選項(xiàng)的參數(shù),又可以實(shí)現(xiàn)不指定參數(shù)時(shí)的默認(rèn)行為符糊。

ENTRYPOINT ["/usr/sbin/nginx"]
CMD ["-h"]
  • EXPOSE <port>

告訴Docker該容器內(nèi)的應(yīng)用程序?qū)?huì)使用容器的哪個(gè)端口。

  • WORKDIR

當(dāng)創(chuàng)建一個(gè)新容器時(shí)呛凶,在容器內(nèi)部設(shè)置一個(gè)工作目錄男娄,CMD或ENTRYPOINT指定的程序在此目錄下執(zhí)行。在執(zhí)行run命令時(shí)漾稀,可以通過-w參數(shù)設(shè)置工作目錄模闲,此時(shí)會(huì)覆蓋WORKDIR的設(shè)置。

WORKDIR /opt/webapp
  • ENV

用來在鏡像構(gòu)建過程中設(shè)置環(huán)境變量崭捍,該環(huán)境變量可以在后續(xù)的RUN指令中使用尸折,如同在命令前面指定前綴:

ENV RVM_PATH /home/rvm/
RUN gem install unicorn

相當(dāng)于:

RVM_PATH=/home/rvm/ gem install unicorn

也可以在其他指令中直接使用環(huán)境變量:

ENV TARGET_DIR /opt/app
WORKDIR $TARGET_DIR

這些環(huán)境變量會(huì)被持久保存到所創(chuàng)建的容器中。如果在run命令行中使用-e參數(shù)來傳遞環(huán)境變量殷蛇,則這些變量只會(huì)在運(yùn)行時(shí)有效实夹。

  • USER

用來指定鏡像以什么用戶去運(yùn)行容器,可以指定用戶名/UID/GID等粒梦,默認(rèn)為root亮航。也可以在run命令中使用-u參數(shù)來覆蓋指令指定的值。

USER user:group
  • VOLUME

用來向新創(chuàng)建的容器添加卷匀们。卷是可以存在于一個(gè)或多個(gè)容器內(nèi)的特定目錄缴淋,提供共享數(shù)據(jù)或?qū)?shù)據(jù)進(jìn)行持久化。

VOLUME ["/opt/project"]
  • ADD

用來將構(gòu)建環(huán)境下的文件和目錄復(fù)制到鏡像中泄朴,需要源文件位置和目的文件位置兩個(gè)參數(shù)重抖。

ADD hello.txt /opt/app/hello.txt

如果目的地址以“/”結(jié)尾,則Docker認(rèn)為源位置指向的是目錄祖灰,否則钟沛,認(rèn)為源位置指向的是文件。如果將歸檔文件指定為源文件時(shí)夫植,Docker會(huì)自動(dòng)將文件解壓讹剔。如果通過ADD指令向鏡像添加一個(gè)文件或目錄油讯,將會(huì)使后續(xù)指令不能繼續(xù)使用之前的構(gòu)建緩存。

  • COPY

與ADD指令相似延欠,但COPY指令只復(fù)制文件陌兑,不會(huì)去做文件提取和解壓的工作,也不支持遠(yuǎn)程URL由捎。

COPY conf.d/ /etc/apache/
  • ONBUILD

為鏡像添加一個(gè)觸發(fā)器兔综,當(dāng)一個(gè)鏡像被用做其他鏡像的基礎(chǔ)鏡像時(shí),該鏡像中的觸發(fā)器將會(huì)被執(zhí)行狞玛。觸發(fā)器可以是任何構(gòu)建指令软驰,會(huì)在構(gòu)建過程中插入新的指令。這些指令是緊跟在FROM之后指定的心肪。FROM锭亏、MAINTAINER、ONBUILD指令不能用在ONBUILD指令中硬鞍,防止構(gòu)建過程中產(chǎn)生遞歸調(diào)用慧瘤。

3、最佳實(shí)踐

  • 使用.dockerignore文件

為了在構(gòu)建過程中更加高效固该,應(yīng)該使用該文件過濾掉不需要的文件或目錄

  • 避免安裝不需要的軟件包

為了降低復(fù)雜度锅减、依賴性、文件大小伐坏、構(gòu)建時(shí)間怔匣,應(yīng)該避免安裝額外的包

  • 每個(gè)容器只跑一個(gè)進(jìn)程

為了解耦,應(yīng)該一個(gè)容器只單獨(dú)運(yùn)行一個(gè)應(yīng)用程序

  • 最小化層級(jí)

每執(zhí)行一個(gè)指令桦沉,都會(huì)有一次鏡像提交每瞒,應(yīng)該考慮可讀性和最小化層級(jí)之間的平衡

  • 多行參數(shù)排序

為了增強(qiáng)可讀性,應(yīng)該通過字母進(jìn)行排序永部,并使用換行

  • 創(chuàng)建緩存

為了有效地利用緩存独泞,應(yīng)該保持Dockerfile的一致,并盡量在文件末尾進(jìn)行修改

五苔埋、端口映射

Docker通過端口綁定主機(jī)系統(tǒng)的接口懦砂,允許非本地客戶端訪問容器內(nèi)部運(yùn)行的服務(wù)。

查看容器內(nèi)部端口所映射的外部端口:

docker port <container_id>

端口映射:

docker run -P --expose <port> <image_name> <command>
  • --expose 指定容器對(duì)外提供的端口
  • -P 自動(dòng)映射容器對(duì)外提供的端口组橄,映射的端口從未被使用的端口池中自動(dòng)選擇
  • -p 指定端口映射荞膘,格式為ip:hostPort:containerPort

六、網(wǎng)絡(luò)配置

1玉工、橋接

Docker通過Linux橋接提供容器之間的通信羽资,docker0橋接就是用來實(shí)現(xiàn)此目的。當(dāng)Docker守護(hù)進(jìn)程啟動(dòng)時(shí):

  • 如果docker0不存在遵班,則創(chuàng)建docker0橋接
  • 搜索與當(dāng)前路由不沖突的ip段
  • 在ip段中選擇一個(gè)ip
  • 分配該ip給docker0橋接

2屠升、網(wǎng)絡(luò)模式

當(dāng)Docker創(chuàng)建容器時(shí)潮改,可以使用--net選項(xiàng)來指定容器的網(wǎng)絡(luò)模式,默認(rèn)為橋接模式腹暖。

  • host模式

如果使用該模式汇在,容器會(huì)和宿主機(jī)共用一個(gè)網(wǎng)絡(luò)命名空間,使用宿主機(jī)的ip和端口脏答,不會(huì)虛擬自己的網(wǎng)卡糕殉、配置自己的ip等。

  • container模式

該模式指定新創(chuàng)建的容器與其他容器共享一個(gè)網(wǎng)絡(luò)命名空間殖告,不會(huì)創(chuàng)建自己的網(wǎng)卡阿蝶、配置自己的ip等。

  • none模式

該模式所創(chuàng)建的容器擁有自己的網(wǎng)絡(luò)命名空間黄绩,但不會(huì)為容器進(jìn)行任何網(wǎng)絡(luò)配置羡洁,需要手動(dòng)為容器添加網(wǎng)卡、配置ip等宝与。

  • bridge模式

該模式會(huì)為每一個(gè)容器分配網(wǎng)絡(luò)命名空間焚廊、設(shè)置ip等,并將容器連接到一個(gè)虛擬網(wǎng)橋docker0上习劫。每個(gè)容器都會(huì)配置同docker0的ip相同網(wǎng)段的專用ip地址,docker0的ip地址被用于所有容器的默認(rèn)網(wǎng)關(guān)嚼隘。Docker一般會(huì)使用172.17.0.0/16網(wǎng)段為容器分配ip诽里,并將172.17.42.1/16分配給docker0網(wǎng)橋。

查看當(dāng)前docker0的ip:

ifconfig docker0

七飞蛹、數(shù)據(jù)管理

1谤狡、數(shù)據(jù)卷

是一個(gè)或多個(gè)容器指定專門的目錄,實(shí)現(xiàn)持久化或共享數(shù)據(jù)卧檐,默認(rèn)是可讀寫的墓懂。

  • 可以在容器之間共享和重用
  • 數(shù)據(jù)改變是直接修改的
  • 數(shù)據(jù)改變不會(huì)被包括在容器中
  • 是持久性的,直到?jīng)]有容器使用它

為新建容器創(chuàng)建新的數(shù)據(jù)卷霉囚,可以使用多次-v選項(xiàng)掛載多個(gè)數(shù)據(jù)卷:

docker run -v <volumn>

掛載宿主機(jī)的目錄到新建容器:

docker run -v <hostpath>:<volumn>

2捕仔、數(shù)據(jù)卷容器

如果想在容器間共享持久性數(shù)據(jù),或使用在非持久性的容器上盈罐,最好的方法是創(chuàng)建一個(gè)數(shù)據(jù)卷容器榜跌。不同的容器可以掛載同一個(gè)數(shù)據(jù)卷容器,也可以繼承掛載了數(shù)據(jù)卷容器的容器盅粪。

創(chuàng)建數(shù)據(jù)卷容器:

docker run -d -v <volumn_name>

在容器中掛載數(shù)據(jù)卷容器钓葫,無論數(shù)據(jù)卷容器是否運(yùn)行:

docker run --volumes-from <container>

3、數(shù)據(jù)卷的備份票顾、恢復(fù)础浮、遷移

啟動(dòng)新容器并且從其他容器中掛載卷帆调,掛載當(dāng)前目錄到容器的backup目錄,完成之后刪除容器:

docker run --rm --volumes-from <container> -v $(pwd):/backup <image> <command>

可以恢復(fù)給同一個(gè)容器或遷移到另一個(gè)容器:

docker run -v <volumn>
docker run --rm --volumes-from <container> -v $(pwd):/backup <image> <command>

4豆同、數(shù)據(jù)卷的刪除

數(shù)據(jù)卷只有以下兩種情況才能被刪除:

  • 刪除容器時(shí)添加了-v選項(xiàng)
  • 運(yùn)行容器時(shí)添加了--rm選項(xiàng)

八番刊、容器鏈接

Docker允許把多個(gè)容器鏈接在一起進(jìn)行通信,父容器可以訪問子容器的信息诱告。

1撵枢、命名

創(chuàng)建容器時(shí),如果不知道容器名字精居,默認(rèn)會(huì)自動(dòng)創(chuàng)建一個(gè)锄禽,推薦給容器命名。在創(chuàng)建容器時(shí)靴姿,使用--name選項(xiàng)給容器自定義名字沃但,容器名字必須唯一。

2佛吓、鏈接

鏈接允許容器之間進(jìn)行安全通信宵晚,創(chuàng)建容器時(shí)使用--link選項(xiàng)創(chuàng)建鏈接。

docker run --name <container> --link <container>:<alias>

一個(gè)鏈接允許一個(gè)源容器提供信息訪問給一個(gè)接收容器维雇。使用鏈接淤刃,可以避免對(duì)外公開任何端口給外部容器。

Docker通過兩種方式提供鏈接信息給接收容器:

  • 環(huán)境變量

在接收容器上設(shè)置一些環(huán)境變量吱型,以獲取源容器的相關(guān)信息逸贾。這些環(huán)境變量只設(shè)置給容器中的第一個(gè)進(jìn)程,如一些守護(hù)進(jìn)程津滞。

  • 更新/etc/hosts文件

在接收容器上添加相關(guān)主機(jī)條目到/etc/hosts中铝侵。該文件在源容器重啟之后會(huì)自動(dòng)更新IP地址,而環(huán)境變量中的IP地址則不會(huì)自動(dòng)更新触徐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咪鲜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子撞鹉,更是在濱河造成了極大的恐慌疟丙,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孔祸,死亡現(xiàn)場離奇詭異隆敢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)崔慧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門拂蝎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惶室,你說我怎么就攤上這事温自⌒酰” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵悼泌,是天一觀的道長松捉。 經(jīng)常有香客問我,道長馆里,這世上最難降的妖魔是什么隘世? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮鸠踪,結(jié)果婚禮上丙者,老公的妹妹穿的比我還像新娘。我一直安慰自己营密,他們只是感情好械媒,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著评汰,像睡著了一般纷捞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上被去,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天主儡,我揣著相機(jī)與錄音,去河邊找鬼惨缆。 笑死缀辩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的踪央。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼瓢阴,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼畅蹂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起荣恐,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤液斜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后叠穆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體少漆,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年硼被,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了示损。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嚷硫,死狀恐怖检访,靈堂內(nèi)的尸體忽然破棺而出始鱼,到底是詐尸還是另有隱情,我是刑警寧澤脆贵,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布医清,位于F島的核電站,受9級(jí)特大地震影響卖氨,放射性物質(zhì)發(fā)生泄漏会烙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一筒捺、第九天 我趴在偏房一處隱蔽的房頂上張望柏腻。 院中可真熱鬧,春花似錦焙矛、人聲如沸葫盼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贫导。三九已至,卻和暖如春蟆盹,著一層夾襖步出監(jiān)牢的瞬間孩灯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工逾滥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留峰档,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓寨昙,卻偏偏與公主長得像讥巡,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舔哪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一欢顷、Docker 簡介 Docke...
    極客圈閱讀 10,473評(píng)論 0 120
  • Docker是什么 Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器...
    beyound87閱讀 306評(píng)論 0 1
  • 五捉蚤、Docker 端口映射 無論如何抬驴,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪問不到的。此外缆巧,除了...
    R_X閱讀 1,738評(píng)論 0 7
  • 自我功能在面臨現(xiàn)實(shí)中的挫折布持,每個(gè)人的應(yīng)對(duì)方式會(huì)不同。相對(duì)功能良好的狀態(tài)是陕悬,有一定的焦慮度题暖。例如考試失敗,是有點(diǎn)難受...
    鄭小p閱讀 291評(píng)論 0 0
  • 1逞敷,沒有人哭,沒有人懊惱灌侣,沒有人故意喝醉推捐。只有滿地的祝福與胡鬧。一場名為青春的潮水淹沒了我們侧啼。退浪時(shí)牛柒,渾身濕透的我...
    jinxingri527閱讀 1,195評(píng)論 2 11