日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 一、容器鏡像分類
    • 1、操作系統類
    • 2、應用類
  • 二、容器鏡像獲取方法
    • 1、在dockerhub直接下載
    • 2、把操作系統中文件系統打包為容器鏡像
    • 3、把正在運行的容器打包為容器鏡像,即docker commit
    • 4、通過dockerfile實現容器鏡像的自定義以及生成
  • 三、dockerfile
    • 1、dockerfile介紹
    • 2、dockerfile指令
      • 構建類指令
      • 設置類指令
    • 3、dockerfile基本組成
      • 4、dockerfile生成容器鏡像過程
        • 5、dockerfile生成容器鏡像案例
          • dockerfile生成容器鏡像步驟
        • 6、使用Dockerfile生成Nginx容器鏡像
          • 7、Dockerfile生成容器鏡像優化的方法
            • a、減少鏡像分層
            • b、清理無用數據

        一、容器鏡像分類

        1、操作系統類

        centos
        ubuntu
        自行制作

        2、應用類

        tomcat
        nginx
        mysql
        redis

        二、容器鏡像獲取方法

        1、在dockerhub直接下載

        docker pull centos:latest

        2、把操作系統中文件系統打包為容器鏡像

        3、把正在運行的容器打包為容器鏡像,即docker commit

        [root@mylinux1 ~]# docker ps
        CONTAINER ID   IMAGE              COMMAND                   CREATED        STATUS         PORTS                                                                                                                             NAMES
        
        ca081c0529d1   mysql:5.5          "docker-entrypoint.s…"   28 hours ago   Up 2 minutes   0.0.0.0:8888->3306/tcp, :::8888->3306/tcp                                                                                         my_mysql
        
        [root@mylinux1 ~]# docker commit ca081c0529d1 mysql:v1.0
        
        [root@mylinux1 ~]# docker images
        REPOSITORY                TAG               IMAGE ID       CREATED          SIZE
        mysql                     v1.0              d404d78aa797   3 years ago      205MB
        
        [root@mylinux1 ~]# docker run --name new_mysql -d mysql:v1.0
        2fd23f7e01889fbdc74e02305c910a8d8d2ddb48f00241b83469c671d82e586f
        
        [root@mylinux1 ~]# docker ps
        CONTAINER ID   IMAGE                    COMMAND                   CREATED         STATUS         PORTS                                                                                                                             NAMES
        2fd23f7e0188   mysql:v1.0               "docker-entrypoint.s…"   4 seconds ago   Up 3 seconds   3306/tcp                                                                                                                          new_mysql
        
        ca081c0529d1   mysql:5.5                "docker-entrypoint.s…"   28 hours ago    Up 4 minutes   0.0.0.0:8888->3306/tcp, :::8888->3306/tcp                                                                                         my_mysql
        
        

        4、通過dockerfile實現容器鏡像的自定義以及生成

        三、dockerfile

        1、dockerfile介紹

        Dockerfile是一種能夠被Docker程序解釋的劇本。Dockerfile由一條一條的指令組成,并且有自己的書寫格式和支持的命令。當我們需要在容器鏡像中指定自己額外的需求時,只需在Dockerfile上添加或修改指令,然后通過docker build生成我們自定義的容器鏡像(image)。

        Dockerfile及新型容器鏡像構建技術詳解

        2、dockerfile指令

        構建類指令

        用于構建image
        其指定的操作不會在運行image的容器上執行(FROM、MAINTAINER、RUN、ENV、ADD、COPY)

        設置類指令

        用于設置image屬性
        其指定的操作將在運行image的容器中執行(CMD、ENTRYPOINT、USER、EXPORT、VOLUME、WORKDIR、ONBUILD)

        Dockerfile及新型容器鏡像構建技術詳解

        FROM指令用于指定其構建新鏡像所使用的基礎鏡像
        FROM指令必須是Dockerfile文佳中的首條命令
        FROM指令指定的基礎image可以是官方遠程倉庫中的,也可以位于本地倉庫的
        格式:FROM <image>:<tag>
        例如:FROM centos:latest

        RUN指令用于構建鏡像中執行命令,有以下兩種格式

        Dockerfile及新型容器鏡像構建技術詳解

        注意:按優化的角度來講:當有多條要執行的命令,不要使用多條RUN,盡量使用&&符號與\符號連接成一行。因為多條RUN命令會讓鏡像建立多層
        (總之就是會變得臃腫了)。

        Dockerfile及新型容器鏡像構建技術詳解

        CMD:不同于RUN,CMD用于指定在容器啟動時所要執行的命令,而RUN用于指定鏡像構建時所要執行的命令

        Dockerfile及新型容器鏡像構建技術詳解

        每個Dockerfile只能有一條CMD命令。如果指定了多條命令,只有最后一條會被執行。
        如果用戶啟動容器時候指定了運行的命令,則會覆蓋掉CMD指定的命令。

        EXPORT:用于指定容器在運行時監聽的端口

        Dockerfile及新型容器鏡像構建技術詳解

        ENV:用于指定一個環境變量

        Dockerfile及新型容器鏡像構建技術詳解

        ADD:用于把宿主機上的文件拷貝到鏡像中

        Dockerfile及新型容器鏡像構建技術詳解

        COPY:與ADD指令類似,但是COPY的源文件只能時本地文件

        Dockerfile及新型容器鏡像構建技術詳解

        ENTRYPOINT:與CMD非常類似

        Dockerfile及新型容器鏡像構建技術詳解

        VOLUME:用于把宿主機里的目錄與容器里的目錄映射
        只指定掛載點,docker宿主機映射的目錄為自動生成的

        Dockerfile及新型容器鏡像構建技術詳解

        Dockerfile及新型容器鏡像構建技術詳解

        3、dockerfile基本組成

        基礎鏡像信息
        維護者信息
        鏡像操作指令
        容器啟動時執行指令

        4、dockerfile生成容器鏡像過程

        Dockerfile及新型容器鏡像構建技術詳解

        5、dockerfile生成容器鏡像案例

        dockerfile生成容器鏡像步驟

        第一步:創建一個文件夾(目錄)
        第二步:在文件夾(目錄)中創建Dockerfile(固定)文件并編寫,以及其他文件
        第三步:使用docker build命令構建鏡像
        第四步:使用構建的鏡像啟動容器

        6、使用Dockerfile生成Nginx容器鏡像

        [root@mylinux1 dockerfile_nginx]# ls
        Dockerfile  index.html
        
        [root@mylinux1 dockerfile_nginx]# cat index.html 
        nginx is running
        
        [root@mylinux1 dockerfile_nginx]# vim Dockerfile 
        
        FROM centos:centos7
        
        MAINTAINER "[email protected]"
        
        RUN yum -y install wget
        
        RUN wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
        
        RUN yum -y install nginx
        
        ADD index.html /usr/share/nginx/html/
        
        RUN echo "daemon off;" >> /etc/nginx/nginx.conf
        
        EXPOSE 80
        
        CMD /usr/sbin/nginx
        

        生成鏡像

        [root@mylinux1 dockerfile_nginx]# docker build -t centos7-nginx:v1.0 .
        [+] Building 69.6s (11/11) FINISHED                                                              
         => [internal] load build definition from Dockerfile                                        0.0s
         => => transferring dockerfile: 405B                                                        0.0s
         => [internal] load .dockerignore                                                           0.0s
         => => transferring context: 2B                                                             0.0s
         => [internal] load metadata for docker.io/library/centos:centos7                          25.6s
         => CACHED [1/6] FROM docker.io/library/centos:centos7@sha256:be65f488b7764ad3638f236b7b51  0.0s
         => [internal] load build context                                                           0.0s
         => => transferring context: 114B                                                           0.0s
         => [2/6] RUN yum -y install wget                                                          15.9s
         => [3/6] RUN wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.rep  1.5s
         => [4/6] RUN yum -y install nginx                                                         24.3s 
         => [5/6] ADD index.html /usr/share/nginx/html/                                             0.1s 
         => [6/6] RUN echo "daemon off;" >> /etc/nginx/nginx.conf                                   1.2s 
         => exporting to image                                                                      0.8s 
         => => exporting layers                                                                     0.8s 
         => => writing image sha256:337b3bac42dda5f878cb671f3306f7753a0693bbddb74388663c943d51ca20  0.0s 
         => => naming to docker.io/library/centos7-nginx:v1.0                                       0.0s 
        
        
        [root@mylinux1 dockerfile_nginx]# docker images | grep "centos7-nginx"
        centos7-nginx             v1.0                             337b3bac42dd   11 minutes ago   657MB
        

        運行容器

        [root@mylinux1 dockerfile_nginx]# docker run -d centos7-nginx:v1.0
        62b15bc281b433f213f019d7ae9f1ef0ceb2f2d6ee98972d58029f28c548b0ab
        

        查看運行的容器

        [root@mylinux1 dockerfile_nginx]# docker inspect "62b" | address
        -bash: address: 未找到命令
        [root@mylinux1 dockerfile_nginx]# docker inspect "62b" | grep "IPAddress"
                    "SecondaryIPAddresses": null,
                    "IPAddress": "172.17.0.5",
                            "IPAddress": "172.17.0.5",
        [root@mylinux1 dockerfile_nginx]# curl http://172.17.0.5
        nginx is running
        
        [root@mylinux1 dockerfile_nginx]# docker inspect "62b" | address
        -bash: address: 未找到命令
        [root@mylinux1 dockerfile_nginx]# docker inspect "62b" | grep "IPAddress"
                    "SecondaryIPAddresses": null,
                    "IPAddress": "172.17.0.5",
                            "IPAddress": "172.17.0.5",
        [root@mylinux1 dockerfile_nginx]# curl http://172.17.0.5
        nginx is running
        

        7、Dockerfile生成容器鏡像優化的方法

        a、減少鏡像分層

        Dockerfile中包含多種指令,如果涉及到部署最多使用的算是RUN命令了,使用RUN命令時,不建議每次安裝都使用一條單獨的RUN命令,可
        以把能夠合并安裝指令合并為一條,這樣就可以減少鏡像分層。

        Dockerfile及新型容器鏡像構建技術詳解

        優化內容如下

        Dockerfile及新型容器鏡像構建技術詳解

        b、清理無用數據

        一次RUN形成新的一層,如果沒有在同一層刪除,無論文件是否最后刪除,都會帶到下一層,所以要在每一層清理對應的殘留數據,減小
        鏡像大小。
        把生成容器鏡像過程中部署的應用軟件包做刪除處理

        以上就是Dockerfile及新型容器鏡像構建技術詳解的詳細內容,更多關于Dockerfile及新型容器鏡像構建的資料請關注其它相關文章!

        分享到:
        標簽:容器 服務器 構建 詳解 鏡像
        用戶無頭像

        網友整理

        注冊時間:

        網站:5 個   小程序:0 個  文章:12 篇

        • 51998

          網站

        • 12

          小程序

        • 1030137

          文章

        • 747

          會員

        趕快注冊賬號,推廣您的網站吧!
        最新入駐小程序

        數獨大挑戰2018-06-03

        數獨一種數學游戲,玩家需要根據9

        答題星2018-06-03

        您可以通過答題星輕松地創建試卷

        全階人生考試2018-06-03

        各種考試題,題庫,初中,高中,大學四六

        運動步數有氧達人2018-06-03

        記錄運動步數,積累氧氣值。還可偷

        每日養生app2018-06-03

        每日養生,天天健康

        體育訓練成績評定2018-06-03

        通用課目體育訓練成績評定