成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

最系統的掌握Docker核心技術(總結分享)

本篇文章給大家帶來了關于docker核心技術之容器操作,以及Dockerfile詳解等等相關問題,希望對大家有幫助。

最系統的掌握Docker核心技術(總結分享)

一. Docker

1. 簡介

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

2. Docker優勢

  • 更高效地利用系統資源
  • 更快速的啟動時間
  • 一致的運行環境
  • 持續交付和部署
  • 更輕松的遷移
  • 更輕松地維護和擴展

3. Docker與虛擬機對比

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

二. Docker安裝

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

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)最系統的掌握Docker核心技術(總結分享)

三. 容器操作

  • 啟動:

docker run:

-it 交互

-d 后臺運行

-p 端口映射

-v 磁盤掛載

最系統的掌握Docker核心技術(總結分享)

  • 啟動已終止容器

docker start

最系統的掌握Docker核心技術(總結分享)

  • 停止容器

docker stop

最系統的掌握Docker核心技術(總結分享)

  • 查看容器進程

docker ps

最系統的掌握Docker核心技術(總結分享)

  • 查看容器細節

docker inspect

最系統的掌握Docker核心技術(總結分享)

  • 拷貝文件到容器內

docker cp file1 <containerid>:/file_to_path

最系統的掌握Docker核心技術(總結分享)

  • docker退出容器,而不關閉容器: ctrl+q+p

  • docker退出容器,而關閉容器: exit

  • 查詢docker所有鏡像

docker images

最系統的掌握Docker核心技術(總結分享)

  • Docker鏡像倉庫

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

創建私有鏡像倉庫: docker run -d -p 5000:5000 registry

四. Dockerfile詳解

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

  • 常用命令

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

格式:

FROM <image>

FROM <image>:<tag>

FROM <image>@<digest>

示例:

FROM ubuntu

MAINTAINER: 維護信息

格式:

MAINTAINER <name>

示例

MAINTAINER ribbon

RUN:構建鏡像時執行的命令

格式:

shell執行:RUN <command>

exec執行:RUN ["executable", "param1", "param2"]

示例:

RUN apk update

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

RUN apt-get update && apt-get install這兩條命令永遠用&&連接,否則apt-get update構建層被緩存,會導致新package無法安裝

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

格式:

ADD <src> … <dest>

示例:

ADD bin/amd64/httpserver /httpserver

COPY: 功能類似于ADD,但是不會解壓縮文件,不能訪問網絡資源

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

格式:

COPY<src> … <dest>

示例:

COPYbin/amd64/httpserver /httpserver

CMD: 構建容器后調用,也就是在容器啟動時才進行調用

格式:

CMD ["executable","param1","param2"] (執行可執行文件,優先)
CMD ["param1","param2"] (設置了ENTRYPOINT,則直接調用ENTRYPOINT添加參數)
CMD command param1 param2 (執行shell內部命令)

示例:

CMD ["ethtool", "–help"]

CMD echo "1111"

ENTRTPOINT: 配置容器,使其可執行化

格式:

ENTRYPOINT ["executable", "param1", "param2"] (可執行文件, 優先)
ENTRYPOINT command param1 param2 (shell內部命令)

范例:

ENTRYPOINT /httpserver

CMD [-c]

LABAL: 用于為鏡像添加源數據

格式:

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

范例:

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

ENV: 設置環境變量

格式:

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,后續的 RUN 也會使用指定用戶。

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

示例:
  USER www

ARG: 用于指定傳遞給構建運行時的變量

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

最系統的掌握Docker核心技術(總結分享)

五. Linux NameSpace詳解

  • NamesSpace詳解:

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

最系統的掌握Docker核心技術(總結分享)

  • NameSpace的常用操作

  • 查看當前系統的namespace:

lsns -t <type>

最系統的掌握Docker核心技術(總結分享)

  • 查看某進程的namespace:

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

最系統的掌握Docker核心技術(總結分享)

  • 查看某namespace運行命令

nsenter -t <pid> -n

最系統的掌握Docker核心技術(總結分享)

六. Linux Cgroups詳解

  • Cgroups詳解

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

  • 模擬Cgroups控制CPU資源

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

最系統的掌握Docker核心技術(總結分享)

執行top可以看到busyloop占用兩個CPU資源最系統的掌握Docker核心技術(總結分享)

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

最系統的掌握Docker核心技術(總結分享)

設置cpuquota

最系統的掌握Docker核心技術(總結分享)

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

最系統的掌握Docker核心技術(總結分享)

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

/sys/fs/cgroup/memory目錄下創建memorydemo文件夾

最系統的掌握Docker核心技術(總結分享)

運行消耗內存程序, 使用watch查詢內存使用情況

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

將進程配置進cgroups配置組最系統的掌握Docker核心技術(總結分享)

設置最大內存大小

最系統的掌握Docker核心技術(總結分享)

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

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

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

最系統的掌握Docker核心技術(總結分享)

七. Union FS

Docker前面使用的技術都是源于linux的技術并沒有創新,而Docker的創新正是文件系統。

1. 概念:

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

2. 圖解Union FS

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

最系統的掌握Docker核心技術(總結分享)

3. 容器存儲驅動

最系統的掌握Docker核心技術(總結分享)

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

由于docker當前版本上使用的是overlayFS的存儲驅動,所以我們就以overlay掛載方式來進行實驗, overlayfs通過三個目錄:lower目錄、upper目錄、以及work目錄實現,其中lower目錄可以是多個,work目錄為工作基礎目錄,掛載后內容會被清空,且在使用過程中其內容用戶不可見,最后聯合掛載完成給用戶呈現的統一視圖稱為為merged目錄。

最系統的掌握Docker核心技術(總結分享)

執行如下命令:

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

最系統的掌握Docker核心技術(總結分享)

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

八. Docker網絡

1. 安裝工具

Centos系統:

$ yum install bridge-utils

Ubuntu系統:

$ apt-get install bridge-utils

2. Docker網絡模式

最系統的掌握Docker核心技術(總結分享)

  • 查詢docker內置的網絡模式

最系統的掌握Docker核心技術(總結分享)

  • docker run選擇運行的網絡模式

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

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

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

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

3)bridge模式:使用 –net=bridge 指定,默認設置。

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

docker網絡邏輯圖 網橋和NAT

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

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

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

網絡模式圖大概如下圖所示最系統的掌握Docker核心技術(總結分享)

3. 模擬Docker起網橋的操作

  • 創建–net=none nginx

最系統的掌握Docker核心技術(總結分享)

  • 創建network namespace

最系統的掌握Docker核心技術(總結分享)

  • 建立網絡namespace鏈接

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

  • 檢查當前已經創建的網橋設備

最系統的掌握Docker核心技術(總結分享)

  • 創建veth對

最系統的掌握Docker核心技術(總結分享)

  • 進行A網絡配置

最系統的掌握Docker核心技術(總結分享)

  • 進行B網絡配置

生成eth0網絡設備在nginx docker中

最系統的掌握Docker核心技術(總結分享)

給eth0配置ip 網關

最系統的掌握Docker核心技術(總結分享)

  • nginx可以訪問

最系統的掌握Docker核心技術(總結分享)

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

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

最系統的掌握Docker核心技術(總結分享)

  • 使用完刪除指定nat規則

最系統的掌握Docker核心技術(總結分享)

推薦學習:《docker視頻教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
曰批免费视频播放免费| 国产亚洲日韩一区二区三区| 久久久久久国产精品美女| 视频一区二区三区在线观看密桃| 伊伊人成亚洲综合人网香| 国产精品VIDEOSSEX久久发布| 美日韩一区二区三区| 亚洲AⅤ精品无码一区二区| JIZZ中国女人奶水多| 精品国产AV 无码一区二区三区| 日日摸夜夜添夜夜添无码国产| 尤物国精品午夜福利视频| 国产情侣露脸高清在线| 日本丰满熟妇BBXBBXHD| 玉蒲团之极乐宝鉴| 国精产品999永久中国有限公司| 日产2021一二三四免费| 中文精品久久久久人妻不卡| 好男人观看免费视频2019| 色妞WW精品视频7777| 91精品人妻一区二区三区蜜桃 | 亚洲精品一区二区三浪潮AV| 99久久国产综合精品女同图片 | 中文字幕丰满乱孑伦无码专区| 国产又黄又爽又刺激的免费网址| 日韩一区在线视频| 99久久久无码国产麻豆| 久久夜色噜噜噜亚洲AV| 亚洲VA欧洲VA日韩VA| 国产成人精品优优AV| 人妻少妇精品无码专区漫画| 中文字幕人妻无码乱精品| 久久WWW免费人成_网站| 亚洲AV无码久久久久久精品| 国产AV无码专区亚洲AV毛网站| 欧美最猛性XXXXX大叫| 在线观看亚洲一区| 久久97超碰色中文字幕总站| 亚洲AV无码乱码国产精品FC2| 国产国产精品人在线观看| 色777狠狠狠综合| 拔萝卜影视剧免费观看| 男女嘿咻发声动态图| 伊人精品无码一区二区三区电影 | 国产亚AV手机在线观看| 我把护士日出水了视频| 公主很忙(N)甜烟| 人妻精品久久久久中文字幕69| 777米奇色888狠狠俺去啦| 麻豆一区区三区四区产品麻豆| 亚洲伊人色欲综合网| 精品无人区无码乱码大片国产| 亚洲AV无码乱码一级毛片孕妇| 国产精品无码一二区免费 | 国产成人影院一区二区三区| 色婷婷五月综合丁香中文字幕| 班级每人C了我半小时班长| 欧美一级草B内射| FREE国产粉嫩熟妇XXXHD| 女人夜夜春高潮爽A∨片| 6080YYY午夜理伦三级| 男男GAY无套国产| 69综合精品国产二区无码 | 99久久精品午夜一区二区| 妺妺窝人体色WWW精品| 坐公交忘穿内裤被挺进老| 妺妺窝人体色WWW聚色窝仙踪| 中文字日产幕码三区的做法步骤| 蜜桃av无码一区二区三区| 主人 跪好 知道错了吗 | 亚洲性无码一区二区三区| 久久久久人妻精品一区蜜桃| 亚洲最大成人一区久久久| 浪货趴办公桌~H揉| 中国老熟妇自拍HD发布| 男男车车CP视频| FRYEE性欧美18 19| 人妻系列AV无码专区| 吃瓜网51CG7爆料| 私はあなたのおさんです怎么读| 国产成人精品123区免费视频| 无码视频一区二区三区在线观看| 国产亚洲精品无码专区| 亚洲国产一卡2卡3卡4卡5公司| 九色丨PORNY丨自拍 ICU| 又粗又粗又黄又硬又深色的| 男男gv在线观看| らだ天堂√在线WWW| 上边一面亲下边一面膜的功效| 国产肥熟女视频一区二区三区| 午夜亚洲精品久久久久久| 精品国产污污免费网站AⅤ| 一本色道久久综合狠狠躁| 免费热播女人毛片| ZLJZLJZLJZLJ亚洲| 色偷偷AV老熟女| 国产日韩一区在线精品| 亚洲色精品88色婷婷七月丁香| 蜜臀久久久久精品久久久| MONSTER无删减动漫| 少妇人妻一级AV片| 国内精品久久人妻无码不卡| 亚洲熟妇无码一区二区三区导航| 美人电影在线观看| 成人爽A毛片免费| 无码人妻视频一区二区三区| 精品国产一区二区亚洲人成毛片| 正在播放重口老熟女露脸| 人妻精品久久久久中文字幕一冢本| 国产99精品视频一区二区三区| 亚洲AV无码成人精品区网站| 久久婷婷五月综合色D啪| DY888午夜福利视频| 四川老妇女乱HD| 精品欧洲AV无码一区二区三区| 中文字幕精品无码| 日韩一区二区三区视频| 国产一区二区无码蜜芽精品| 又色又爽又黄的视频软件APP| 人妻无码一区二区不卡无码AV| 国产精品视频一区二区| 野花高清中文免费观看视频| 强壮公弄得我次次高潮| 国产乱人伦AV麻豆网| 伊人性伊人情综合网| 日韩人妻中文无码一区二区七区| 国内女人喷潮完整视频| 2021精品亚洲中文字幕| 四虎成人WWW成人影院| 久久99国产精品二区| JAPAN丰满人妻HDXXXX| 西西人体444WWW大胆无码视| 久久婷婷五月国产色综合| 成人AV毛片无码免费网站| 亚洲成AV人片在线观看无线| 牛牛本精品99久久精品66| 国产精品99久久久久| 又粗又硬又黄A级毛片| 少妇人妻好深太紧了A| 久久99国产精品久久99小说| XXXX18HD亚洲HD护士| 亚洲AV无码成人精品网站漏男| 男女上下拱试看120秒| 国产精品无码免费视频二三区| 在线高清理伦片A| 少妇久久久久久被弄高潮| 久久精品国产亚洲AV无码偷窥| 成人免费无码A毛片| 亚洲欧美成人精品香蕉网| 人妻丰满熟妇av无码| 激情内射亚洲一区二区三区| JK制服白丝自慰无码自慰网站| 亚洲AV无码不卡在线播放| 欧美日韩免费专区在线| 好儿子你插得太深了| X姓女RAPPER的首次亮相| 亚洲国产成人精品无码区在线秒播| 欧洲无码一区二区三区在线观看 | 私人影院家庭影院| 九九真实偷窥短视频| 厨房征服丰满熟妇少妇人妻| 亚洲色偷偷综合亚洲AV78| 日韩亚洲AV人人夜夜澡人人爽| 久久不见久久见免费影院3 | 亚洲AV日韩AV高潮潮喷无码| 欧美日韩一区二区在线视频精品| 韩国羞耻漫画免费| 波多野结衣在线播放| 亚洲最大无码成人网站4438| 丝袜灬啊灬快灬高潮了视频| 男男19禁啪啪无遮挡免费| 黑森林精选AV导航| 成人免费无码AV| 中国女RAPPER大妈| 亚欧成人无码AV在线播放| 日本COSME大赏美白| 久久婷婷大香萑太香蕉AV人| 国产精品无码一二区免费 | 无码熟妇人妻AV在线影片最多 | 再深点灬舒服灬太大了网站 | 里番ACG ※里番_ACG工口| 国产精品亚洲精品日韩已方| YY8098影视理论无码专区| 亚洲综合AV色婷婷国产野外| 无码国产精品一区二区免费式芒果 | 苍井空浴缸大战猛男120分钟| 一本精品99久久精品77| 无码中文字幕VA精品影院| 人人人爽人人澡人人高潮| 老妇饥渴XXHDⅩXXOOO| 国产在线无遮挡免费观看| 成人H视频在线观看| 18禁黄无遮挡网站免费高清| 亚洲精品国产成人AV蜜臀| 天堂在/线资源中文在线BT| 欧美激情视频一区| 久久亚洲精品AB无码播放| 好紧好爽太大了视频| 国产福利一区二区三区在线观看 | 国产成人精品A∨一区二区|