<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?Docker 數(shù)據(jù)卷的管理及自動構(gòu)建docker鏡像

          共 6197字,需瀏覽 13分鐘

           ·

          2020-12-12 03:53

          掛載時創(chuàng)建卷

          掛載卷
          [root@docker01?~]#?docker?run?-d?-p?80:80?-v?/data:/usr/share/nginx/html?nginx:latest
          079786c1e297b5c5031e7a841160c74e91d4ad06516505043c60dbb78a259d09


          容器內(nèi)站點目錄:?/usr/share/nginx/html


          在宿主機寫入數(shù)據(jù),查看
          [root@docker01?~]#?echo?"http://www.nmtui.com"?>/data/index.html
          [root@docker01?~]#?curl?10.0.0.100
          http://www.nmtui.com


          設(shè)置共享卷,使用同一個卷啟動一個新的容器

          [root@docker01?~]#?docker?run?-d?-p?8080:80?-v?/data:/usr/share/nginx/html?nginx:latest?
          351f0bd78d273604bd0971b186979aa0f3cbf45247274493d2490527babb4e42
          [root@docker01?~]#?curl?10.0.0.100:8080
          http://www.nmtui.com


          查看卷列表
          [root@docker01?~]#?docker?volume?ls
          DRIVER??????????????VOLUME?NAME

          創(chuàng)建卷后掛載

          創(chuàng)建一個卷
          [root@docker01?~]#?docker?volume?create?
          f3b95f7bd17da220e63d4e70850b8d7fb3e20f8ad02043423a39fdd072b83521
          [root@docker01?~]#?docker?volume?ls?
          DRIVER??????????????VOLUME?NAME
          local???????????????f3b95f7bd17da220e63d4e70850b8d7fb3e20f8ad02043423a39fdd072b83521


          指定卷名
          [root@docker01?~]#?docker?volume?ls?
          DRIVER??????????????VOLUME?NAME
          local???????????????clsn
          local???????????????f3b95f7bd17da220e63d4e70850b8d7fb3e20f8ad02043423a39fdd072b83521


          查看卷路徑
          [root@docker01?~]#?docker?volume?inspect?clsn?
          [
          ????{
          ????????"CreatedAt":?"2018-02-01T00:39:25+08:00",
          ????????"Driver":?"local",
          ????????"Labels":?{},
          ????????"Mountpoint":?"/var/lib/docker/volumes/clsn/_data",
          ????????"Name":?"clsn",
          ????????"Options":?{},
          ????????"Scope":?"local"
          ????}
          ]


          使用卷創(chuàng)建
          [root@docker01?~]#?docker?run?-d?-p?9000:80?-v?clsn:/usr/share/nginx/html?nginx:latest?
          1434559cff996162da7ce71820ed8f5937fb7c02113bbc84e965845c219d3503
          #?宿主機測試
          [root@docker01?~]#?echo?'blog.nmtui.com'?>/var/lib/docker/volumes/clsn/_data/index.html?
          [root@docker01?~]#?curl?10.0.0.100:9000
          blog.nmtui.com


          設(shè)置卷
          [root@docker01?~]#?docker?run??-d??-P??--volumes-from?079786c1e297?nginx:latest?
          b54b9c9930b417ab3257c6e4a8280b54fae57043c0b76b9dc60b4788e92369fb


          查看使用的端口
          [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:22??????????????0.0.0.0:*???????????????LISTEN??????1400/sshd???????????
          tcp????????0??????0?10.0.0.100:2375?????????0.0.0.0:*???????????????LISTEN??????26218/dockerd???????
          tcp6???????0??????0?:::9000?????????????????:::*????????????????????LISTEN??????32015/docker-proxy??
          tcp6???????0??????0?:::8080?????????????????:::*????????????????????LISTEN??????31853/docker-proxy??
          tcp6???????0??????0?:::80???????????????????:::*????????????????????LISTEN??????31752/docker-proxy??
          tcp6???????0??????0?:::22???????????????????:::*????????????????????LISTEN??????1400/sshd???????????
          tcp6???????0??????0?:::32769????????????????:::*????????????????????LISTEN??????32300/docker-proxy??
          [root@docker01?~]#?curl?10.0.0.100:32769
          http://www.nmtui.com


          手動將容器保存為鏡像

          本次是基于docker官方centos 6.8?鏡像創(chuàng)建


          官方鏡像列表:

          https://hub.docker.com/explore/


          啟動一個centos6.8的鏡像
          [root@docker01?~]#?docker?pull??centos:6.8
          [root@docker01?~]#?docker?run?-it?-p?1022:22?centos:6.8??/bin/bash
          #?在容器種安裝sshd服務(wù),并修改系統(tǒng)密碼
          [root@582051b2b92b?~]#?yum?install??openssh-server?-y?
          [root@582051b2b92b?~]#?echo?"root:123456"?|chpasswd
          [root@582051b2b92b?~]#??/etc/init.d/sshd?start


          啟動完成后鏡像ssh連接測試


          將容器提交為鏡像
          [root@docker01?~]#?docker?commit?brave_mcclintock??centos6-ssh


          使用新的鏡像啟動容器
          [root@docker01?~]#?docker?run?-d??-p?1122:22??centos6-ssh:latest??/usr/sbin/sshd?-D?
          5b8161fda2a9f2c39c196c67e2eb9274977e7723fe51c4f08a0190217ae93094


          在容器安裝httpd服務(wù)
          [root@5b8161fda2a9?/]#??yum?install?httpd?-y


          編寫啟動腳本腳本
          [root@5b8161fda2a9?/]#?cat??init.sh?
          #!/bin/bash?
          /etc/init.d/httpd?start?
          /usr/sbin/sshd?-D
          [root@5b8161fda2a9?/]#?chmod?+x?init.sh?
          #?注意執(zhí)行權(quán)限


          再次提交為新的鏡像
          [root@docker01?~]#?docker?commit??5b8161fda2a9?centos6-httpd?
          sha256:705d67a786cac040800b8485cf046fd57b1828b805c515377fc3e9cea3a481c1


          啟動鏡像,做好端口映射。并在瀏覽器中測試訪問
          [root@docker01?~]#?docker?run?-d?-p?1222:22?-p?80:80??centos6-httpd?/init.sh?
          46fa6a06644e31701dc019fb3a8c3b6ef008d4c2c10d46662a97664f838d8c2c


          Dockerfile自動構(gòu)建docker鏡像

          官方構(gòu)建dockerffile文件參考

          https://github.com/CentOS/CentOS-Dockerfiles

          Dockerfile指令集

          dockerfile主要組成部分:
          • 基礎(chǔ)鏡像信息?FROM centos:6.8
          • 制作鏡像操作指令RUN yum insatll openssh-server -y
          • 容器啟動時執(zhí)行指令?CMD ["/bin/bash"]


          dockerfile常用指令:

          • FROM 這個鏡像的媽媽是誰?(指定基礎(chǔ)鏡像)
          • MAINTAINER 告訴別人,誰負(fù)責(zé)養(yǎng)它?(指定維護(hù)者信息,可以沒有)
          • RUN?你想讓它干啥(在命令前面加上RUN即可)
          • ADD?給它點創(chuàng)業(yè)資金(COPY文件,會自動解壓)
          • WORKDIR?我是cd,今天剛化了妝(設(shè)置當(dāng)前工作目錄)
          • VOLUME?給它一個存放行李的地方(設(shè)置卷,掛載主機目錄)
          • EXPOSE?它要打開的門是啥(指定對外的端口)
          • CMD 奔跑吧,兄弟?。ㄖ付ㄈ萜鲉雍蟮囊傻氖虑椋?/span>


          dockerfile其他指令:?
          • COPY?復(fù)制文件
          • ENV??環(huán)境變量
          • ENTRYPOINT??容器啟動后執(zhí)行的命令

          創(chuàng)建一個Dockerfile

          創(chuàng)建第一個Dockerfile文件
          #?創(chuàng)建目錄
          [root@docker01?base]#?cd?/opt/base
          #?創(chuàng)建Dcokerfile文件,注意大小寫
          [root@docker01?base]#?vim?Dockerfile
          FROM?centos:6.8
          RUN?yum?install?openssh-server?-y?
          RUN?echo?"root:123456"?|chpasswd
          RUN?/etc/init.d/sshd?start?
          CMD?["/usr/sbin/sshd","-D"]


          構(gòu)建docker鏡像
          [root@docker01?base]#?docker?image?build??-t?centos6.8-ssh?.?
          -t?為鏡像標(biāo)簽打標(biāo)簽??.?表示當(dāng)前路徑


          使用自構(gòu)建的鏡像啟動
          [root@docker01?base]#?docker?run??-d?-p?2022:22?centos6.8-ssh-b?
          dc3027d3c15dac881e8e2aeff80724216f3ac725f142daa66484f7cb5d074e7a


          使用Dcokerfile安裝kodexplorer

          Dockerfile文件內(nèi)容
          FROM?centos:6.8
          RUN?yum?install?wget?unzip?php?php-gd?php-mbstring?-y?&&?yum?clean?all
          #?設(shè)置工作目錄,之后的操作都在這個目錄中
          WORKDIR?/var/www/html/
          RUN?wget?-c?http://static.kodcloud.com/update/download/kodexplorer4.25.zip
          RUN?unzip?kodexplorer4.25.zip?&&?rm?-f?kodexplorer4.25.zip
          RUN?chown?-R?apache.apache?.
          CMD?["/usr/sbin/apachectl","-D","FOREGROUND"]


          更多的Dockerfile可以參考官方方法。

          Docker中的鏡像分層

          參考文檔:

          http://www.maiziedu.com/wiki/cloud/dockerimage/


          Docker 支持通過擴展現(xiàn)有鏡像,創(chuàng)建新的鏡像。實際上,Docker Hub 中 99%?的鏡像都是通過在 base 鏡像中安裝和配置需要的軟件構(gòu)建出來的。


          ?

          從上圖可以看到,新鏡像是從 base 鏡像一層一層疊加生成的。每安裝一個軟件,就在現(xiàn)有鏡像的基礎(chǔ)上增加一層。


          Docker?鏡像為什么分層

          鏡像分層最大的一個好處就是共享資源。


          比如說有多個鏡像都從相同的 base 鏡像構(gòu)建而來,那么 Docker Host 只需在磁盤上保存一份 base 鏡像;同時內(nèi)存中也只需加載一份 base 鏡像,就可以為所有容器服務(wù)了。而且鏡像的每一層都可以被共享。


          如果多個容器共享一份基礎(chǔ)鏡像,當(dāng)某個容器修改了基礎(chǔ)鏡像的內(nèi)容,比如?/etc 下的文件,這時其他容器的?/etc 是不會被修改的,修改只會被限制在單個容器內(nèi)。這就是容器 Copy-on-Write 特性。


          可寫的容器層

          當(dāng)容器啟動時,一個新的可寫層被加載到鏡像的頂部。這一層通常被稱作“容器層”,“容器層”之下的都叫“鏡像層”。


          ?

          所有對容器的改動?-?無論添加、刪除、還是修改文件都只會發(fā)生在容器層中。只有容器層是可寫的,容器層下面的所有鏡像層都是只讀的。


          容器層的細(xì)節(jié)說明

          鏡像層數(shù)量可能會很多,所有鏡像層會聯(lián)合在一起組成一個統(tǒng)一的文件系統(tǒng)。如果不同層中有一個相同路徑的文件,比如?/a,上層的?/a 會覆蓋下層的?/a,也就是說用戶只能訪問到上層中的文件?/a。在容器層中,用戶看到的是一個疊加之后的文件系統(tǒng)。


          文件操作的


          只有當(dāng)需要修改時才復(fù)制一份數(shù)據(jù),這種特性被稱作 Copy-on-Write。可見,容器層保存的是鏡像變化的部分,不會對鏡像本身進(jìn)行任何修改。


          這樣就解釋了我們前面提出的問題:容器層記錄對鏡像的修改,所有鏡像層都是只讀的,不會被容器修改,所以鏡像可以被多個容器共享。

          瀏覽 45
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色三级A片 | 亚洲成人在线观看视频 | 成人做爱免费看 | 中文字幕免费在线观看视频 | 青青草超碰免费 |