当前位置: 首页 > news >正文

Docker(springcloud笔记第三期)

p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解

目录

    • 镜像与容器
    • 一些命令与镜像命名规范
    • 数据卷
    • 自定义镜像
      • Dockerfile

镜像与容器

当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image),镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。Docker会在运行镜像时创造一个隔离环境,称为容器(container)

镜像仓库:存储和管理镜像的平台,Docker Hub

一些命令与镜像命名规范

docker run:创建并运行一个容器
docker stop:停止容器进程
docker start:启动容器进程
-d:让容器在后台运行
–name mysql:给容器起个名字,必须唯一
-p 3306:3306:设置端口映射(宿主机端口映射到容器内端口)
-e KEY=VALUE:设置环境变量
mysql:指定运行的镜像的名字
docker pull:将远端镜像拉取到本地
docker push:将本地镜像推送到远端
docker images:查看本地所有镜像
docker rmi:删除本地镜像
docker build:构建镜像
docker save:将镜像保存为压缩文件
docker load:将镜像加载到本地
docker ps:查看当前容器的运行状态
docker rm:删除本地容器
docker logs:查看容器运行日志
docker exec:进入容器内部

镜像名称一般分两部分组成:[repository]:[tag]。
● 其中repository就是镜像名
● tag是镜像的版本
在没有指定tag时,默认是latest,代表最新版本的镜

数据卷

**数据卷(volume)**是一个虚拟目录,是容器内目录和宿主机目录之间映射的桥梁

命令 说明
docker volume create 创建数据卷
docker volume ls 查看所有数据卷
docker volume rm 删除指定数据卷
docker volume inspect 查看某个数据卷的详情
docker volume prune 清除数据卷

自定义镜像

镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是将上述文件打包的过程

部署一个java应用的步骤
准备一个Linux容器
安装JRE并配置环境变量
拷贝jar包
运行jar包
。。。。。。。。。。。。。。
构建有一个java镜像的步骤
准备一个Linux运行环境
安装JRE并配置环境变量
拷贝jar包
编写运行脚本

docker会把构建镜像的每一步产生的文件分别打成压缩包,作为镜像的一部分,而不是将每一步产生的文件全部整成一个包作为镜像
而这每一步产生的压缩包称为层(Layer)。进行添加安装包、依赖、配置等每步操作时,每次操作都会产生一个新的层
优点:当你制作好了一个基础镜像后,以后制作镜像可以使用该镜像作为基础,简化了镜像的构建
并且在下载镜像时,如果docker检测到该镜像的前几层在本地有的话就不会重复下载了,节省了空间,提升了下载速度
基础镜像(BaseImage):即应用依赖的系统函数库、环境、配置、文件等
入口(EntryPoint):镜像运行入口,一般指程序启动的脚本和参数这层

Dockerfile

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。常见指令如下:

在这里插入图片描述

总结
镜像包含了应用程序所需要的运行环境、函数库、配置、以及应用本身等各种文件,这些文件分层打包而成
Dockerfile就是利用固定的指令来描述镜像的结构和构建过程,这样Docker才可以依次来构建镜像

http://www.dtcms.com/a/330150.html

相关文章:

  • docker 将本地python环境(有系统依赖)进行打包移到另一个服务器进行部署
  • 飞算AI:企业智能化转型的新引擎——零代码重塑生产力
  • sql查询优化方式常见情况总结
  • TLSv1.2协议与TCP/UDP协议传输数据内容差异
  • 【Redis】Sentinel (哨兵)
  • 深度学习实战114-基于大模型的深度研究(DeepResearch)架构:从自主信息探索到洞察生成的革命
  • games101 第三讲 Transformation(变换)
  • RK3568项目(十五)--linux驱动开发之进阶驱动
  • Linux应用层开发--进程处理
  • 【完整源码+数据集+部署教程】医学报告图像分割系统源码和数据集:改进yolo11-HGNetV2
  • @Linux进程管理工具 - PM2全面指南
  • 理财 - 基金
  • 【React】use-immer vs 原生 Hook:谁更胜一筹?
  • PromptPilot — AI 自动化任务的下一个环节
  • 云蝠智能 Voice Agent 多模型接入技术架构与实践
  • 微信小程序实现导航至目的地
  • 腾讯位置商业授权微信小程序关键词输入提示
  • python自学笔记7 可视化初步
  • 并发编程(八股)
  • epoll模型解析
  • 数据科学与计算:从基础到实践的全面探索
  • 深度学习(6):参数初始化
  • 动画相关 属性动画+animateToImmediately+ImageAnimator帧动画组件+模态转场
  • 【C++】哈希表的实现
  • EUDR的核心内容,EUDR认证的好处,EUDR意义
  • web开发,在线%射击比赛管理%系统开发demo,基于html,css,jquery,python,django,三层mysql数据库
  • lesson37:MySQL核心技术详解:约束、外键、权限管理与三大范式实践指南
  • SpringBoot工程妙用:不启动容器也能享受Fat Jar的便利
  • CAD 的 C# 开发中,对多段线(封闭多边形)内部的点进行 “一笔连线且不交叉、不出界
  • ECC的原理、背景、工作机制和数学基础