最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Dockerfile及新型容器鏡像構(gòu)建技術(shù)詳解

 更新時(shí)間:2023年04月18日 08:44:07   作者:敲代碼敲到頭發(fā)茂密  
本文詳細(xì)介紹了dockerfile以及新型容器鏡像構(gòu)建技術(shù),文章中通過詳細(xì)的代碼示例介紹了dockerfile生成容器鏡像器的全過程,感興趣的小伙伴可以參考一下

一、容器鏡像分類

1、操作系統(tǒng)類

centos
ubuntu
自行制作

2、應(yīng)用類

tomcat
nginx
mysql
redis

二、容器鏡像獲取方法

1、在dockerhub直接下載

docker pull centos:latest

2、把操作系統(tǒng)中文件系統(tǒng)打包為容器鏡像

3、把正在運(yùn)行的容器打包為容器鏡像,即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實(shí)現(xiàn)容器鏡像的自定義以及生成

三、dockerfile

1、dockerfile介紹

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

在這里插入圖片描述

2、dockerfile指令

構(gòu)建類指令

用于構(gòu)建image
其指定的操作不會(huì)在運(yùn)行image的容器上執(zhí)行(FROM、MAINTAINER、RUN、ENV、ADD、COPY)

設(shè)置類指令

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

在這里插入圖片描述

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

RUN指令用于構(gòu)建鏡像中執(zhí)行命令,有以下兩種格式

在這里插入圖片描述

注意:按優(yōu)化的角度來講:當(dāng)有多條要執(zhí)行的命令,不要使用多條RUN,盡量使用&&符號與\符號連接成一行。因?yàn)槎鄺lRUN命令會(huì)讓鏡像建立多層
(總之就是會(huì)變得臃腫了)。

在這里插入圖片描述

CMD:不同于RUN,CMD用于指定在容器啟動(dòng)時(shí)所要執(zhí)行的命令,而RUN用于指定鏡像構(gòu)建時(shí)所要執(zhí)行的命令

在這里插入圖片描述

每個(gè)Dockerfile只能有一條CMD命令。如果指定了多條命令,只有最后一條會(huì)被執(zhí)行。
如果用戶啟動(dòng)容器時(shí)候指定了運(yùn)行的命令,則會(huì)覆蓋掉CMD指定的命令。

EXPORT:用于指定容器在運(yùn)行時(shí)監(jiān)聽的端口

在這里插入圖片描述

ENV:用于指定一個(gè)環(huán)境變量

在這里插入圖片描述


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

在這里插入圖片描述

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

在這里插入圖片描述

ENTRYPOINT:與CMD非常類似

在這里插入圖片描述

VOLUME:用于把宿主機(jī)里的目錄與容器里的目錄映射
只指定掛載點(diǎn),docker宿主機(jī)映射的目錄為自動(dòng)生成的

在這里插入圖片描述

在這里插入圖片描述

3、dockerfile基本組成

基礎(chǔ)鏡像信息
維護(hù)者信息
鏡像操作指令
容器啟動(dòng)時(shí)執(zhí)行指令

4、dockerfile生成容器鏡像過程

在這里插入圖片描述

5、dockerfile生成容器鏡像案例

dockerfile生成容器鏡像步驟

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

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 "1181068365@qq.com"

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

運(yùn)行容器

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

查看運(yùn)行的容器

[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生成容器鏡像優(yōu)化的方法

a、減少鏡像分層

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

在這里插入圖片描述

優(yōu)化內(nèi)容如下

在這里插入圖片描述

b、清理無用數(shù)據(jù)

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

以上就是Dockerfile及新型容器鏡像構(gòu)建技術(shù)詳解的詳細(xì)內(nèi)容,更多關(guān)于Dockerfile及新型容器鏡像構(gòu)建的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Docker實(shí)踐—CentOS7上部署Kubernetes詳解

    Docker實(shí)踐—CentOS7上部署Kubernetes詳解

    kubernetes作為docker的管理工具是由Google開源提供,但是kubernetes的安裝一直折磨著運(yùn)維人員,在這一系列的文章中我將會(huì)由kubernetes的安裝講起為大家介紹kubernetes的安裝使用等過程,也作為自己的學(xué)習(xí)筆記。
    2017-01-01
  • 使用Conda環(huán)境創(chuàng)建Docker鏡像的完整步驟指南

    使用Conda環(huán)境創(chuàng)建Docker鏡像的完整步驟指南

    Docker是實(shí)現(xiàn)容器化的主流工具之一,而Conda作為科學(xué)計(jì)算和Python的包管理器,與Docker的結(jié)合能為開發(fā)者提供高度靈活、易于管理的開發(fā)環(huán)境,這篇文章主要介紹了使用Conda環(huán)境創(chuàng)建Docker鏡像的完整步驟,需要的朋友可以參考下
    2025-03-03
  • 利用Docker搭建本地https環(huán)境的完整步驟

    利用Docker搭建本地https環(huán)境的完整步驟

    這篇文章主要給大家介紹了關(guān)于如何利用Docker搭建本地https環(huán)境的完整步驟,文中通過示例代碼將實(shí)現(xiàn)的步驟介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2018-04-04
  • Docker服務(wù)遷移的實(shí)現(xiàn)

    Docker服務(wù)遷移的實(shí)現(xiàn)

    本文詳細(xì)介紹了如何備份和遷移Docker服務(wù)數(shù)據(jù),包括停止Docker服務(wù)、備份Docker數(shù)據(jù)和DockerCompose文件,使用SCP或Rsync傳輸備份文件,以及在新服務(wù)器上恢復(fù)Docker數(shù)據(jù)和設(shè)置權(quán)限,文中提供了詳細(xì)的命令和步驟,確保數(shù)據(jù)遷移過程順利進(jìn)行
    2024-10-10
  • Docker 如何安裝 Nginx

    Docker 如何安裝 Nginx

    這篇文章主要介紹了Docker 如何安裝 Nginx,幫助大家更好的使用docker容器,感興趣的朋友可以了解下。
    2020-09-09
  • 解決docker容器啟動(dòng)后馬上退出的問題

    解決docker容器啟動(dòng)后馬上退出的問題

    這篇文章主要介紹了解決docker容器啟動(dòng)后馬上退出的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Docker鏡像+nginx 部署 vue 項(xiàng)目的方法

    Docker鏡像+nginx 部署 vue 項(xiàng)目的方法

    這篇文章主要介紹了Docker鏡像+nginx 部署 vue 項(xiàng)目的方法,幫助大家更好的使用docke鏡像,感興趣的朋友可以了解下
    2020-10-10
  • docker image刪不掉的解決辦法

    docker image刪不掉的解決辦法

    在使用Docker的時(shí)候遇到刪不掉image的情況,怎么回事,如何解決呢?下面小編給大家分享下docker image刪不掉的解決辦法,需要的朋友參考下吧
    2017-01-01
  • docker容器的四種端口映射演示分析

    docker容器的四種端口映射演示分析

    這篇文章主要為大家介紹了docker容器的四種端口映射演示分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Docker 容器之間的互相通信實(shí)現(xiàn)示例

    Docker 容器之間的互相通信實(shí)現(xiàn)示例

    本文主要介紹了Docker 容器之間的互相通信實(shí)現(xiàn)示例,通過創(chuàng)建自定義網(wǎng)絡(luò),你可以輕松地在 Docker 容器之間建立通信,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01

最新評論

罗田县| 汾西县| 南漳县| 潼关县| 竹北市| 监利县| 射洪县| 华容县| 五莲县| 青冈县| 南郑县| 固镇县| 靖宇县| 金山区| 浮梁县| 昭觉县| 汉阴县| 隆尧县| 宁河县| 葫芦岛市| 晋江市| 清苑县| 定边县| 安图县| 祁门县| 明溪县| 茂名市| 陇川县| 奇台县| 公主岭市| 客服| 鄱阳县| 都安| 夏津县| 双柏县| 英德市| 伊春市| 清水河县| 水城县| 沧州市| 玉环县|