Docker筆記

1恋博、Docker簡介

  • 開源的應(yīng)用容器引擎

  • 打包環(huán)境和應(yīng)用到一個輕量級雹仿,可移植的容器中重付,發(fā)布到任何 Linux 機器上勺像,規(guī)避了軟件跨環(huán)境遷移的問題

  • 沙箱機制障贸,相互隔離

1.1 安裝

sudo apt install docker-ce

1.2 架構(gòu)

0MaN8S
  • 守護進程(daemon):后臺服務(wù),管理一個 Docker 進程

  • 鏡像(image):相當(dāng)于一個 root 文件系統(tǒng)吟宦,打包了環(huán)境和應(yīng)用

  • 容器(container):鏡像運行時的實體篮洁,可以被創(chuàng)建,啟動殃姓,暫停袁波, 停止瓦阐,刪除

  • 倉庫(repository):保存鏡像文件

2、Docker命令

2.1 服務(wù)(守護進程)相關(guān)

  • 啟動
sudo systemctl start docker
  • 查看
sudo systemctl status docker
  • 停止
sudo systemctl stop docker
  • 重啟
sudo systemctl restart docker

2.2 鏡像相關(guān)

  • 查看
sudo docker images
  • 搜索
# 查看具體版本號需要去 hub.docker.com
sudo docker search ubuntu
  • 拉取
# 配置阿里云加速:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
sudo vim /etc/docker/daemon.json

{
    "registry-mirrors": ["加速地址"]
}

sudo systemctl daemon-reload
sudo systemctl restart docker

# 拉取鏡像
sudo docker pull ubuntu[:版本]
  • 刪除
sudo docker rmi ubuntu[:版本]

2.3 容器相關(guān)

  • 查看
# 要查看所有包括已停止運行的容器:加上參數(shù) -a
sudo docker ps
  • 創(chuàng)建
# 通過指定鏡像版本(不指定默認 latest )創(chuàng)建容器
# -i:在容器上打開一個標(biāo)準(zhǔn)輸入接口锋叨, -t:創(chuàng)建一個偽終端垄分,一般與 -i 連用來通過偽終端操作容器宛篇, 自定義啟動命令:如 bash娃磺,這會覆蓋鏡像定義的默認啟動命令
sudo docker run -it --name u1 ubuntu[:版本] [自定義啟動命令]

# -d:后臺創(chuàng)建并啟動容器,不會立即進入
# 如果沒有一個前臺運行的進程叫倍,容器是不會保持后臺運行的偷卧,所以不要隨便自定義啟動命令
sudo docker run -d --name u1 ubuntu[:版本] [自定義啟動命令]
  • 進入
# 只能進入正在運行的容器
sudo docker exec -it u1 bash
  • 啟動
sudo docker start u1

# 重啟
sudo docker restart u1
  • 停止
sudo docker stop u1
  • 刪除
# 不能刪除正在運行的容器
sudo docker rm u1
  • 查看信息
# 查看容器定義信息
sudo docker inspect u1

# 查看容器運行日志
sudo docker logs u1

3、Docker數(shù)據(jù)卷

3.1 簡介

  • 宿主機中的一個目錄(或文件)吆倦,與容器內(nèi)目錄(文件)綁定后听诸,同步它們的數(shù)據(jù)
  • 可以被多個容器同時掛載,一個容器也可以掛載多個數(shù)據(jù)卷
  • 數(shù)據(jù)持久化與數(shù)據(jù)交換

3.2 配置數(shù)據(jù)卷

# 創(chuàng)建啟動容器時蚕泽,-v 參數(shù)設(shè)置
# 容器內(nèi)目錄必須是絕對路徑晌梨,宿主機目錄可以相對,但相對的是 /var/lib/docker/volumes/须妻,并不是當(dāng)前路徑
# 目錄不存在會自動創(chuàng)建仔蝌,而文件不存在時會被當(dāng)成目錄創(chuàng)建并掛載
# 可用多個 -v 掛載多個
sudo docker run ... -v 宿主目錄(文件):容器內(nèi)目錄(文件) ... --name u1 ubuntu[:版本]

3.3 配置數(shù)據(jù)卷容器

配置一個專門的容器來掛載數(shù)據(jù)卷,其他容器掛載這個容器(這時候相當(dāng)于掛載同一個數(shù)據(jù)卷)來交換數(shù)據(jù)

sudo docker run ... -v 宿主目錄(文件):容器內(nèi)目錄(文件) ... --name u1 ubuntu[:版本]

# 其他容器掛載 u1
sudo docker run ... --volumes-from u1 --name u2 ubuntu[:版本]
sudo docker run ... --volumes-from u1 --name u3 ubuntu[:版本]

4荒吏、Docker應(yīng)用部署

4.1 搜索并拉取鏡像

sudo docker search mysql
sudo docker pull mysql:5.7

4.2 MySQL部署

# 宿主機創(chuàng)建MySQL目錄用來存儲數(shù)據(jù)信息
mkdir mysql
cd mysql

# 端口映射 宿主機:容器
sudo docker run -d \
-p 3306:3306 \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=111 \
--name m1 mysql:5.7

4.3 Nginx部署

mkdir nginx
cd nginx

sudo docker run -d \
-p 80:80 \
-v $PWD/conf.d:/etc/nginx/conf.d \
-v $PWD/logs:/var/log/nginx \
--name n1 nginx

5敛惊、Docker鏡像制作

5.1 Docker鏡像原理

0MatC8
  • Docker鏡像是由特殊的 文件系統(tǒng) 疊加 而成
  • 最底端使用宿主機的bootfs
  • 第二層是 rootfs,被稱為基礎(chǔ)鏡像
  • 最頂層為對外鏡像名绰更,下層鏡像稱為上層鏡像的父鏡像瞧挤,下載時會把父鏡像一并下載
  • 統(tǒng)一文件系統(tǒng)將不同層整合成了一個文件系統(tǒng),隱藏了多層的存在
  • 鏡像是只讀的儡湾,從一個鏡像啟動容器時特恬,會在頂層加載一個讀寫文件系統(tǒng)作為容器

5.2 方式一:容器轉(zhuǎn)鏡像

這種方式并不常用,因為打包后體積巨大不利于傳遞徐钠。

# 原容器中掛載的目錄(文件)不會被提交到鏡像
sudo docker commit 容器名(id) 鏡像名[:版本號]
# 鏡像打包
sudo docker save -o 文件名 鏡像名[:版本號]
# 鏡像還原
sudo docker load -i 文件名

5.3 方式二:Dockerfile

  • 包含多條指令的文本文件
  • 每條指令構(gòu)建一層癌刽,基于基礎(chǔ)鏡像
  • 提供完全一致的環(huán)境的構(gòu)建方法
  • 參照 DockerHub 上相關(guān)鏡像的寫法
  • 構(gòu)建
# 最后的 . 表示當(dāng)前路徑,是上下文目錄丹皱,構(gòu)建時會將路徑下所有文件發(fā)給Docker引擎供 COPY ADD 等命令調(diào)用
# 如果配置文件名不為 Dockerfile妒穴,可用 -f 指定文件名
sudo docker build -t 新鏡像名 .

5.4 Dockerfile常用關(guān)鍵字

  • FROM:基于哪個基礎(chǔ)鏡像
  • LABEL:鍵值對標(biāo)簽,為鏡像添加元數(shù)據(jù)
  • WORKDIR:指定運行目錄摊崭,為后續(xù)的 RUN讼油、CMD、COPY呢簸、ADD 等命令配置目標(biāo)目錄矮台,默認 /
  • COPY:將宿主機的文件拷貝到鏡像中去(原文件必須在build命令最后指定的路徑內(nèi))
  • RUN:構(gòu)建鏡像時運行的shell命令乏屯,由于DockerFile每條指令都會堆疊一層鏡像,所以最好使用 \ 換行和 && 連接命令來減少體積
  • CMD:容器運行時默認執(zhí)行的shell命令(多個CMD只有最后一個生效)

  • VOLUME:聲明容器內(nèi)多個路徑為匿名卷瘦赫,run容器時若沒有指定宿主機目錄與其關(guān)聯(lián)辰晕,則自動在宿主機創(chuàng)建目錄與其關(guān)聯(lián),目的是防止容器運行時產(chǎn)生太多數(shù)據(jù)确虱,如 log
  • EXPOSE:聲明容器運行時應(yīng)該暴露的端口
  • ENV:指定環(huán)境變量
  • ADD:和COPY一樣含友,并且還可以解壓縮,或者從url拷貝文件到鏡像中
  • USER:使用哪個用戶啟動校辩,默認root
  • ENTRYPOINT:和CMD一樣窘问,但是可以追加(必須使用exec格式:ENTRYPOINT [./entrypoint.sh,參數(shù)1宜咒,參數(shù)2……])
  • ONBUILD:當(dāng)構(gòu)建一個父鏡像時惠赫,父鏡像被子鏡像繼承時,ONBUILD被觸發(fā)

6故黑、服務(wù)編排(Docker Compose)

微服務(wù)架構(gòu)系統(tǒng)中一般包含多個微服務(wù)儿咱,每個微服務(wù)一般會部署多個實例,如果手動管理工作量就會很大:

  • 要構(gòu)建或拉取鏡像
  • 要創(chuàng)建多個容器
  • 要管理這些容器

服務(wù)編排就是按照一定的規(guī)則批量管理容器的方法场晶。Docker Compose 是一個編排多容器分布式部署的工具混埠,提供命令集管理容器化應(yīng)用的完整生命周期,使用步驟:

  • 利用 DockerFile 定義運行環(huán)境鏡像
  • 使用 docker-compose 配置文件定義組成應(yīng)用的各服務(wù)
  • 運行 docker-compose up 啟動應(yīng)用

6.1 安裝

sudo apt install docker-compose

6.2 編排一個 Nginx+Flask+MySQL 項目

  • 創(chuàng)建工作目錄
mkdir project
cd project
# 創(chuàng)建映射目錄
# Flask項目的代碼復(fù)制到myapp目錄下
mkdir -p nginx/conf.d
mkdir -p nginx/log
mkdir -p mysql/data
  • 編寫配置文件 docker-compose.yml
version: '3'

services:
    # 定義一個容器
    mysql:
        # 可以自定義容器名
        container_name: myapp-mysql
        image: mysql:8
        volumes:
            - ./mysql/data:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: qwerdfb
        ports:
            - "3306:3306"
    myapp:
        container_name: myapp-app
        # 可以基于一份Dockerfile制作鏡像并創(chuàng)建容器峰搪,如果同時指定image會以它命名鏡像
        build:
            context: ./myapp
            # 文件名不為Dockerfile時需要指定
            # dockerfile: ./myapp/Dockerfile
        # 暴露端口岔冀,并沒有與宿主機做映射,只允許被鏈接容器訪問
        expose:
            - "8000"
    nginx:
        container_name: myapp-nginx
        image: nginx
        volumes:
            - ./nginx/conf.d:/etc/nginx/conf.d
            - ./nginx/logs:/var/log/nginx
        ports:
            - "80:80"
  • 編寫Nginx程序配置 ./nginx/conf.d/myapp.conf
server {
        listen  80;  # 監(jiān)聽80端口來自外部的請求
        server_name  _;  # 如果映射了域名概耻,可以代替_

        # 為HTTP規(guī)則 / 設(shè)置轉(zhuǎn)發(fā)
        location / {
            proxy_pass  http://myapp:8000;  # 轉(zhuǎn)發(fā)到本地端口
            # 重寫一些請求首部
            proxy_set_header  Host  $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header  X-Forwarded-Proto  $scheme;
        }
}
  • 啟動
# 如果配置文件名不為 docker-compose.yml使套,可用 -f 指定文件名
# -d: 后臺創(chuàng)建并啟動所有容器
sudo docker-compose up
  • 查看所有容器狀態(tài)
sudo docker-compose ps
  • 停止容器
# 可通過 sudo docker-compose start 再次啟動
sudo docker-compose stop

# 刪除所有停止?fàn)顟B(tài)的容器
sudo docker-compose rm

# 停止并刪除容器,網(wǎng)絡(luò)
# --rmi all/local (刪除compose文件中定義的所有鏡像)/(刪除鏡像名為空的鏡像)
# -v 刪除已經(jīng)在compose文件中定義的和匿名的掛載在容器上的數(shù)據(jù)卷
sudo docker-compose down

7鞠柄、Docker網(wǎng)絡(luò)模式

7.1 網(wǎng)絡(luò)模式及簡單使用

安裝完 Docker 后侦高,系統(tǒng)自動創(chuàng)建了一個 docker0 網(wǎng)卡以及三種默認網(wǎng)絡(luò)模式

image-20210421095212280

Docker 安裝完成之后,會在宿主機虛擬一個網(wǎng)卡 docker0厌杜,容器在默認情況下啟動時會從此網(wǎng)段分配一個IP地址奉呛,同時 Docker0 是每個容器的默認網(wǎng)關(guān),這樣容器之間就能夠通過容器的 container-ip 直接通信夯尽。
但由于 Docker0 網(wǎng)卡是虛擬出來的瞧壮,外部網(wǎng)絡(luò)無法直接進行訪問,只能通過端口映射來訪問容器匙握,即 docker run 創(chuàng)建容器時候通過 -p 或 -P 參數(shù)來啟用

上面三種網(wǎng)絡(luò)模式可以在 docker run 時使用 --net 指定咆槽,它們的區(qū)別主要是:

  • host 模式:直接使用宿主機網(wǎng)卡,可以為容器提供最好的網(wǎng)絡(luò)性能圈纺,但不可避免的有網(wǎng)絡(luò)資源沖突問題的(如 ip 端口號)
  • none 模式:這種模式下的容器與世隔絕秦忿,只有自己的環(huán)回網(wǎng)卡lo
  • bridge 模式:默認模式麦射,容器連接到同一塊網(wǎng)卡(默認是 docker0),它們之間可以通過 ip 通信灯谣,指定 --link 容器名 后就可以使用容器名通信潜秋。同時,可以使用 docker network create 網(wǎng)絡(luò)名 來創(chuàng)建另一個橋接網(wǎng)絡(luò)胎许,這時 ifconfig 可以看到除 docker0 外多出了一個虛擬網(wǎng)卡峻呛,同時 docker network ls 可以看到新創(chuàng)建的模式為 bridge 的新網(wǎng)絡(luò),之后可以 --net 指定新的橋接網(wǎng)絡(luò)來實現(xiàn)不同的網(wǎng)絡(luò)隔離

7.2 docker-compose中指定網(wǎng)絡(luò)模式

docker-compose中指定網(wǎng)絡(luò)模式主要有以下幾種場景:

  • 未顯式聲明網(wǎng)絡(luò)

默認情況下呐萨,docker-compose 會為我們的應(yīng)用創(chuàng)建一個網(wǎng)絡(luò)(網(wǎng)絡(luò)名稱為 docker-compose.yml 所在文件夾名稱_default)杀饵,應(yīng)用的每個容器都會加入該網(wǎng)絡(luò)中。這樣谬擦,容器就可被該網(wǎng)絡(luò)中的其他容器訪問,不僅如此朽缎,該容器還能以容器名作為 hostname 被其他容器訪問(相當(dāng)于默認實現(xiàn)了 link)

  • 自定義網(wǎng)絡(luò)

以下文件為項目創(chuàng)建了兩個 docker 網(wǎng)絡(luò)惨远,假如文件在 myapp 目錄下,它們實際的名字分別為 myapp_front 和 myapp_back话肖,這種情況下實現(xiàn)了 nginx 和 db 的網(wǎng)絡(luò)隔離北秽,它們只能通過 app 通信

version: '3'
services:
  nginx:
    networks:
     - front
  app:
    networks:
     - front
     - back
  db:
    networks:
     - back
networks:
  front:
    driver: bridge
  back:
  • 配置默認網(wǎng)絡(luò)

其實就是設(shè)置 services 中的容器未指定 networks 時的默認網(wǎng)絡(luò),以下文件效果和未顯示聲明網(wǎng)絡(luò)相同(使用默認網(wǎng)絡(luò) myapp_default)

version: '3'
services:
  web:
  db:
networks:
  default:
    driver: bridge
  • 使用已存在的網(wǎng)絡(luò)

如應(yīng)用容器已經(jīng)啟動最筒,需要單獨部署 nginx 服務(wù)贺氓,可以將它加入到已經(jīng)存在的應(yīng)用網(wǎng)絡(luò)以獲得訪問應(yīng)用時更好的網(wǎng)絡(luò)性能

version: '3'
services:
  nginx:
    networks:
      - myapp_default
networks:
  myapp_default:
    external: true

8、Docker倉庫

將自己的應(yīng)用制作好鏡像后床蜘,可以上傳到 Docker 倉庫保存辙培,后面 pull 下來就直接可以使用,Docker 官方倉庫 Docker Hub 就提供了鏡像托管服務(wù)邢锯,國內(nèi)阿里云也有相同服務(wù)扬蕊,此外,我們也可以自己搭建私有倉庫來管理團隊內(nèi)部使用的鏡像丹擎。

8.1 Docker Hub

首先尾抑,需要擁有一個 Docker Hub 賬戶,沒有的話先去注冊一個吧蒂培。進入 Repositories --> Create 來創(chuàng)建一個倉庫再愈,一般一個倉庫存放一個鏡像的所有版本,倉庫命名一般為鏡像名就好护戳。

# 操作之前需要先登錄
sudo docker login --username 用戶名

# 打標(biāo)簽將鏡像歸為某一倉庫翎冲,版本默認為latest
sudo docker tag 鏡像名或id 用戶名/倉庫名[:版本]
# 上傳鏡像
sudo docker push 用戶名/倉庫名[:版本]
# 拉取鏡像
# 如果上一步成功且創(chuàng)建的是公開倉庫的話這時候應(yīng)該能搜索到自己的鏡像了,當(dāng)然因為網(wǎng)絡(luò)情況一般情況下是不成功的
sudo docker pull 用戶名/倉庫名[:版本]

8.2 阿里云

由于國內(nèi)網(wǎng)絡(luò)環(huán)境的種種限制灸异,阿里云提供的Docker倉庫是一個更好的選擇府适,同樣要先有一個阿里云賬戶羔飞,然后去 容器鏡像服務(wù) 創(chuàng)建倉庫,地域選擇離自己近的檐春,設(shè)置好命名空間逻淌,值得一提的是,DockerHub默認以用戶名作為命名空間疟暖,而阿里云可以創(chuàng)建三個卡儒。代碼源選擇本地倉庫,創(chuàng)建好后點擊倉庫名進入就會有操作指南俐巴。

# 同樣要先登錄先登錄骨望,不同的是要加上阿里云站點,注意倉庫地域不同站點也不一樣
sudo docker login --username 用戶名 registry.cn-shanghai.aliyuncs.com

# 打標(biāo)簽
sudo docker tag 鏡像名或id registry.cn-shanghai.aliyuncs.com/命名空間/倉庫名[:版本]
# 上傳鏡像
sudo docker push registry.cn-shanghai.aliyuncs.com/命名空間/倉庫名[:版本]
# 拉取鏡像
sudo docker pull registry.cn-shanghai.aliyuncs.com/命名空間/倉庫名[:版本]

8.3 私有倉庫

私有倉庫其實就是把倉庫的服務(wù)端部署在自己的服務(wù)器上欣舵,一般用于一個團隊內(nèi)部使用擎鸠。

私有倉庫它首先也是一個鏡像,我們根據(jù)這個鏡像啟動一個容器缘圈,然后外部訪問這個容器就像前面訪問 Docker Hub 或者阿里云的倉庫服務(wù)一樣劣光。

sudo docker pull registry
# 啟動容器,容器內(nèi)對外暴露的端口為 5000
sudo docker run -id --name registry1 -p 5000:5000 registry

# 在 daemon 配置文件內(nèi)添加一條糟把,讓Docker信任此私有倉庫
# 如果私有倉庫部署在本機绢涡,ip為本地地址 127.0.0.1
sudo vim /etc/docker/daemon.json

{"insecure-registries":["部署私有倉庫的服務(wù)器ip:5000"]}

# 重啟docker服務(wù)
sudo systemctl restart docker
# 如果私有倉庫部署在本機,還需要重啟私有倉庫容器
sudo docker start registry1

# 接下來使用步驟就和 DockerHub遣疯,阿里云大同小異雄可,由于是私有倉庫,也就不再需要登錄和命名空間了
# 打標(biāo)簽
sudo docker tag 鏡像名或id 私有倉庫服務(wù)器ip:5000/倉庫名[:版本]
# 上傳鏡像
sudo docker push 私有倉庫服務(wù)器ip:5000/倉庫名[:版本]
# 拉取鏡像
sudo docker pull 私有倉庫服務(wù)器ip:5000/倉庫名[:版本]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缠犀,一起剝皮案震驚了整個濱河市数苫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌夭坪,老刑警劉巖文判,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異室梅,居然都是意外死亡戏仓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門亡鼠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赏殃,“玉大人,你說我怎么就攤上這事间涵∪嗜龋” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵勾哩,是天一觀的道長抗蠢。 經(jīng)常有香客問我举哟,道長,這世上最難降的妖魔是什么迅矛? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任妨猩,我火速辦了婚禮,結(jié)果婚禮上秽褒,老公的妹妹穿的比我還像新娘壶硅。我一直安慰自己,他們只是感情好销斟,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布庐椒。 她就那樣靜靜地躺著,像睡著了一般蚂踊。 火紅的嫁衣襯著肌膚如雪约谈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天悴势,我揣著相機與錄音窗宇,去河邊找鬼。 笑死特纤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的侥加。 我是一名探鬼主播捧存,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼担败!你這毒婦竟也來了昔穴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤提前,失蹤者是張志新(化名)和其女友劉穎吗货,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狈网,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡宙搬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拓哺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勇垛。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖士鸥,靈堂內(nèi)的尸體忽然破棺而出闲孤,到底是詐尸還是另有隱情,我是刑警寧澤烤礁,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布讼积,位于F島的核電站肥照,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏勤众。R本人自食惡果不足惜舆绎,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望决摧。 院中可真熱鬧亿蒸,春花似錦、人聲如沸掌桩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽波岛。三九已至茅坛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間则拷,已是汗流浹背贡蓖。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留煌茬,地道東北人斥铺。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像坛善,于是被迫代替她去往敵國和親晾蜘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

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

  • docker命令: Docker的三大核心概念:鏡像眠屎、容器剔交、倉庫 鏡像:類似虛擬機的鏡像、用俗話說就是安裝文件改衩。 ...
    balabala19閱讀 292評論 0 0
  • Docker為什么出現(xiàn)岖常? 解決開發(fā)和運維環(huán)境的不同導(dǎo)致的各種問題 隔離打包封裝 Docker歷史 2010年,美國...
    Jonescy閱讀 411評論 0 0
  • 第一章節(jié): DOCKER的安裝與使用 1葫督、Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于 3.10 竭鞍,查看本...
    可笑可樂閱讀 300評論 0 1
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友候衍。感恩相遇笼蛛!感恩不離不棄。 中午開了第一次的黨會蛉鹿,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,567評論 0 11
  • 彩排完滨砍,天已黑
    劉凱書法閱讀 4,220評論 1 3