• Docker容器技术实战1


    本单元分别从容器的镜像,仓库,网络,数据卷和安全五个方面来对Docker基础做一个认知学习

    1、docker容器

    78d8f62c4b2447baa17e6adf1392ecf4.png

    docker相当于传统的货运集装箱

    虚拟机(Virtual Machine,VM)是一个完整的虚拟操作系统和硬件环境。它的工作原理是通过在一台物理主机上使用虚拟化软件来创建多个虚拟机实例,每个实例都可以运行独立的操作系统和应用程序。每个虚拟机都有自己的虚拟硬件和资源分配,并且可以在不同的物理服务器之间迁移。虚拟机提供了更高的隔离性安全性,适合于运行多个操作系统和复杂的应用程序环境。

    Docker是一个轻量级的容器化平台,它使用操作系统层面的虚拟化技术,将应用程序及其依赖打包为一个可移植的容器,然后在主机的操作系统上运行。Docker容器共享主机操作系统的内核,因此比虚拟机更轻量级和高效。容器可以在不同的主机之间轻松部署和迁移,并且启动时间非常快速。Docker适合于部署单个应用程序或服务,并提供了更高的可伸缩性和性能

    建立第一个docker容器

    44081d932b9045d8b32e5dadee6d81af.png1cefec3119504ba09ca14c745814276f.png3490f3d40fa94f229c9217d66fff4bc6.png

    安装docker-ce

    b6bd4c195744468fa8604d1d5cc7d327.png

    设置开机自启

    ad193c38857f4cf192c26075c1db01e7.png

    激活内核选项并重启服务

    69ed316d6f9448b6ae6b830a92f5abd3.png8ba0783038bb46b1b73c8182f8222774.png

    启动容器并查看已激活容器

    ac826931d62946679b0bf22597272d03.png

    访问

    f3969697c41b45318da2c1ff52c27ab8.pngacfe52472d2442d08dd17e9fcbf71221.pnge9a9ccba965247a8a9b08d1aa013861b.pngc34181a0c93744f097691b20615652c4.png

    2、docker镜像

    3ded2de3c4e94b89ad356dd1b7779552.png

    Docker镜像的分层结构是Docker的一个重要概念,它是Docker镜像的构建和管理的基础。Docker镜像的分层结构简单可以描述为以下三层:

    (1)基础层:每个Docker镜像都由一个或多个基础层开始。基础层是只读的,包含了操作系统的文件系统和软件包.

    (2)中间层:在基础层之上,可以有任意数量的中间层。中间层为镜像添加了文件、配置等内容,每一层都是镜像的一部分。

    (3)顶层:最后一层是顶层,也被称为容器层。这是可写层,它使得Docker容器可以在只读的基础层上进行读写操作。当Docker容器运行时,任何对文件系统的更改都会被记录在这个层中。

    分层结构的最大好处是层与层之间可以进行资源的共享,这种分层结构使得Docker镜像的创建、存储和传输都变得高效和灵活。.

    b03b2f86a02d43dc80dfc0e8895adb50.png

    存储所有镜像文件内容的目录(绝对不能随意删除)

    afdfeccf3b594a5ba0d3116df7c2a6e3.png

    镜像的构建

    bcaa1121c78d41f2b36ae2ccf4104a37.png镜像层是只读的,修改的东西只保存在容器层,当保存的时候,容器层就会保存成新的镜像层,一个镜像最多127 层;

    docker 从上往下会依次查找文件,这样修改的内容就会被优先读取到。

    6e9b28d97cd34ab4a14a798517bbf33c.png744b8bfc6bd34e62ab310afb6f855728.pngaeb84dbebd5945998c7c6e7ff4d01c34.png

    注:容器层是与容器生命周期保持一致的,删除容器时,容器层也会同步被删除。

    19d15b99f29f45248c2d770bdb489c03.png

    此种方法不利于安全审计

    构建镜像

    14f92b1210764f37bba7ba4f4c7ed6aa.png8c0fb2397872400baafbce3025cf6a7c.png

    Dockerfile详解

    75a5eb8ee0b34ea39e90c2ac2c4a7955.pngde81c127c0ef4577a3ec5074acec79d0.pngbc817cd2a42c49e1b81fec0783727e07.pnga1a8f994fcd74702a660a1b7f2e36787.png01424de70c894df8ab56952a6acdb296.pnge572e986364f45b0b03e5921b0571eee.png6ec3aa2e99324d6792a9c45fae1ca6b7.pngd15472c042bd443f9b5fcccb209d5e40.png8df9be0e12f649f0b654502e746f1430.png12bb732f716b41f0a80a7bae2f7d3aad.png相当于将命令集成使用

    03403348d4374eb09cc7ae298567deec.pnge9626f39f2904166ba0ee61c37be9959.png90f60c3e89194b028d3006859594d819.png

    自动删除所有已经被停止的容器

    cc846fd111794e138ca84bb7072a7e59.png

    查看容器详情

    13b5a294d54c4513b17b9fc316b2d30e.png

    数据卷挂载

    4e510b37c37d4929a8139f2ba1a07d51.png

    自动分配的IP

    2b47e6d5443e47e4a4317312921db292.png

    访问容器

    c15af5052ff04f8bbdfefaf59cd51941.png

    此地址无法使用外部浏览器进行访问,因为没有做端口映射,这是一个私有网段,无法从windows访问。

    3、镜像的优化

    50db183fed5543798bfab0d1847f48a9.png

    缩减镜像层

    51bfc02439b842838716e29b8b8b11e5.pngf678fce5540442e195457b48523ee180.png

    缩减镜像层数,删除中间产物

    38639944103747ec8242242740ffcd04.png2948244bdf6f4b0b8a11aec92aa8ec94.png

    多阶段构建

    969077df713442f78050d2e6c30785aa.png

    导入基础镜像

    0dd982ed830047ef9ea9307667344f21.png

    nginx依赖库地址:nginx-distroless/Dockerfile at master · kyos0109/nginx-distroless · GitHub

    拷贝依赖库

    cbbd22a8c405471ba17678ebca7825fc.pngfd613d66c5f74f4eaf3a718424fcac82.png

    依赖库有错误的情况:18286ccb8aef41ec999ff10c96ad5516.png

    重新构建:0169825592f44adb9709809d02699acc.jpeg66cd4aa57ae74b37964ee7f287738073.jpeg

  • 相关阅读:
    <Visual Studio 2019安装及环境配置教程>
    C++-Cmake指令:find_library【该命令用于查找库(动态库或者静态库),当构建依赖于第三方库/系统库,可以使用该命令来查找并使用库】
    汽车工业生产线数字孪生可视化管理平台,赋予工厂车间数字化智慧化管理
    JVM - 运行时数据区
    清除Ubuntu系统中的无法启动的Ubuntu 24实例
    Yolo算法检测之NMS(非极大值抑制)原理详解
    【神经网络与深度学习】概率神经网络PNN
    网络安全(黑客)自学
    题型分类汇总
    OpenCV图像滤波(5)二维卷积滤波函数filter2D()的使用
  • 原文地址:https://blog.csdn.net/m0_65366762/article/details/133884955