前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文看懂docker核心理念

一文看懂docker核心理念

原创
作者头像
小草飞上天
修改于 2024-12-25 05:50:20
修改于 2024-12-25 05:50:20
1170
举报
文章被收录于专栏:java学习java学习
样这

为什么会有docker出现?

我们在开发的过程中,会出现这样一种问题:需要横向扩容(增加服务器)的时候,我们会怎么做呢?申请服务器、连接服务器、安装各种环境、安装程序包、部署、测试、应用。一连串的问题,想都不敢想。

那么,我们应该如何快速的进行横向扩容,而且能够确保应用能够在这些环境中运行和通过质量检测、能够快速安装各种依赖程序包、在部署过程中不出现令人头疼的版本、配置问题呢 ?

对的,那就是使用容器

Docker发展的非常迅速,也正是因为它针对这种标准化的问题给出了一个标准化的解决方案……系统平滑移植,容器虚拟化技术。

docker核心理念

一次镜像,处处运行

docker核心就是为了解决:运行环境和配置程序这两个核心问题的。

Docker是基于Go语言实现的云开源项目。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere] 也就是通过对应用组件的封装、分发、部署、运行等生命周期

的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。

容器与虚拟机

说了这么多,那我不用容器,直接安装虚拟机不也是一样的么?

说的没错,实际上虚拟机完全可以实现上面的问题。但是:虚拟机有几点缺点

1、资源占用多:它需要运行一个完整的虚拟操作系统出来。

2、冗余步骤多:在创建虚拟机时。创建步骤很多很重复。

3、启动慢:运行一个完整的操作系统,启动会很慢。

容器实际就是为了解决虚拟机这几个问题而产生的。

容器不是模拟一个完整的操作系统而是对进程进行隔离

它可以将软件运行所需要的所有资源,将资源打包到一个隔离的容器中。这样,容器就不需要需要捆绑一整套操作系统,只需要软件所需要的一些配置和资源了。

少了底层操作系统中的一些资源,系统就会变得高效轻量并保证部署在任何环境中的软件都能一致了。

比如安装redis和mysql。这2个公用一套底层操作系统资源,然后将redis和mysql的一些配置和数据存储进行隔离,这样就轻量了。

docker基本组成

核心三要素:镜像、容器、仓库

仓库中存放公开的或者私有镜像(比如mysql) 、容器去仓库中拉取镜像进行安装。

镜像:将一个软件按docker的规范进行打包,也就是将当前的软件状态备份。

容器:一个容器运行一个镜像程序,

仓库:类似网盘。存镜像的地方。

docker的基础命令测试

本地镜像查询

代码语言:txt
AI代码解释
复制
docker image -a/-q

-a 列出本地所有镜像
-q 只显示镜像id

搜索远程镜像

代码语言:txt
AI代码解释
复制
docker search 镜像名称

比如:docker search redis

下载镜像

代码语言:txt
AI代码解释
复制
docker pull 镜像名称[:tag]

tag是版本的意思。如果不输版本,则下载最新版本
比如: docker pull redis

删除镜像

代码语言:txt
AI代码解释
复制
docker rmi 镜像id

查看容器

代码语言:txt
AI代码解释
复制
docker ps

-a 列出所有容器
-l 列出最近创建的容器
-n 列出最近创建的n个容器
-q 静默模式。只显示容器编号

容器日志

代码语言:txt
AI代码解释
复制
docker logs 容器id

交互式进行正在运行的容器

代码语言:txt
AI代码解释
复制
docker exec -it 容器id [bash/***/**]
docker attach 容器id

区别:
exec是打开新的终端并启动新进程,exit退出不会退出容器
attach直接进入容器启动终端,不会启动新进程,exit会退出容器

cp从容器拷贝文件到主机

代码语言:txt
AI代码解释
复制
docker cp 容器id:容器内路径 目标路径

总结:docker整体来说打破了“代码即应用”的观念,而是从环境开始,自上而下的打包了应用。

对于公司自定义的镜像,开发者不需要考虑各种环境、依赖、配置等信息,所有的一切,在镜像中都存在。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker重学系列之基础知识回顾
Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。
大忽悠爱学习
2022/05/10
4170
Docker重学系列之基础知识回顾
Docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。什么是沙箱:Sandboxie(又叫沙箱、沙盘)即是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。 在网络安全中,沙箱指在隔离环境中,用以测试不受信任的文件或应用程序等行为的工具。
xiaozhangStu
2023/08/23
2820
Docker技术( 容器虚拟化技术 )
一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。 作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题, 特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验 . Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。
时间静止不是简史
2020/07/24
2.9K0
Docker技术( 容器虚拟化技术 )
整理了一份 Docker系统知识,从安装到熟练操作看这篇就够
当我们在工作中,一款产品从开发设计到上线运行,其中需要开发人员和运维工程师,开发人员负责代码编写,开发产品,运维工程师需要测试环境,产品部署。这之间就会有分歧。
用户2781897
2020/08/25
4550
整理了一份 Docker系统知识,从安装到熟练操作看这篇就够
Docker入门到精通,从安装开始,持续记录
前言 Docker出来很久很久了,显而易见的很多公司、个人都在使用它,但是我一直没有用它.......大概率是我这水平好像用不上😂😂😂。平常Linux就是直接用lnmp安装脚本、window直接装phpstudy,对于PHP来说,也不算很麻烦。难得一个空闲的周末,总得跟随一下时代潮流.....冲........! 参考资料 https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html 从虚拟机到容器 1.环境配置的难题 软件开发最大的麻烦事之一
房东的狗丶
2023/02/17
1.2K0
Docker入门到精通,从安装开始,持续记录
重学Docker
以前开发项目有开发的环境、测试的环境、还有生产的环境,每经过一阶段就要迁移项目。不同的环境有不同的配置,可能导致不可预估的错误,运维要经常性的改动
晚上没宵夜
2021/07/19
5370
重学Docker
Docker简介
在这里存在一个问题:开发环境和上线环境不一致;可能会导致,开发人员在自己的电脑上可以正常运行代码,运维人员将服务程序上线到服务器后,由于环境不一致可能会导致运行失败,服务不可用。
Alone-林
2023/03/17
1.3K0
Docker简介
docker学习笔记
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。简言之,docker就是用go开发的一种轻量级虚拟化容器。
程序员同行者
2018/07/24
5950
docker学习笔记
都9102年了,还不会Docker?10分钟带你从入门操作到实战上手
Docker是一种OS虚拟化技术,是一个开源的应用容器引擎。它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中(Windows10目前也原生支持,Win10前需要内置虚拟机),正所谓“一次打包,到处运行”。
Zack说码
2019/08/05
7640
都9102年了,还不会Docker?10分钟带你从入门操作到实战上手
【 全干货 】5 分钟带你看懂 Docker !
织云平台团队
2017/11/01
3.5K3
【 全干货 】5 分钟带你看懂 Docker !
docker入门
让开发人员最头疼的麻烦事之一就是环境配置了,每台计算机的环境都不相同,应该如何确保自己的程序换一台机器能运行起来呢?
超蛋lhy
2018/08/31
1.1K0
docker入门
1.docker概述及其历史
一. 为什么会出现docker? 不用说, 肯定是时代进步的产物. 那么, 他为什么能火🔥? 一定是解决了痛点问题. docker也不是一下子就火起来了, 他的火也是有一个过程的, 我们先来看看为什么
用户7798898
2021/09/23
1.5K1
1.docker概述及其历史
Docker:十五分钟快速了解Docker快速部署nginx
开发 和 运维 问题:在我的电脑上可以运行,版本更新,导致服务不可用!对于运维来说,考验十分的大
冷环渊
2021/11/10
5980
Docker是什么,有什么用?
Docker是一个基于轻量级虚拟化技术的容器,整个项目基于Go语言开发,并采用了Apache 2.0协议。Docker可以将我们的应用程序打包封装到一个容器中,该容器包含了应用程序的代码、运行环境、依赖库、配置文件等必需的资源,通过容器就可以实现方便快速并且与平台解耦的自动化部署方式,无论你部署时的环境如何,容器中的应用程序都会运行在同一种环境下。
后端码匠
2019/09/02
18.2K0
Docker是什么,有什么用?
《前端运维》三、Docker--1镜像与容器
  如果我们想要让软件运行起来,首先要保证操作系统的设置,其次还需要依赖各种组件和库的正确安装。那么虚拟机就是一种带环境安装的一种解决方案,它可以实现在一种操作系统里面运行另外一种操作系统,但是虚拟机的缺点也是十分明显的,资源占用多、冗余步骤多、启动速度慢。由于虚拟机存在的这些令人诟病的缺点。Linux发展出了另一种虚拟化技术,Linux Containers,即Linux容器,缩写为LXC。
zaking
2022/05/10
4440
《前端运维》三、Docker--1镜像与容器
docker 实践经验(一)简介、安装与实操
环境配置相当麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。
看、未来
2022/05/06
4750
docker 实践经验(一)简介、安装与实操
.NETCore Docker实现容器化与私有镜像仓库管理
Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技术,它隔离了应用程序对基础架构(操作系统等)的依赖。相较于虚拟机而言,Docker共享的是宿主机的硬件资源,使用容器来提供独立的运行环境来运行应用。虚拟机则是基于Supervisor(虚拟机管理程序)使用虚拟化技术来提供隔离的虚拟机,在虚拟机的操作系统上提供运行环境!虽然两者都提供了很好的资源隔离,但很明显Docker的虚拟化开销更低! Docker涉及了三个核心概念:Register、Image、Container。 1. Registry:仓库。用来存储Docker镜像,比如Docker官方的Docker Hub就是一个公开的仓库,在上面我们可以下载我们需要的镜像。 2. Image:镜像。开发人员创建一个应用程序或服务,并将它及其依赖关系打包到一个容器镜像中。镜像是应用程序的配置及其依赖关系的静态形式。 3. Container:容器。Container是镜像的运行实例,它是一个隔离的、资源受控的可移植的运行时环境,其中包含操作系统、需要运行的程序、运行程序的相关依赖、环境变量等。 它们三者的相互作用关系是: 当我们执行Docker pull或Docker run命令时,若本地无所需的镜像,那么将会从仓库(一般为DockerHub)下载(pull)一个镜像。Docker执行run方法得到一个容器,用户在容器里执行各种操作。Docker执行commit方法将一个容器转化为镜像。Docker利用login、push等命令将本地镜像推送(push)到仓库。其他机器或服务器上就可以使用该镜像去生成容器,进而运行相应的应用程序。
hailang2zh
2019/08/29
1.5K0
.NETCore Docker实现容器化与私有镜像仓库管理
Docker基础
docker run -d --hostname rabbitmq --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3.8.8-management
冬天vs不冷
2025/01/20
1090
Docker基础
一文带你读懂容器技术(一):Docker 核心设计理念
Docker 的操作围绕镜像、容器、仓库三大核心概念。下面我们通过解决三个问题:1、容器是什么;2、容器与虚拟机的区别;3、Docker 的三个核心概念是什么,掌握Docker入门技术。
后台技术汇
2022/05/28
9730
一文带你读懂容器技术(一):Docker 核心设计理念
Docker 容器化部署技术
服务器虚拟化的思想是在性能强劲的服务器上运行多个虚拟机,每个虚拟机运行独立的操作系统与相应的软件。通过虚拟机管理器可以隐藏真实机器的物理配置。其中虚拟机中运行的操作系统称为客户操作系统(Guest OS),服务器运行的操作系统称为主机操作系统(Host OS)。
用户8949263
2022/04/08
1.8K0
Docker 容器化部署技术
相关推荐
Docker重学系列之基础知识回顾
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档