1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        ?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??梢姡萜鲗颖4娴氖晴R像變化的部分,不會對鏡像本身進(jìn)行任何修改。


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

        瀏覽 45
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            又大又粗熟女 | 成人电影一区二区三区在线观看 | 国产免费黄色电影 | 日本一区二区三区四区五区六区 | 国产精品毛片无遮挡高清 | 国产一区二区三区在线 | 成人做爰黄 片视频动漫 | 亚洲AV成人无码一区二区三区 | 夜夜视频网站 | 欧洲久久久 |