Docker学习2

article/2025/8/17 18:11:42

文章目录

  • Docker学习
    • Docker镜像
      • 是什么
      • 特点
      • Docker镜像commit操作补充
    • Docker容器数据卷
      • 是什么
      • 能干嘛
      • 数据卷
        • 容器内添加
      • 数据卷容器
    • DockerFile解析
      • 是什么
      • DockerFile构建过程解析
        • 基础知识
        • Docker执行DockerFile的大致流程
      • DockerFile体系结构(保留字指令)
      • DockerFile案例
        • 自定义镜像
    • Docker常用安装
      • 总体步骤
      • 安装mysql
      • 安装redis

Docker学习

Docker镜像

是什么

  1. 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

  2. UnionFS(联合文件系统)

    1. UnionFS是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。

    2. UnionFS是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。

    3. 特性:

      一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。

  3. Docker镜像加载原理

  4. 分层的镜像

  5. 为什么Docker镜像要采用这种分层的结构

    1. 最大的一个好处就是——共享资源
    2. 例如:有多个镜像都是从相同的base镜像构建而来,那么宿主机只需要在磁盘上保存一份base镜像,同时内存中也只需要加载一份base镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。

特点

  1. Docker镜像都是只读的
  2. 当容器启动时,一个新的可写层被加载到镜像的顶部
  3. 这一层通常被称作**“容器层”,容器层之下的都叫“镜像层”**。

Docker镜像commit操作补充

  1. docker commit 提交容器副本使之成为一个新的镜像

  2. docker commit -m="提交的描述信息" -a="作者"  容器ID 要创建的目标镜像名:[标签名] 
    

Docker容器数据卷

是什么

类似Redis的RDB和AOF文件

能干嘛

  1. 容器的持久化
  2. 容器间继承+共享数据

数据卷

容器内添加

  1. 直接命令添加

    1. 命令

      docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
      
    2. 命令(带权限)

      docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
      #只读
      
  2. DockerFile添加

    1. VOLUME ["/dataVolumeContainer","/dataVolumeContainer2","/dataVolumeContainer3"]
      
    2. 说明:

      1. 处于可移植和分享的考虑,用-v 主机目录:容器目录这种方法不能够直接在DockerFile中实现。
      2. 由于宿主机目录是依赖于特定宿主机的,并不能够保证在所有的宿主机上都存在这样的特定目录。
    3. File构建

      # voulme test
      FROM centos:7
      VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
      CMD echo "finished,-------success1"
      CMD /bin/bash
    4. build后生成镜像

      docker build -f /myDocker/DockerFile -t lixi233/centos .
      

    5. run容器

      docker run -it lixi233/centos
      

    6. 通过上述步骤,容器内的卷目录地址已经知道对应的主机目录地址在哪?

    7. 主机对应默认地址

    8. 备注

数据卷容器

  1. 是什么

    命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。

  2. docker run -it --name dc02 --volumes-from dc01 lixi233/centos
    
  3. 共享的容器会共享数据

  4. 容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止

DockerFile解析

是什么

DockerFile是用来构建Docker镜像的的构建文件,是由一系列命令和参数构成的脚本。

DockerFile构建过程解析

基础知识

  1. 每条保留字指令都必须为大写且后面要跟随至少一个参数
  2. 指令按照从上到下,顺序执行
  3. “#” 表示注释
  4. 每条指令都会创建一个新的镜像层,并对镜像进行提交

Docker执行DockerFile的大致流程

  1. docker从基础镜像运行一个容器
  2. 执行一条指令并对容器做出修改
  3. 执行类似docker commit的操作提交一个新的镜像层
  4. docker再基于刚提交的镜像运行一个新容器
  5. 执行dockerfile中的下一条指令直到所有的指令都执行完成

DockerFile体系结构(保留字指令)

  1. FROM

    基础镜像,当前新镜像是基于哪个镜像的

  2. MAINTAINER

    镜像维护者的姓名和邮箱地址

  3. RUN

    容器构建时需要运行的命令

  4. EXPOSE

    当前容器对外暴露的端口

  5. WORKDIR

    指定在创建容器后,终端默认登陆进来的工作目录,一个落脚点

  6. ENV

    用来在构建镜像过程中设置环境变量

    如:ENV MY_PATH /usr/mytest

    这个环境变量可以在后续的任何RUN指令中使用

    比如:WORKDIR $MY_PATH

  7. ADD

    将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

  8. COPY

    类似ADD

    将从构建上下文目录中<源路径>的文件/目录复制到新的一层镜像内的<目标路径>位置

    COPY src dest
    COPY["src","dest"]
    
  9. VOLUME

    容器数据卷,用于保存数据和持久化工作

  10. CMD

    1. 指定一个容器启动时要运行的命令
    2. DockerFile中可以有多个CMD命令,但只有最后一个生效,CMD会被docker run之后的参数替换
  11. ENTRYPOINT

    1. 指定一个容器启动时要运行的命令
    2. ENTRYPOINT的目的和CMD一样,都是指定容器启动程序及参数
  12. ONBUILD

    当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后父镜像的ONBUILD被触发

DockerFile案例

自定义镜像

  1. Base镜像(scratch):DockerHub中99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的

  2. 自定义编写镜像mycentos

    1. 初始的centos运行时默认进入路径是pwd
    2. 默认不支持vim
    3. 默认不支持ifconfig
    4. 自定义的mycentos
      1. 登录后的默认路径
      2. vim编辑器
      3. 查看网络配置ifconfig支持
  3. 编写

    FROM centos:7
    MAINTAINER lixi233<1452594689@qq.com>ENV mypath /tmp
    WORKDIR $mypathRUN yum -y install vim
    RUN yum -y install net-toolsEXPOSE 80
    CMD echo $mypath
    CMD echo "success--------------ok"
    CMD /bin/bash
    
  4. 构建

    docker build -f DockerFile2 -t mycentos:1.3 .
    

  5. 运行

    docker run -it mycentos:1.3
    

  6. 列出镜像的变更历史

    docker history 镜像ID
    

Docker常用安装

总体步骤

  1. 搜索镜像
  2. 拉取镜像
  3. 查看镜像
  4. 启动镜像
  5. 停止容器
  6. 移除容器

安装mysql

  1. docker hub上查找mysql镜像

    docker search mysql
    
  2. 从docker hub上拉取mysql镜像到本地

    docker pull mysql
    
  3. 运行镜像

    docker run -p 3306:3306 --name mysql_01 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=********* mysql
    
  4. 交互

    docker exec -it 容器ID /bin/bash
    
  5. 数据备份

    docker exec 容器ID sh -c 'exec mysqldump --all-databases -uroot -p"*****" ' > /宿主机路径/***.sql
    

安装redis

  1. docker search redis
    
  2. docker pull redis
    
  3. docker run -p 6379:6379 --name redis_01 -v /usr/local/redis/data:/data -v /usr/local/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis redis-server /usr/local/etc/redis/redis.conf [--appendonly yes] [--requirepass *******]
    
  4. docker exec -it 容器ID redis-cli
    

http://chatgpt.dhexx.cn/article/7PIWcuc1.shtml

相关文章

Docker学习自我总结(一)

以下内容皆参考至狂神说docker学习视频 一、初识dockerfile ​ docker镜像创建时需要使用dockerfile&#xff0c;dockerfile相当于一个命令脚本&#xff0c;通过这个脚本可以生成镜像&#xff0c;镜像是一层一层的&#xff0c;脚本一个个的命令&#xff0c;每个命令都是一层&…

Docker 学习笔记

Docker 学习笔记 Docker 安装CentOS 安装 DockerUbuntu 安装 Docker Docker 常用命令 Docker 实操记录Docker 安装mysqlDocker 部署 jupyter notebook Docker 安装 CentOS 安装 Docker 以下是docker官网的安装教程&#xff0c;我只是将命令都提取出来 按下列顺序逐步输入即可…

docker 学习

centos7安装docker 步骤 1、Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。 社区版按照stable和edge两种方式发…

docker学习1

1.docker常用管理命令 格式 docker image 【】 ls 列出镜像 bulid 构建镜像利用dockerfile history 查看 inspect 显示一个或多个镜像的详细信息 pull 从镜像仓库拉取镜像 rm 移除一个或多个镜像 push 推送一个镜像到镜像仓库 prune 移除没有被…

docker 学习总结

只要学不死&#xff0c;就往死了学。 docker学习目录 docker概述docker安装docker基本组成 镜像命令容器命令操作命令 docker镜像容器数据卷dockerFiledocker 网络原理IDEA整合dockerdocker composerdocker swarmcI\cd docker概述 痛点&#xff1a;解决跨平台&#xff0c;服…

Docker学习总结

Docker学习总结 一、Docker简介二、Docker安装2.1 安装步骤2.2 卸载Docker2.3 配置阿里云镜像加速 三、Docker常用命令3.1 帮助命令3.2 镜像命令3.3 容器命令3.4 其他常用命令 四、Dockerfile4.1 DockerFile简介4.2 DockerFile体系结构(保留字指令)4.3 案例4.3.1 Base镜像(scra…

Docker学习

理念&#xff1a;一次镜像&#xff0c;处处运行。是基于go语言实现的云开源项目 容器与虚拟机的区别&#xff1a; 虚拟机是一种带环境安装的解决方案&#xff0c;可以在一种操作系统中运行另外一种操作系统。 容器不是模拟一整个操作系统&#xff0c;而是只有软件所需要的库资…

一文带你入门docker

✅作者简介&#xff1a;我是18shou&#xff0c;一名即将秋招的java实习生 &#x1f525;系列专栏&#xff1a;牛客刷题专栏 &#x1f4c3;推荐一款模拟面试、刷题神器&#x1f449; [在线刷题面经模拟面试](在线面试刷题) 目录 安装Docker 卸载旧版本 Docker初装命令 Dock…

超全的Docker学习教程(Linux云计算从入门到精通)

CONTENTS 一、docker简介 1.1 docker相关概念 1.2 docker应用场景 1.3 docker和虚拟机比较 二、初识docker 2.1 安装docker 2.2 初识docker-docker架构 2.3 配置镜像加速器 三、docker命令详解 四、docker容器数据卷 五、docker应用部署 5.1 部署mysql 5.2 部署Tom…

Docker 从入门到精通(新手建议收藏的教程)

今天给大家分享一篇小白也能看懂的Docker入门到精通学习教程&#xff0c;篇幅较长&#xff0c;但内容很干&#xff0c;值得认真看完&#xff01; 目录 一 、容器简介 二、什么是 Docker&#xff1f; 三、安装Docker Docker 从入门到精通&#xff08;新手建议收藏的教程&am…

Docker入门教程(详细)

目录 一、Docker概述 1.1 Docker 为什么出现&#xff1f; 1.2 Dorker历史 1.3 能做什么 虚拟机技术&#xff1a;&#xff08;通过 软件 模拟的具有完整 硬件 系统功能的、运行在一个完全 隔离 环境中的完整 计算机系统&#xff09; 容器化技术&#xff1a;&#xff08;容…

docker入门,这一篇就够了。

Docker入门&#xff0c;这一篇就够了。 Docker容器虚拟化平台。 前言 接触docker很长时间了&#xff0c;但是工作中也没有用到&#xff0c;所以总是学了忘&#xff0c;忘了学。不过这次&#xff0c;我打算跟大家分享一下我的学习历程&#xff0c;也算是我的独特的复习笔记&…

总线板卡(1)——总线接口类型

行业的朋友们是否碰到过这种情况&#xff0c;比如你问某厂家是否有1553B总线或者其他总线板卡时&#xff0c;对方会问你要什么接口的&#xff1f; 你知道厂家说的接口指的是什么吗&#xff1f; 这里的接口一般指板卡的总线接口&#xff0c;比较普遍的有PCI、PCIe、CPCI、PXI等…

6U VPX架构XCKU115(FPGA)+XCZU9EG(MPSOC)+TMS320C6678(DSP)的高速信号处理平台VPX630设计原理图及调试经验分享

板卡概述VPX630 是一款基于6U VPX 总线架构的高速信号处理平台&#xff0c;该平台采用一片Xilinx 的Kintex UltraScale 系列FPGA&#xff08;XCKU115&#xff09;作为主处理器&#xff0c;完成复杂的数据采集、回放以及实时信号处理算法。采用一片带有ARM 内核的高性能嵌入式处…

flexray VPX控制板设计方案详细

后IO板 1设计要求1.1功能要求3U VPX通讯板具有4路CAN&#xff0c;2路 Flex Ray、1路SGMII网口、2路RapidIO2、2路PCIE4、2路IPMI接口 整个处理模块系统框图如下&#xff1a; 图1 系统框图 根据上图&#xff0c;模块可以分为以下几个部分&#xff1a; CAN协议模块&#xff1a…

嵌入式高速串行并行技术_推荐(张锋)

前言 之前想学习一下总线相关的知识&#xff0c;就去图书馆搜&#xff0c;其中&#xff0c;有一本是&#xff1a;《嵌入式高速串行并行技术——基于FPGA实现与应用&#xff08;张锋著&#xff09;》 看了一下前言、目录、自序、以及他本书创作过程中的随笔&#xff08;小编就决…

加固机箱设计资料第289篇:基于3U VPX的 5槽加固机箱

基于3U VPX的 5槽加固机箱 一、产品简介 VPX-305 机箱平台是4U高度 3U 5S的一种便携式VPX机箱。由北京太速科技研发&#xff0c;机箱提供1个VPX总线系统槽和4个VPX 外设槽。主要用于组建VPX测试系统。整机美观大方、小巧灵活、安全可靠。可用于外场测试。 VPX-30…

VPX加固机箱学习资料第289篇:基于3U VPX的 5槽加固机箱

基于3U VPX的 5槽加固机箱 一、产品简介 VPX-305 机箱平台是4U高度 3U 5S的一种便携式VPX机箱。机箱提供1个VPX总线系统槽和4个VPX 外设槽。主要用于组建VPX测试系统。整机美观大方、小巧灵活、技术先进、安全可靠。可用于外场测试。 VPX-305采用工业级3U300W的C…

基于龙芯+国产FPGA 的VPX以太网交换板设计(二)

3.1 板卡技术要求 3.1.1 主要性能指标 本着向下兼容的原则&#xff0c;以太网交换板的设计尽量保留传统信息处理平台的基本功 能和接口&#xff0c;重点考虑提升设备的性能和扩展性。本课题以太网交换板的主要性能指标 如下&#xff1a; &#xff08; 1 &#xff09; 具…

3U VPX板卡设计

最近设计了一块3U VPX CPU板卡&#xff0c;具体硬件设计过程如下&#xff1a; 1&#xff1a;首先了解3U VPX的相关标准&#xff0c;包括板卡尺寸&#xff0c;接插件定义等等&#xff1b; 2&#xff1a;确定板卡要实现的功能&#xff0c;此板卡包含1553B、RS422、CAN总线、IO输入…