[docker]入门
本文章主要讲述的是,docker基本实现原理,docker概念的解释,docker的使用场景以及docker打包与部署的应用。
文章中docker所运行的系统:CentOS Linux release 7.9.2009 (Core)
目录
docker是什么,什么时候需要去使用
介绍
使用场景
部署多个环境
解决资源共享以及环境复杂的问题
快速上线与项目的回滚
docker相关概念
架构
client客户端
host主机
daemon守护进程
image镜像
contain容器
registry仓库
docker镜像的制作
编写dockerfile
生成依赖文件
docker容器的运行
docker是什么,什么时候需要去使用
介绍
docker是一个应用容器引擎,允许将一个应用程序和其所需的所有依赖打包到一个单元中,且底层架构以及其他单元进行隔离。
使用场景
部署多个环境
需要对同一个项目部署多个环境(像是有开发环境,测试环境,生产环境),在对一个项目打包之后就减少了很多手动配置管理的出错可能。
方便的进行部署,且不会出错。因为项目所需的所有依赖都打进了包中了,只需要下载再启动即可。
解决资源共享以及环境复杂的问题
docker当中会有一个叫仓库的概念,可以将打包好的程序和依赖上传到仓库中。不同服务器之间,只需要访问同一个仓库,对所需的包进行拉取即可。
依赖:像是我在windows写好了一个java程序,想要部署到一个云服务器上进行运行,让外部人员进行访问。那我就还要在云服务器上下载java,然后再进行运行等操作
而对于一些大型的项目,其环境往往是很复杂的。如果对于不同的操作系统,可能就要手动的将项目的依赖重新yum一遍,容易出错且耗时长。如果使用docker将项目和依赖打包后就不会出现这样的问题
快速上线与项目的回滚
在实际的开发中,可能需要常常的进行功能的优化或者版本的迭代。使用docker对项目进行打包就可以实现快速的安装。
docker支持对打包好的单元打上标签,
像是v1和v2,例如v2对于v1来说是一次大版本的迭代与更新,部署到生产环境上可能会有问题的出现。
那就可以使用docker将v1和v2版本都先部署起来,将v1暂停,v2对外开放。当v2出错接受到告警的时候可以直接将v2暂停,v1重新开放。实现快速的回滚也影响生产环境的使用。
docker相关概念
架构
docker使用c/s架构模式(客户端-服务器),使用远程API来管理和创建容器。容器则根据镜像而创建
下面的流程主要是(以run命令为例):
- 用户输入docker run hello-world,从客户端发送到主机的daemon中
- daemon在主机中查看本地镜像存储是否有hello-world这个镜像。如果有,则根据本地存储中的镜像去创建容器。
- 如果没有则去docker仓库中查看是否有hello-world这个镜像,有则把此镜像从仓库拉取到本地镜像存储当中
- 然后再去根据刚刚拉下来的hello-world去创建一个容器运行

client客户端
在本地使用dockerAPI与主机中daemon进行通信的工具
host主机
一个物理机或者虚拟机,用来执行docker-daemon与容器
daemon守护进程
docker服务的核心组件,docker最核心的后台进程
image镜像
用于创建容器的模板
contain容器
一个独立运行的一个或一组应用
镜像与容器的关系有点类似于java中的类与对象
registry仓库
用来保存与管理镜像的,类似于github或者gitee之类的代码管理平台。
有官方的,也有自己私人搭建的
docker镜像的制作
镜像的制作有两种方法:
- 对本地的镜像进行更新,再重新commit上去形成一个新的镜像
- 使用dockfile去创建一个新的镜像
这里说明的流程是直接去创建一个新的镜像。
以python中flask项目为例,制作一个镜像上传到docker image当中
首先是项目的文件结构

编写dockerfile
dockerfile是一个文本文件,没有后缀。是存放着参数与方法去指导docker daemon根据dockerfile创建一个镜像。
# FROM是使用一个基础镜像,此处选择的是带有python3.11版本的镜像
FROM python:3.11# 将当前目录下的test复制到容器中的/docker_test目录下
COPY ./test/ /docker_test/# 指定一个工作目录/docker_test. 工作目录:在容器当中,进入到某一个路径中去执行后面的指令
WORKDIR /docker_test# 在工作目录/docker_test下执行run执行,run指令可以有多条
# 安装项目所需的依赖
RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/# 声明容器可能会使用的端口为5000与宿主机进行通信
EXPOSE 5000# 使用CMD指令中的exec格式去运行下面的指令
# 运行python指令,参数为app.py
# 即在工作目录下执行python app.py指令
CMD ["python", "app.py"]
生成依赖文件
在pycharm的终端中执行pip freeze > requirement.txt生成依赖文件

连着虚拟环境一起打成压缩包上传到centos7当中 然后进行解压
使用docker build命令去创建一个镜像
对于下面docker build命令的解析
docker build是docker中创建镜像的命令
-t参数是对这个镜像进行命名,命名为my_flask_image
后面这个path参数是指dockerfile文件的参数,因为dockerfile就在当前目录下,所以我指定了“.”
docker build -t my_flask_image .

执行后使用docker images命令查看镜像是否创建好了
可以看到host中的本地镜像存储中已经有了我们刚刚制作好的镜像了。

docker容器的运行
容器是根据镜像创建出来的,相互间独立的实体。
通过docker run 镜像名/镜像ID
-i 让容器可进行交互
-t 让容器指定出一个终端
-d 让容器以后台模式进行运行
-p 容器端口:宿主机端口 用于容器与宿主机间的端口映射

根据刚刚创建出的镜像去运行容器,将容器中5000端口映射到宿主机的5000端口中,这样路径为宿主机IP:5000的时候就可以访问这个flask项目创建出的页面了
相关文章:
[docker]入门
本文章主要讲述的是,docker基本实现原理,docker概念的解释,docker的使用场景以及docker打包与部署的应用。 文章中docker所运行的系统:CentOS Linux release 7.9.2009 (Core) 目录 docker是什么,什么时候需要去使用 …...
《让手机秒变超级电脑!ToDesk云电脑、易腾云、青椒云移动端评测》
前言 科技发展到如今2024年,可以说每一年都在发生翻天覆地的变化。而云上这个词时常都被大家提起,从个人设备连接到云端在如今在也不是梦了。而云电脑这个市场近年来迅速发展,无需购买和维护额外的硬件就可以体验到电脑端顶配的性能和体验&am…...
Nginx处理带有分号“;“的路径
一、背景 安全渗透测试发现springboot 未授权访问的actuator和Swagger-ui 信息泄露的漏洞,需要规避。解决方案中较简单的就是通过Nginx将相关的接口转发到403页面。 在配置的过程当中,遇到了带有…;的路径:http://{ip:port}/{path}/…;/actu…...
Spring Boot框架下的心理教育辅导系统开发
1绪 论 1.1研究背景 随着计算机和网络技术的不断发展,计算机网络已经逐渐深入人们的生活,网络已经能够覆盖我们生活的每一个角落,给用户的网上交流和学习提供了巨大的方便。 当今社会处在一个高速发展的信息时代,计算机网络的发展…...
PyTorch 图像分割模型教程
PyTorch 图像分割模型教程 在图像分割任务中,目标是将图像的每个像素归类为某一类,以分割出特定的物体。PyTorch 提供了非常灵活的工具,可以用于构建和训练图像分割模型。我们将使用 PyTorch 的经典网络架构,如 UNet 和 DeepLabV…...
物联网——USART协议
接口 串口通信 硬件电路 电平标准 串口参数、时序 USART USART主要框图 TXE: 判断发送寄存器是否为空 RXNE: 判断接收寄存器是否非空 RTS为输出信号,用于表示MCU串口是否准备好接收数据,若输出信号为低电平,则说明MCU串口可以接收数据&#…...
前端框架对比与选择:如何在现代Web开发中做出最佳决策
随着互联网技术的迅速发展,前端开发在现代Web应用开发中扮演了至关重要的角色。对于开发者来说,选择合适的前端框架不仅能够提高开发效率,还能确保项目的可维护性和可扩展性。目前市面上有多种主流的前端框架和库,每一种都有其独特…...
【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例
【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例 前言问题描述控制方程及数值方法浅水方程及其数值计算方法边界条件的实现 代码框架与关键代码模拟结果 更新于2024年9月17日 前言 这篇博客算是学习浅水方程,并利用MATLAB复刻Liang (2004)1中溃坝流算例的一个记录…...
探索云计算:IT行业的未来趋势
探索云计算:IT行业的未来趋势 在当今快速发展的科技世界,云计算已成为IT行业的核心趋势之一。无论是大企业还是初创公司,越来越多的组织正在转向云计算,以实现更高效的运营和更快的创新。在这篇博文中,我们将探讨云计算…...
[PICO VR眼镜]眼动追踪串流Unity开发与使用方法,眼动追踪打包报错问题解决(Eye Tracking/手势跟踪)
前言 最近在做一个工作需要用到PICO4 Enterprise VR头盔里的眼动追踪功能,但是遇到了如下问题: 在Unity里面没法串流调试眼动追踪功能,根本获取不到Device,只能将整个场景build成APK,安装到头盔里,才能在…...
一周热门|比GPT-4强100倍,OpenAI有望年底发布GPT-Next;1个GPU,1分钟,16K图像
大模型周报将从【企业动态】【技术前瞻】【政策法规】【专家观点】四部分,带你快速跟进大模型行业热门动态。 01 企业动态 Ilya 新公司 SSI 官宣融资 10 亿美元 据路透社报道,由 OpenAI 联合创始人、前首席科学家 Ilya Sutskever 在 2 个多月前共同创…...
软考流水线计算
某计算机系统输入/输出采用双缓冲工作方式,其工作过程如下图所示,假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间T为10μs,由缓冲区送至用户区的时间M为6μs,系统对每个磁盘块数据的处理时间C为2μs。若用户需要…...
1份可以派上用场丢失数据恢复的应用程序列表
无论如何,丢失您的宝贵数据是可怕的。您的 Android 或 iOS 设备可能由于事故、硬件损坏、存储卡问题等而丢失了数据。这就是为什么我们编制了一份可以派上用场以恢复丢失数据的应用程序列表。 如果您四处走动,您大多会随身携带手机或其他移动设备。这些…...
MySQL Workbench 超详细安装教程(一步一图解,保姆级安装)
前言: MySQL Workbench 是一款强大的数据库设计和管理工具,它提供了图形化界面,使得数据库的设计、管理、查询等操作变得更加直观和便捷。本文将详细介绍如何在 Windows 系统上安装 MySQL Workbench。相信读者看这篇文章前一定安装了MySQL数…...
深度学习常见面试题及答案(16~20)
算法学习、4对1辅导、论文辅导或核心期刊以及其他学习资源可以通过公众号滴滴我 文章目录 16. 简述深度学习中的批量归一化(Batch Normalization)的目的和工作原理。一、批量归一化的目的1. 加速训练收敛:2. 提高模型泛化能力:3. …...
Packet Tracer - IPv4 ACL 的实施挑战(完美解析)
目标 在路由器上配置命名的标准ACL。 在路由器上配置命名的扩展ACL。 在路由器上配置扩展ACL来满足特定的 通信需求。 配置ACL来控制对网络设备终端线路的 访问。 在适当的路由器接口上,在适当的方向上 配置ACL。…...
Langchain-chatchat源码部署及测试实验
一年多前接触到Langchain-chatchat的0.2版本,对0.2版本进行了本地部署和大量更新,但0.2版本对最新的大模型支持不够好,部署框架支持也不好且不太稳定,特别是多模态大模型,因此本次主要介绍0.3版本的源码部署,希望对大家有所帮助。Langchain-chatchat从0.3版本开始,支持更…...
【Linux】线程(第十六篇)
目录 线程 1.线程基本概述: 2.线程类型: 3.线程间的共享资源与非共享资源 4.线程原语 1.线程创建函数 2.获取当前线程id的函数 3.回收线程资源 4.将线程设置为分离态 5.结束线程 6.退出线程 线程 1.线程基本概述: 是操作系统能够…...
2024华为杯研赛E题保姆级教程思路分析
E题题目:高速公路应急车道紧急启用模型 今年的E题设计到图像/视频处理,实际上,E题的难度相对来说较低,大家不用畏惧视频的处理,被这个吓到。实际上,这个不难,解决了视频的处理问题,…...
国内可以使用的ChatGPT服务【9月持续更新】
首先基础知识还是要介绍得~ 一、模型知识: GPT-4o:最新的版本模型,支持视觉等多模态,OpenAI 文档中已经更新了 GPT-4o 的介绍:128k 上下文,训练截止 2023 年 10 月(作为对比,GPT-4…...
告别教材下载烦恼:国家中小学智慧教育平台电子课本解析工具如何实现3分钟高效获取
告别教材下载烦恼:国家中小学智慧教育平台电子课本解析工具如何实现3分钟高效获取 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地…...
【手把手教学】使用stitch 生成ui图,导入figma,再用codebuddy生成工程代码
目录 一.stich使用 1.1 关键词生成 1.2 生成ui图 1.3 导出figma编辑 二. codebuddy使用 编辑2.1打开figma 编辑 2.2 复制ui到设计面板 2.3生成工程代码 三. 结语 一.stich使用 stich官网地址 Google Stitch 是 Google Labs 推出的、基于 Gemini 大模型驱动的A…...
音乐留学路上,这些坑我替你踩过了|纯干货分享
写给正在准备或即将踏上音乐留学之路的你嘿,准备音乐留学的你。我知道你现在可能既兴奋又焦虑,手里攥着梦想,却不知道下一步该往哪走。别慌,作为过来人,我想跟你聊点实在的。"音乐留学不是终点,而是你…...
4款降AI率工具实测横评:最便宜和最贵的效果差多少?
花了几百块,测了一圈,现在把结果告诉你。 降AI率工具、降AI工具保姆级测评2026、降AI这个需求,不同工具之间差距其实挺明显的,不是"随便用一个都一样"。 我的结论:嘎嘎降AI(www.aigcleaner.com…...
基于MCGS嵌入版7.7的全自动洗车机组态仿真程序编写与流程图详解
MCGS洗车程序 MCGS嵌入版7.7组态仿真程序 全自动洗车机,脚本程序编写 有完整的流程图"这洗车机PLC程序怎么又卡在喷淋环节了?"凌晨两点的工控车间里,我盯着MCGS嵌入版的仿真界面直挠头。全自动洗车机的脚本调试真是个磨人的小妖精&…...
AI辅助开发进阶:让快马智能助手帮你设计与优化专业图像处理库
今天想和大家分享一个很实用的开发经验——如何用AI辅助工具来优化和扩展专业图像处理库的开发。最近我在做一个Python图像处理工具库,正好用InsCode(快马)平台的AI功能做了些尝试,效果出乎意料的好。 先说说背景。这个工具库最初只有基础的图片缩放和滤…...
零基础玩转mxbai-embed-large-v1:6大核心功能实战,从向量化到摘要生成
零基础玩转mxbai-embed-large-v1:6大核心功能实战,从向量化到摘要生成 1. 引言:为什么选择mxbai-embed-large-v1? mxbai-embed-large-v1是当前自然语言处理领域的一颗新星,这款多功能句子嵌入模型在MTEB基准测试中表…...
汽车电子选型:RF430F5144CIRKVRQ1为什么适合发动机舱附近的应用
RF430F5144CIRKVRQ1:这颗77mm的QFN芯片,如何把13.56MHz NFC和MSP430 MCU塞进一颗汽车级SoCRF430F5144CIRKVRQ1来自德州仪器,是一颗高度集成的NFC传感器收发器SoC。它的核心价值很直接:把13.56MHz HF射频前端、16位MSP430超低功耗M…...
Snes9x音频系统深度探索:Blargg SPC库如何实现高保真声音模拟
Snes9x音频系统深度探索:Blargg SPC库如何实现高保真声音模拟 【免费下载链接】snes9x Snes9x - Portable Super Nintendo Entertainment System (TM) emulator 项目地址: https://gitcode.com/gh_mirrors/sn/snes9x Snes9x作为一款经典的Super Nintendo Ent…...
效率倍增:用快马云端jupyter notebook打造可复现、易协作的数据分析流水线
效率倍增:用快马云端jupyter notebook打造可复现、易协作的数据分析流水线 最近在团队里做数据分析时,经常遇到这样的困扰:每次新同事加入项目,都要花半天时间配置本地jupyter环境;好不容易跑通的代码,换台…...
