首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一文看懂docker核心理念

一文看懂docker核心理念

原创
作者头像
小草飞上天
修改2024-12-25 13:50:20
修改2024-12-25 13:50:20
2080
举报
文章被收录于专栏: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
复制
docker image -a/-q

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

搜索远程镜像

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

比如:docker search redis

下载镜像

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

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

删除镜像

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

查看容器

代码语言:txt
复制
docker ps

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

容器日志

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

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

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

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

cp从容器拷贝文件到主机

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

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

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么会有docker出现?
  • docker核心理念
  • 容器与虚拟机
  • docker基本组成
  • docker的基础命令测试
    • 本地镜像查询
    • 搜索远程镜像
    • 下载镜像
    • 删除镜像
    • 查看容器
    • 容器日志
    • 交互式进行正在运行的容器
    • cp从容器拷贝文件到主机
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档