• Docker核心


    Docker镜像

    1.概述

    • 镜像是轻量级、可执行的独立软件包
    • 打包软件运行环境与基于运行环境开发的软件
    • 包含运行某个软件所需要的所有内容(代码+运行时的依赖+库+环境变量+配置文件)

    2.联合文件系统UnionFS

    • 支持文件系统的修改作为一次提交来层层叠加,同时可将不同目录挂载到统一虚拟文件系统下
    • 文件系统是Docker镜像的基础,基于基础镜像(没有父镜像)可通过分层来继承

    3.镜像加载原理

    • 镜像由一层层文件系统组成
      在这里插入图片描述

    4.分层理解

    • pull镜像时发现是一层一层在下载
      在这里插入图片描述
    • 通过docker image inspect redis:latest查看
      在这里插入图片描述
    • Docker镜像都始于一个基础镜像层,修改或增加内容时,会在当前镜像层之上创建新的镜像层
      在这里插入图片描述
    • 在添加额外镜像层的同时,镜像始终保持当前所有镜像层的组合
      在这里插入图片描述
    • pull的镜像层不能改变,容器启动时加载新的可写层到镜像顶部成容器层
      在这里插入图片描述

    5.发布镜像命令

    • docker commit
    docker commit -m="描述信息" -a="作者" 容器ID 目标镜像名:[版本]
    
    • 1

    数据卷容器

    1.引入

    • docker将数据和环境打包成镜像
    • 但产生的数据存哪里呢?
    • 若数据存于容器中,但容器容易被删除,造成数据丢失
    • 提出新需求数据持久化,此时就出现卷!
    • 卷可理解为docker产生的数据自动同步到本地,就是目录挂载,将容器目录挂载到Linux上
    • 卷是容器的持久化和同步操作!容器间也可以数据共享

    2.使用

    • 直接用命令挂载
      在这里插入图片描述
    • DockerFile挂载,下面介绍

    3.优点

    • 挂载后修改本地,容器会自动同步

    4.练习mysql数据卷

    • 搜索mysql镜像
      在这里插入图片描述
    • 拉取mysql的镜像
      在这里插入图片描述
    • 查看mysql镜像是否下载好
      在这里插入图片描述
    • 利用镜像创建mysql的容器
      在这里插入图片描述
    • 从本地测试连接
      在这里插入图片描述
    • 删除容器后,本地数据任然存在

    5.具名和匿名挂载

    在这里插入图片描述

    • 区分
      在这里插入图片描述
    • 扩展
      在这里插入图片描述

    6.实现容器间数据同步

    在这里插入图片描述

    • 启动docker01
      在这里插入图片描述
    • 启动docker02
      在这里插入图片描述
    • 在docker01中创建文件
      在这里插入图片描述
    • 在docker02中查看
      在这里插入图片描述
    • docker03同样可以继承父容器实现数据共享
    • 删除docker01后,文件任然存在
      在这里插入图片描述

    DockerFile

    1.概述

    • DockerFile用来构建Docker镜像的文件的命令参数脚本
    • 每个指令都必须大写
    • 从上到下的执行顺序
    • 每个命令都会创建提交一个新的镜像层
    • #表示注解

    2.命令

    在这里插入图片描述

    3.实战

    • 编写DockerFile文件
      在这里插入图片描述
    • 运行DockerFile文件构建镜像
      在这里插入图片描述
    • 测试运行

    4.了解其他镜像

    在这里插入图片描述

    发布镜像

    1.发布到DockerHub

    • 注册账号 https://hub.docker.com/
    • 登录docker
      在这里插入图片描述
    • 提交镜像
      在这里插入图片描述

    2.发布到阿里云

    • 登录阿里云,找到容器镜像服务在这里插入图片描述
    • 创建命名空间
      在这里插入图片描述
    • 创建容器镜像
      在这里插入图片描述
    • 阿里有操作指南
      在这里插入图片描述

    流程总结

    在这里插入图片描述

    Docker网络

    1.Docker0理解

    • 主机 ip addr
      在这里插入图片描述
    • docker ip addr
      在这里插入图片描述
    • 再次 ip addr
      在这里插入图片描述
    • 再启动一个容器
      在这里插入图片描述
    • ping两个容器
      在这里插入图片描述
    • 总结网络模型
      在这里插入图片描述
    • 测试
      在这里插入图片描述
    • docker0不支持自定义互连

    2.link

    • 直接通过容器名无法ping
      在这里插入图片描述
    • link后可以解决
      在这里插入图片描述
    • 但是反过来不行
      在这里插入图片描述
    • 看容器hosts文件配置
      在这里插入图片描述
    • 此方式太笨,不支持双向绑定

    3.网络模式

    • bridge:桥接(默认,推荐)
    • none:不匹配网络
    • host:与宿主机共享网络
    • container:容器内网络互连(局限大)
    • 桥接往下看

    桥接模式bridge

    1.概述

    • 启动docker时(不另外配置)自动创建默认bridge网络,新建的容器都会自动连接这个网络

    2.作用

    • 隔离各个容器,使每个容器的端口号都是隔离的,防止容器与宿主机,容器与容器间发生端口占用的情况
    • 桥接网络用于同一主机上容器间相互通信(连接到同一网桥的容器可以相互通信)

    3.常用命令

    • docker network ls:查看所有网络
    • docker network create -d bridge 网络名:创建bridge网络
    • docker network inspect 网络名:查看网络详情
    • docker network remove 网络名:删除网络

    4.两个容器通过网桥互连

    • 查看镜像
      在这里插入图片描述
    • 创建两个mysql容器
    docker run -p 3308:3306 --name ycmysql8 -e MYSQL_ROOT_PASSWORD=a -d mysql:8 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    -----------------------------------------------------------
    docker run -p 3310:3306 --name testmysql -e MYSQL_ROOT_PASSWORD=a -d mysql:8 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    
    • 1
    • 2
    • 3
    • 查看容器是否启动,未启动先启动
      在这里插入图片描述
    • 创建网桥
    docker network create -d bridge  ycnetwork
    
    • 1
    • 查看网桥是否创建
      在这里插入图片描述
    • 容器与网桥建立连接
    docker network connect ycnetwork ycmysql8
    docker network connect ycnetwork testmysql
    
    • 1
    • 2
    • 查看网络详情,发现两容器连接到同一网络下
      在这里插入图片描述
    • 进入容器,远程登录ycmysql8 ,查看ycmysql8中创建的库,可看到则成功
    docker exec -it testmysql /bin/bash
    mysql -h 172.20.0.3  -uroot -pa
    
    • 1
    • 2
  • 相关阅读:
    2023年【司钻(钻井)】及司钻(钻井)作业模拟考试
    Gateway服务网关
    app毕业设计开题报告-基于Uniapp实现的移动端的医生挂号就诊平台
    Linux的简单介绍
    Java字符串String、StringBuffer、StringBuilder的异同
    Shiro-550 漏洞分析
    Redis 底层的数据结构
    【Vue】Vue-Router 路由的理解和使用(2)
    BFS 之Flood Fill 算法(二)
    java设计模式3,里氏替换原则
  • 原文地址:https://blog.csdn.net/weixin_51699336/article/details/124946073