docker容器使用初体验
我们写程序时,都会搭建相关的环境,比如写了一个web,使用了tomcat、nginx等,现在想要把程序部署到云服务器或者在其他电脑上运行,就需要重新部署一遍环境,尤其是项目开源后,上手成本大。
docker
介绍
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
(来源于菜鸟教程)
安装
docker依赖于linux内核,因此在windows系统中需要安装Hyper-V(类似于 VMWare 或 VirtualBox)或者WSL,然后进入docker desktop官网下载安装程序,双击运行即可。安装完成后可以在虚拟机中运行命令docker --version
检查是否成功安装。
镜像和容器的区别
Docker 中镜像(Image)和容器(Container)是两个核心概念,它们有以下主要区别:
- 定义和用途:
- 镜像(Image):镜像是一个只读的文件系统快照,它包含了一个应用程序及其运行环境所需的所有内容,包括代码、库、依赖项、配置等。镜像是用于创建容器的模板,可以看作是一个静态的、不可更改的应用程序打包。
- 容器(Container):容器是一个运行时实例,它是基于镜像创建的,包含了应用程序及其所有依赖项的运行环境。容器可以被启动、停止、删除等,它提供了一个隔离的运行环境,使应用程序能够在不同的容器中运行,而不受主机环境的影响。
- 可变性:
- 镜像是不可更改的,一旦创建就不能修改。如果需要对应用程序或环境进行更改,必须创建一个新的镜像。
- 容器是可变的,可以在运行时进行修改。你可以进入容器、安装软件、修改配置等,然后保存为新的镜像,以便将更改保存下来。
- 生命周期:
- 镜像的生命周期是静态的,它存在于磁盘上并可以被多个容器实例使用。
- 容器的生命周期是动态的,它可以被创建、启动、停止和销毁。容器是临时的运行实体。
- 资源消耗:
- 镜像通常占用磁盘空间,并且资源消耗较低,因为它们是静态的。
- 容器占用系统资源(CPU、内存等),因为它们正在运行应用程序和服务。
总之,镜像是容器的模板,用于创建容器实例。容器是在镜像基础上运行的可执行实体,具有自己的运行时状态。Docker 的强大之处在于它允许你使用镜像来轻松创建、分发和管理容器,从而实现应用程序的隔离和可移植性。
dockerhub
Docker Hub 是一个在线的 Docker 镜像仓库和容器注册表服务。它是 Docker 公司提供的官方服务,用于帮助开发人员和运维团队存储、分享和获取 Docker 镜像。Docker Hub 允许用户上传、存储和管理 Docker 镜像。这些镜像可以包含操作系统、应用程序、服务和其他容器化的组件,供其他用户下载和使用,类似于Github仓库。
如果要上传一个镜像,就需要编写dockerfile脚本文件,在这个文件中写入环境配置的命令行。
docker和虚拟机区别
Docker 和虚拟机是两种不同的虚拟化技术,它们在应用、资源消耗、启动时间和隔离等方面有一些重要区别。以下是 Docker 和虚拟机之间的主要区别:
架构和隔离:
Docker:Docker 使用容器技术,容器共享主机操作系统的内核,但在容器内部提供隔离的用户空间。这意味着容器之间共享操作系统内核,使其轻量且启动迅速。容器之间的隔离通过 Linux 内核的命名空间和控制组技术实现。
虚拟机:虚拟机是完全虚拟化的技术,每个虚拟机都运行自己的操作系统内核。这意味着虚拟机需要更多的资源,并且启动速度较慢,因为它们需要模拟整个操作系统。
资源消耗:
Docker:由于容器共享主机操作系统的内核,所以 Docker 容器通常比虚拟机更轻量,需要较少的内存和存储资源。
虚拟机:虚拟机通常需要更多的资源,因为每个虚拟机都包含自己的操作系统内核和系统文件。
启动时间:
Docker:Docker 容器可以在几秒内启动,因为它们不需要启动整个操作系统内核。
虚拟机:虚拟机通常需要更长的时间来启动,因为它们需要模拟和启动整个操作系统。
应用部署和管理:
Docker:Docker 容器的部署和管理相对简单,可以使用 Docker Compose 和 Kubernetes 等工具来自动化管理多个容器。
虚拟机:虚拟机的部署和管理相对复杂,需要使用虚拟化管理工具来创建、配置和监视虚拟机。
跨平台支持:
Docker:Docker 容器可以在不同的操作系统上运行,前提是它们都支持 Docker。
虚拟机:虚拟机通常需要适用于特定虚拟化平台的映像,并且不太容易跨平台移植。
隔离性:
Docker:容器提供了一定程度的隔离,但不如虚拟机隔离得严格。容器之间可以共享操作系统内核,这意味着一些攻击可能会影响多个容器。
虚拟机:虚拟机提供了更强的隔离性,每个虚拟机都有独立的内核和资源,攻击一个虚拟机不会影响其他虚拟机。
根据你的需求和用例,你可以选择使用 Docker 或虚拟机来虚拟化和隔离应用程序。Docker 更适合轻量级、可扩展的应用程序,而虚拟机通常更适合需要更严格隔离或运行不同操作系统的应用程序。在实际应用中,有时也会同时使用 Docker 和虚拟机,以充分利用它们各自的优势。
更改镜像源
docker默认镜像源速度很慢,可以更改为以下镜像源:
{"registry-mirrors": ["https://registry.hub.docker.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}
使用
可以将代码拉取到虚拟机本地,然后把代码上传到docker,进入容器,执行代码,参考以下命令
拉取代码
git clone https://github.com/oceanbase/miniob.git
挂载方式新建一个新容器,-v表示挂载,:前面表示本地文件目录,:后面表示你要在docker 容器中挂载的位置(随意,没有该目录也会新建)
docker run -it -v /usr/lyjps/miniob:/lyjps oceanbase/miniob
执行下面的命令进入容器,并创建bash终端,此时就可以使用Linux终端方式进行一些开发工作
docker exec -it miniob bash
相关文章:
docker容器使用初体验
我们写程序时,都会搭建相关的环境,比如写了一个web,使用了tomcat、nginx等,现在想要把程序部署到云服务器或者在其他电脑上运行,就需要重新部署一遍环境,尤其是项目开源后,上手成本大。 docker…...
React Hooks ——性能优化Hooks
什么是Hooks Hooks从语法上来说是一些函数。这些函数可以用于在函数组件中引入状态管理和生命周期方法。 React Hooks的优点 简洁 从语法上来说,写的代码少了上手非常简单 基于函数式编程理念,只需要掌握一些JavaScript基础知识与生命周期相关的知识不…...
C#学习系列相关之多线程(一)----常用多线程方法总结
一、多线程的用途 在介绍多线程的方法之前首先应当知道什么是多线程, 在一个进程内部可以执行多个任务,而这每一个任务我们就可以看成是一个线程。是程序使用CPU的基本单位。进程是拥有资源的基本单位, 线程是CPU调度的基本单位。多线程的作用…...
Vscode爆红Delete `␍`eslintprettier/prettier
一、先看报错 文件中爆红,提示 Delete ␍eslintprettier/prettier 二、解决方案 项目根目录下,.prettierrc.js 文件中: endOfLine: auto,三、重启VsCode 此时不在爆红,问题完美解决...
Mac安装Ecplise产品报错:dose not contain the JNI_CreateJavaVM symbol
1. 絮絮叨叨 工作中需要借助Ecplise Memory Analyzer (MAT)分析dump文件,直接下载、安装、运行MAT报错 询问同事后,同事说可以先安装Ecplise,再以插件的形式安装MAT下载、安装好Eclipse,点击运行仍然报错,且错误信息一…...
如何使用大语言模型来绘制图画
请创作一张科技感十足的图片,包含siri和iphone两个元素,请帮我挑选合适的style和background 好的,我会为你创作一张科技感十足的图片,包含siri和iphone两个元素。我会根据你的要求,选择一种适合的风格和背景。请稍等一…...
代码随想录算法训练营第23期day11 | 20. 有效的括号、1047. 删除字符串中的所有相邻重复项 、150. 逆波兰表达式求值
目录 一、(leetcode 20)有效的括号 二、(leetcode 1047)删除字符串中的所有相邻重复项 用栈存放 将字符串直接当成栈 三、(leetcode 150)逆波兰表达式求值 一、(leetcode 20)…...
数据结构-优先级队列(堆)
文章目录 目录 文章目录 前言 一 . 堆 二 . 堆的创建(以大根堆为例) 堆的向下调整(重难点) 堆的创建 堆的删除 向上调整 堆的插入 三 . 优先级队列 总结 前言 大家好,今天给大家讲解一下堆这个数据结构和它的实现 - 优先级队列 一 . 堆 堆(Heap࿰…...
C++11新特性(语法糖,新容器)
距离C11版本发布已经过去那么多年了,为什么还称为新特性呢?因为笔者前面探讨的内容,除了auto,范围for这些常用的,基本上是用着C98的内容,虽说C11已经发布很多年,却是目前被使用最广泛的版本。因…...
开机可用内存分析Tip
一、开机内存简介 开机内存指的是开机一段时间稳定后的可用内存。一般项目都会挑选同平台其他优秀竞品内存数据,这个也是衡量性能的一个重要标准。所以要进行开机内存检测,同时优化非法内存进程占用。 二、测试前期核查任务 开机内存测试前要进行测试机…...
【Python基础】4. 基本语句
文章目录 注释(Comment)解释伴随行文本编码问题 输入输出语句(Input & Output)输出语句普通输出格式化输出(3种)format 格式总结 输入语句 基本语句if 语句match 语句(Python3.10 新增&…...
兼顾友好与安全,隐私协议 Unijoin 助推新一轮 Web3 浪潮
区块链本身不仅崇尚去中心化,同时也崇尚公开透明,虽然这正在让 DAO 治理等变得更加公平,但它同时也是一把双刃剑,个人交易者尤其是一些巨鲸交易者的所以链上交易都被公之于众,这似乎并不是他们想要的结果。 所以从加密…...
TCP端口崩溃,msg:socket(): Too many open files
一、现象 linux系统中运行了一个TCP服务器,该服务器监听的TCP端口为10000。但是长时间运行时发现该端口会崩溃,TCP客户端连接该端口会失败: 可以看到进行三次握手时,TCP客户端向该TCP服务器的10000端口发送了SYN报文,…...
基于Laravel 5.6的运动健身类小程序前后端源码
基于Laravel 5.6的运动健身、健康类小程序前后端源码,一套比较基础的运动健康、健身类小程序源码。朋友自己无聊写的,比较基础,有需要的可以拿去修修改改升级开发一下。 使用宝塔安装,比较省事,PHP相关的扩展需要启用…...
NodeMCU ESP8266硬件开发板的熟悉
文章目录 硬件开发环境的熟悉基础介绍什么是 ESP8266 NodeMCU?NodeMCU芯片ESP12-E 模组开发板 ESP8266 版本引脚图Power GND I2CGPIOADCUARTSPIPWMControl 总结 硬件开发环境的熟悉 基础介绍 什么是 ESP8266 NodeMCU? ESP8266是乐鑫开发的一款低成本 …...
计算机毕业设计 基于SSM的在线预约导游系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
Mac 挂载 Alist网盘
挂载服务器的Alist 网盘到 Mac mac,使用的是 CloundMounter 这个软件进行挂载 http://ip:port/dav/ 需要在末尾加上 /dav/ 在一些服务器上,为了提供WebDAV服务,需要在URL地址的末尾添加"/dav/“。这是因为WebDAV协议规定了一些标准的URL路径&#x…...
【多模态融合】TransFusion学习笔记(1)
工作上主要还是以纯lidar的算法开发,部署以及系统架构设计为主。对于多模态融合(这里主要是只指Lidar和Camer的融合)这方面研究甚少。最近借助和朋友们讨论论文的契机接触了一下这方面的知识,起步是晚了一点,但好歹是开了个头。下面就借助TransFusion论文…...
(二)正点原子STM32MP135移植——TF-A移植
目录 一、TF-A概述 二、编译官方代码 2.1 解压源码 2.2 打补丁 2.3 编译准备 (1)修改Makfile.sdk (2)设置环境变量 (3)编译 三、移植 3.1 复制官方文件 3.2 修改电源 3.3 修改TF卡和emmc 3.4 添…...
将二叉搜索树转化为排序的双向链表
链接: LCR 155. 将二叉搜索树转化为排序的双向链表 题解: /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node() {}Node(int _val) {val _val;left NULL;right NULL;}Node(int _val, Node* _left…...
电脑dll丢失应该怎么解决,dll文件丢失怎么恢复方法分享
DLL(Dynamic Link Library,动态链接库)是一种可执行文件,它包含了在程序运行时需要调用的代码和资源。DLL 文件的主要作用是实现代码和资源的共享,这样在多个程序之间就可以避免重复的代码和资源,从而节省系…...
通达信和同花顺能否实现程序化自动交易股票,量化交易如何实现?
以下写给正在寻找自动交易接口的朋友,首先,不是那种设置个简单条件的条件单,或者某些客户端上形同鸡肋的策略交易,那些策略根本称不上策略,还有各种限制,不支持这个不支持那个,可设置的参数也不…...
基于Kylin的数据统计分析平台架构设计与实现
目录 1 前言 2 关键模块 2.1 数据仓库的搭建 2.2 ETL 2.3 Kylin数据分析系统 2.4 数据可视化系统 2.5 报表模块 3 最终成果 4 遇到问题 1 前言 这是在TP-LINK公司云平台部门做的一个项目,总体包括云上数据统计平台的架构设计和组件开发,在此只做…...
Linux CentOS7 vim寄存器
计算机中通常所说的寄存器Register一般指的是CPU中的寄存器,用来暂存CPU处理所需要的指令、数据等。 vim中同样也有寄存器,使用的方式和CPU非常类似。 vim中的寄存器(register)作用和windows中的剪切板类似,不过vim中的寄存器不止一个&…...
摄影后期图像编辑软件Lightroom Classic 2023 mac中文特点介绍
Lightroom Classic 2023 mac是一款图像处理软件,是数字摄影后期制作的重要工具之一,lrc2023 mac适合数字摄影后期制作、摄影师、设计师等专业人士使用。 Lightroom Classic 2023 mac软件特点 高效的图像管理:Lightroom Classic提供了强大的图…...
一种4g扫码付费通电控制器方案
之前开发了一款扫码付款通电控制器 功能:用户扫码付款后设备通电,开始倒计时,倒计时结束后设备断电,资金到账商家的商家助手里面,腾讯会收取千分之6手续费。 产品主要应用场景 本产品主要应用于各类无人值守或者自助…...
桌面自动化工具总结
引言:产品经理提出桌面程序需要自动化的测试,避免繁琐的人肉点击。说干就干。 现有自动化工具是五花八门,我找了两个框架。 这两个框架都是基于微软的UIA 框架,链接地址 https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-providerportal?source=recommen…...
Python入门教程 | Python 常用标准库概览
Python3 标准库概览 Python 标准库非常庞大,所提供的组件涉及范围十分广泛,使用标准库我们可以让您轻松地完成各种任务。 以下是一些 Python3 标准库中的模块: os 模块:os 模块提供了许多与操作系统交互的函数,例如创…...
【JavaScript】读取本地json文件并绘制表格
本文为避免跨域问题,使用了改造过的本地json文件的方法实现读取json数据并绘制表格。 如果发起http请求获取本地 json文件中数据,需要架设本地服务器,本文不做阐述。 概述 1、json在本地,并不需要从服务器下载。 2、采用jquery…...
前端笔试题总结,带答案和解析(一)
1. 执行以下程序,输出结果为() var x 10; var y 20; var z x < y ? x:y; console.log(xx;yy;zz);A x11;y21;z11 B x11;y20;z10 C x11;y21;z10 D x11;y20;z11 初始化x的值为10,y的值为20,x < y返回结果为tru…...
免费广告素材网/seo视频教程汇总
现实存在的声音是模拟量,这对声音保存和长距离传输造成很大的困难,一般的做法是把模拟量转成对应的数字量保存,在需要还原声音的地方再把数字量的转成模拟量输出。 模拟量转换成数字量,3个过程:采样、量化和编码。 蓝…...
手机网站自动适配/手机最新产品新闻
题目: LeetCode题目链接 题目截图: 解题步骤: 符合分而治之的特点 1.分:获取左右子树 2.解:递归地翻转(旋转180度)左右子树 3.合:将翻转后的左右子树换个位置放到根节点上代码: /*** Defini…...
网站建设做的好/百度一下首页网页
刚刚看到一篇关于使用 PreApplicationStartMethod 的文章,地址:http://www.dotnetcurry.com/ShowArticle.aspx?ID570&AspxAutoDetectCookieSupport1 在 Razor 中,如果在页面中要使用 DateTimeFormatInfo,就是一个问题。 Razo…...
建网站的公司大全/网站seo整站优化
文章目录本篇博客主要学习内容🌼对象语法🌺数组语法🍍绑定内联样式🍉本篇博客主要学习内容🌼 先来看看以下这些语句都熟不熟悉吧!这些节选于后续的博客内容🌻🌻🌻 <…...
不用买服务器可以做网站/线上推广哪个平台最好
1. 不要使用mysql_函数 这一天终于来了,从此你不仅仅“不应该”使用mysql_函数。PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的mysqli_函数,或者更灵活的 PDO 实现。 2. 不要编写垃圾代码 这一条可能易于理解…...
网站现在如何做推广/站长工具权重查询
大王是谁,大王当然就是我自己。 开玩笑,认真点说开园是为了督促自己学习,记录自己的经历,多一条让他人了解我的渠道。思维习惯了零和游戏,做点双赢的事情来扭转一下模式。新年坚持做一些事,来点实在的改变。…...