久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      本篇文章給大家?guī)砹岁P(guān)于docker核心技術(shù)之容器操作,以及Dockerfile詳解等等相關(guān)問題,希望對大家有幫助。

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      一. Docker

      1. 簡介

      • 基于Linux內(nèi)核的Cgroup, Namespace, 以及Union FS等技術(shù),對進程進行封裝隔離,屬于操作系統(tǒng)層面的虛擬技術(shù),由于隔離的進程獨立于宿主和其它的隔離進程,因此稱為容器
      • 最初實現(xiàn)是基于LXC, 從0.7以后開始去除LXC, 轉(zhuǎn)而使用自行開發(fā)的Libcontainer, 從1.11開始, 則進一步演進為使用runC和Containerd
      • Docker在容器的基礎(chǔ)上,進行了進一步的封裝,從文件系統(tǒng)、網(wǎng)絡(luò)互聯(lián)到進程隔離等等,極大的簡化了容器的創(chuàng)建和維護,使得Docker技術(shù)比虛擬機技術(shù)更為輕便、快捷

      2. Docker優(yōu)勢

      • 更高效地利用系統(tǒng)資源
      • 更快速的啟動時間
      • 一致的運行環(huán)境
      • 持續(xù)交付和部署
      • 更輕松的遷移
      • 更輕松地維護和擴展

      3. Docker與虛擬機對比

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      二. Docker安裝

      參考文章安裝: Install Docker Engine on Ubuntu | Docker Documentation

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      三. 容器操作

      • 啟動:

      docker run:

      -it 交互

      -d 后臺運行

      -p 端口映射

      -v 磁盤掛載

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 啟動已終止容器

      docker start

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 停止容器

      docker stop

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 查看容器進程

      docker ps

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 查看容器細(xì)節(jié)

      docker inspect

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 拷貝文件到容器內(nèi)

      docker cp file1 <containerid>:/file_to_path

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • docker退出容器,而不關(guān)閉容器: ctrl+q+p

      • docker退出容器,而關(guān)閉容器: exit

      • 查詢docker所有鏡像

      docker images

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • Docker鏡像倉庫

      Docker hub: https://hub.docker.com

      創(chuàng)建私有鏡像倉庫: docker run -d -p 5000:5000 registry

      四. Dockerfile詳解

      Dockerfile一般分為四個部分:基礎(chǔ)鏡像信息、維護信息、鏡像操作指令和容器啟動時操作指令

      • 常用命令

      FROM:指定基礎(chǔ)鏡像, 必須為第一個指令

      格式:

      FROM <image>

      FROM <image>:<tag>

      FROM <image>@<digest>

      示例:

      FROM ubuntu

      MAINTAINER: 維護信息

      格式:

      MAINTAINER <name>

      示例

      MAINTAINER ribbon

      RUN:構(gòu)建鏡像時執(zhí)行的命令

      格式:

      shell執(zhí)行:RUN <command>

      exec執(zhí)行:RUN ["executable", "param1", "param2"]

      示例:

      RUN apk update

      RUN ["/etc/execfile", "arg1", "arg2"]

      RUN apt-get update && apt-get install這兩條命令永遠(yuǎn)用&&連接,否則apt-get update構(gòu)建層被緩存,會導(dǎo)致新package無法安裝

      ADD: 將本地文件添加到容器中,tar等類型會自動解壓,可以訪問網(wǎng)絡(luò)資源,類似于wget

      格式:

      ADD <src> … <dest>

      示例:

      ADD bin/amd64/httpserver /httpserver

      COPY: 功能類似于ADD,但是不會解壓縮文件,不能訪問網(wǎng)絡(luò)資源

      在Dockerfile中使用multi-stage: Dockerfile 中的 multi-stage(多階段構(gòu)建) – sparkdev – 博客園

      格式:

      COPY<src> … <dest>

      示例:

      COPYbin/amd64/httpserver /httpserver

      CMD: 構(gòu)建容器后調(diào)用,也就是在容器啟動時才進行調(diào)用

      格式:

      CMD ["executable","param1","param2"] (執(zhí)行可執(zhí)行文件,優(yōu)先)
      CMD ["param1","param2"] (設(shè)置了ENTRYPOINT,則直接調(diào)用ENTRYPOINT添加參數(shù))
      CMD command param1 param2 (執(zhí)行shell內(nèi)部命令)

      示例:

      CMD ["ethtool", "–help"]

      CMD echo "1111"

      ENTRTPOINT: 配置容器,使其可執(zhí)行化。

      格式:

      ENTRYPOINT ["executable", "param1", "param2"] (可執(zhí)行文件, 優(yōu)先)
      ENTRYPOINT command param1 param2 (shell內(nèi)部命令)

      范例:

      ENTRYPOINT /httpserver

      CMD [-c]

      LABAL: 用于為鏡像添加源數(shù)據(jù)

      格式:

      LABEL <key>=<value> <key>=<value> <key>=<value> …

      范例:

      LABEL multi.label1="value1" multi.label2="value2" other="value3"

      ENV: 設(shè)置環(huán)境變量

      格式:

      ENV <key> <value>

      范例:

      ENV MY_SERVICE_PORT=80 UDP_PORT=90

      EXPOSE: 指定外界交互的端口

      格式:

      EXPOSE <port> [<port>…]

      示例:

      EXPOSE 80

      EXPOSE 80/tcp

      EXPOSE 80 90

      VOLUME: 用于指定持久化目錄

      格式:

      VOLUME [<path>]

      范例:

      VOLUME ["/data", "/usr1/jenkins"]

      USER:指定運行容器時的用戶名或 UID,后續(xù)的 RUN 也會使用指定用戶。

      格式:
        USER user
        USER user:group
        USER uid
        USER uid:gid
        USER user:gid
        USER uid:group

      示例:
        USER www

      ARG: 用于指定傳遞給構(gòu)建運行時的變量

      格式:
      ARG <name>[=<default value>]
      示例:
      ARG build_user=ribbon

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      五. Linux NameSpace詳解

      • NamesSpace詳解:

      Linux NameSpace_Frank_Abagnale的博客-CSDN博客 這篇文章比較詳細(xì)的介紹,可以參考這篇

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • NameSpace的常用操作

      • 查看當(dāng)前系統(tǒng)的namespace:

      lsns -t <type>

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 查看某進程的namespace:

      ls -la /proc/<pid>/ns/

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 查看某namespace運行命令

      nsenter -t <pid> -n

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      六. Linux Cgroups詳解

      • Cgroups詳解

      容器核心:cgroups – 簡書 可以參考這篇文章來進行了解

      • 模擬Cgroups控制CPU資源

      通過模擬來更好的熟悉Cgroups控制資源的效果, 首先創(chuàng)建cpudemo文件夾

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      執(zhí)行top可以看到busyloop占用兩個CPU資源最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      將進程添加進cgroup進程配置組

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      設(shè)置cpuquota

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      可以看到成功將占用200%CPU資源的降低成1%

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 模擬Cgroups超過限定memory資源被OOM kill

      /sys/fs/cgroup/memory目錄下創(chuàng)建memorydemo文件夾

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      運行消耗內(nèi)存程序, 使用watch查詢內(nèi)存使用情況

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      將進程配置進cgroups配置組最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      設(shè)置最大內(nèi)存大小

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      等待程序被OOM kill, dmesg可以看到殺死信息

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      備注:刪除自主創(chuàng)建的cgroup文件夾, 需要使用cgroup-tools

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      七. Union FS

      Docker前面使用的技術(shù)都是源于linux的技術(shù)并沒有創(chuàng)新,而Docker的創(chuàng)新正是文件系統(tǒng)。

      1. 概念:

      • 將不同目錄掛載在同一個虛擬文件系統(tǒng)下的文件系統(tǒng)
      • 支持為每一個成員目錄設(shè)定readonly、readwrite和without-able權(quán)限
      • 文件系統(tǒng)分層,對readonly權(quán)限的目錄可以進行邏輯上的修改,這里的修改屬于增量的,不影響readonly部分
      • 通常Union FS的用途: 多個disk掛載到同一個目錄下, 另一個是將readonly部分和writeable的目錄聯(lián)合在一起

      2. 圖解Union FS

      Docker鏡像的設(shè)計中,引入了層(layer)的概念,也就是說,用戶制作鏡像的每一步操作,都會生成一個層,也就是一個增量rootfs(一個目錄),這樣應(yīng)用A和應(yīng)用B所在的容器共同引用相同的ubuntu操作系統(tǒng)層、Golang環(huán)境層(作為只讀層),而各自有各自應(yīng)用程序?qū)?,和可寫層。啟動容器的時候通過UnionFS把相關(guān)的層掛載到一個目錄,作為容器的根文件系統(tǒng)。

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      3. 容器存儲驅(qū)動

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      4. 模擬Union FS更好理解效果
      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      由于docker當(dāng)前版本上使用的是overlayFS的存儲驅(qū)動,所以我們就以overlay掛載方式來進行實驗, overlayfs通過三個目錄:lower目錄、upper目錄、以及work目錄實現(xiàn),其中l(wèi)ower目錄可以是多個,work目錄為工作基礎(chǔ)目錄,掛載后內(nèi)容會被清空,且在使用過程中其內(nèi)容用戶不可見,最后聯(lián)合掛載完成給用戶呈現(xiàn)的統(tǒng)一視圖稱為為merged目錄。

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      執(zhí)行如下命令:

      mkdir upper lower merged work echo "lower" > lower/in_lower.txt echo "from lower" > lower/in_both.txt echo "from upper" > upper/in_both.txt echo "upper" > upper/in_upper.txt path=$(pwd) mount -t overlay overlay -o lowerdir=${path}/lower,upperdir=${path}/upper,workdir=${path}/work ${path}/merged

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享) 可以看到使用overlay存儲驅(qū)動文件掛載實現(xiàn)的效果。實驗完成后恢復(fù)環(huán)境需要先umount merged目錄后, 再將四個目錄進行刪除操作,先刪除其他的可能會出現(xiàn)rm: cannot remove 'merged/': Device or resource busy,導(dǎo)致merged目錄刪除不掉。

      八. Docker網(wǎng)絡(luò)

      1. 安裝工具

      Centos系統(tǒng):

      $ yum install bridge-utils

      Ubuntu系統(tǒng):

      $ apt-get install bridge-utils

      2. Docker網(wǎng)絡(luò)模式

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 查詢docker內(nèi)置的網(wǎng)絡(luò)模式

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • docker run選擇運行的網(wǎng)絡(luò)模式

      1)host模式:使用 –net=host 指定。 跟host公用一套net

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      2)none模式:使用 –net=none 指定。網(wǎng)絡(luò)配置需要由自己來進行配置

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      3)bridge模式:使用 –net=bridge 指定,默認(rèn)設(shè)置。

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      docker網(wǎng)絡(luò)邏輯圖 網(wǎng)橋和NAT

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      4)container模式:使用 –net=container:NAME_or_ID 指定。使用其他容器的網(wǎng)絡(luò)配置

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      網(wǎng)絡(luò)模式圖大概如下圖所示最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      3. 模擬Docker起網(wǎng)橋的操作

      • 創(chuàng)建–net=none nginx

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 創(chuàng)建network namespace

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 建立網(wǎng)絡(luò)namespace鏈接

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 檢查當(dāng)前已經(jīng)創(chuàng)建的網(wǎng)橋設(shè)備

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 創(chuàng)建veth對

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 進行A網(wǎng)絡(luò)配置

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 進行B網(wǎng)絡(luò)配置

      生成eth0網(wǎng)絡(luò)設(shè)備在nginx docker中

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      給eth0配置ip 網(wǎng)關(guān)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • nginx可以訪問

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 配置nat, 讓windows通過ip也可以訪問

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      • 使用完刪除指定nat規(guī)則

      最系統(tǒng)的掌握Docker核心技術(shù)(總結(jié)分享)

      推薦學(xué)習(xí):《docker視頻教程》

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號