[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命令为例):

  1. 用户输入docker run hello-world,从客户端发送到主机的daemon中
  2. daemon在主机中查看本地镜像存储是否有hello-world这个镜像。如果有,则根据本地存储中的镜像去创建容器。
  3. 如果没有则去docker仓库中查看是否有hello-world这个镜像,有则把此镜像从仓库拉取到本地镜像存储当中
  4. 然后再去根据刚刚拉下来的hello-world去创建一个容器运行

client客户端

在本地使用dockerAPI与主机中daemon进行通信的工具

host主机

一个物理机或者虚拟机,用来执行docker-daemon与容器

daemon守护进程

docker服务的核心组件,docker最核心的后台进程

image镜像

用于创建容器的模板

contain容器

一个独立运行的一个或一组应用

镜像与容器的关系有点类似于java中的类与对象

registry仓库

用来保存与管理镜像的,类似于github或者gitee之类的代码管理平台。

有官方的,也有自己私人搭建的

docker镜像的制作

镜像的制作有两种方法:

  1. 对本地的镜像进行更新,再重新commit上去形成一个新的镜像
  2. 使用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项目创建出的页面了 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1534848.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

房产销售系统:SpringBoot技术优势分析

第三章 系统分析 3.1 系统设计目标 房产销售系统主要是为了用户方便对房源信息管理、房源类型管理、房子户型管理、交易订单管理、预约看房管理、评价管理等信息进行查询,也是为了更好的让管理员进行更好存储所有数据信息及快速方便的检索功能,对系统的各…

5.安卓逆向-java面向对象

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:图灵Python学院 上一个内容:4.安卓逆向-常用数据结构java语言中的集合 之前的内容写了java语言常用的数据结构&#xff08…

OpenAI o1:AI领域的“草莓”革命,华人科学家贡献卓越

最近,科技界的热门明星“草莓”频繁出现在大家的视线中。9月11号,The Information报道称:OpenAI计划在未来两周内推出一款更智能、更昂贵、更谨慎的AI模型!网友们对此消息持怀疑态度,认为类似消息屡见不鲜,…

创新数字生态:智慧园区的益处与影响

智慧园区是一种利用先进信息技术、智能设备和数据分析手段来提升管理效率、改善居住体验、节约资源以及推动可持续发展的新型城市发展模式。其好处和影响不仅局限于提高工作效率,还涉及社会、生态、经济等多个方面的积极影响。 好处 智能化管理优势: 智慧园区能够实…

mac上Charles怎么配置,可以抓取浏览器/IDEA的接口

一、抓取浏览器接口 1、下载安装Charles后,按下图操作安装证书,mac撒好难过要把证书调整为可信任 2、打开macOS代理 方式一:指点开启这里 方式二:进入代理配置中开启,结果和方式一一样的 3、这时就可以抓取到浏览器…

编写注册接口与登录认证

编写注册接口 在UserController添加方法 PostMapping("/login")public Result login(Pattern(regexp "^\\S{5,16}$") String username,Pattern(regexp "^\\S{5,16}$") String password){ // 根据用户名查询用户User loginUser userS…

8个前端库-小且美

前提:前端有很多小而美的库,接入成本很低又能满足日常开发需求,同时无论是 npm 方式引入还是直接复制到本地使用都可以。 1.radash radash相比与 lodash,更加面向现代,提供更多新功能(tryit,…

系统架构设计师教程 第5章 5.2需求工程 笔记

5.2 需求工程 ★★★★★ 软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。 软件需求包括3个不同的层次:业务需求、用户需求和功能需求(也包括非功能需求)。 (1)业务需求 (business requirement) 反映了组织机构或客户对系统、产品高层次的目标…

哪款宠物空气净化器是除浮毛王者?希喂、范罗士、霍尼韦尔宠物空气净化器实测

养宠人绕不过的痛——掉毛!脱毛!又到了掉毛季,就连空气中都有毛毛……不管遇到谁,都知道你养猫养狗了——只因T恤变身毛线衫、毛毛怎么都粘不干净。不止是衣服上,地板上、沙发上、桌面上,哪哪都是毛。开始养…

[产品管理-15]:NPDP新产品开发 - 13 - 产品创新流程 - 具体产品的创新流程:精益生产与敏捷开发

目录 前言:​ 一、集成产品开发IPD模型——集成跨功能团队的产品开发 1.1 概述 1、IPD模型的核心思想 2、IPD模型的主要组成部分 3、IPD模型的实施步骤 4、IPD模型的优点 1.2 基于IPD系统的组织实践等级 1.3 IPD的优缺点 二、瀑布开发模型 1、定义与特点…

物体识别之微特征识别任务综述

“深度人工智能”是成都深度智谷科技旗下的人工智能教育机构订阅号,主要分享人工智能的基础知识、技术发展、学习经验等。此外,订阅号还为大家提供了人工智能的培训学习服务和人工智能证书的报考服务,欢迎大家前来咨询,实现自己的…

python安装换源

安装 python 使用演示的是python 3.8.5 安装完成后,如下操作打开命令行:同时按 “WindowsR” > 输入 “cmd” -> 点击确定 python换源 临时换源: #清华源 pip install markdown -i https://pypi.tuna.tsinghua.edu.cn/simple # 阿里…

个性化、持续性阅读 学生英语词汇量自然超越标准

2024年秋季新学年,根据2022版《义务教育英语课程标准》全新修订的英语新版教材开始投入使用,标志着我国英语教育迈入了一个以应用为导向、注重综合素养培养的新阶段。 新版教材的变革不仅仅是一次词汇量的简单增加,更是一场从应试到应用的深…

【鸿蒙】HarmonyOS NEXT星河入门到实战9-组件化开发进阶应用状态管理

目录 1.1 创建页面 1.2 页面跳转和后退 1.3 页面栈 1.4 路由模式 1.5 路由传参 2、生命周期 3、Stage模型 3.1 目录概览 3.2 app.json5应用配置 3.3 module.json5模型配置 3.4 UIAbility组件 3.5 UIAbility的添加和设置启动 3.6 UIAbility组件的生命周期 3.7 拉起另…

微信小程序基本信息填写要求(收藏)

小程序基本信息填写 小程序名称:小程序在发布前,名称设置成功以后有2次修改名称机会,2次机会用完,必须先发布后,才可通过微信认证进行改名。 小程序头像:新头像不允许涉及政治敏感与色情;图片格式必须为&…

使用nvm安装node版本报错

报错 windows 通过nvm安装版本,在本地安装了nvm后,通过nvm安装node报错了,报错如下图: 解决方法 1.如果你找不到相关配置文件在哪儿,可以打开vscode在终端输入nvm root,此时就会显示你的nvm配置文件路径&…

大顶堆+动态规划+二分

前言&#xff1a;我们这一题需要分类讨论 对于我们左边和右边的我们需要预处理 有点类似反悔堆的做法&#xff0c;得出i之前取出 m 个元素代价最小&#xff0c;并且这个代价一定是递减的&#xff08;可以推导一下&#xff09; 题目地址 #include<bits/stdc.h> using name…

【Jetson】Jetson Orin NX刷机教程

Jetson Orin NX刷机教程 一、硬件准备二、安装SDK Manager三、在线或离线刷机 一、硬件准备 需要将Jetson Orin NX的GND和FC_REC引脚短接&#xff0c;设备进入刷机模式。然后用Type-C线将其余主机连接&#xff0c;主机的选择可以为ubuntu虚拟机或者ubuntu系统。注意如果选择虚…

手机玩机常识____展讯芯片刷机平台ResearchDownload的一些基本常识与问题解决

展讯ResearchDownload工具 展讯芯片的刷机工具--ResearchDownload下载工具"是一款专为用户设计的高效、便捷的下载管理软件&#xff0c;它能够帮助用户快速、稳定地从互联网上获取各种文件。这款工具以其强大的功能和良好的用户体验&#xff0c;在众多展讯芯片下载工具中脱…

Spring扩展点系列-SmartInstantiationAwareBeanPostProcessor

文章目录 简介源码分析示例 简介 spring容器中Bean的生命周期内所有可扩展的点的调用顺序 扩展接口 实现接口ApplicationContextlnitializer initialize AbstractApplicationContext refreshe BeanDefinitionRegistryPostProcessor postProcessBeanDefinitionRegistry B…