用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
Docker
Docker
慢吞云雾缓吐愁
论坛元老
|
2024-7-12 18:15:34
|
显示全部楼层
|
阅读模式
楼主
主题
1531
|
帖子
1531
|
积分
4593
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
目录
一、Docker简介
1、Docker是什么
2、Docker与虚拟机
3、为什么要利用Docker
4、常用命令
二、根本概念
1、镜像
2、容器
3、仓库
三、Docker compose
四、总结
一、Docker简介
1、Docker是什么
Docker是一个开源容器化平台,通过它,我们可以
将应用程序及全部依靠项都打包到一个称为容器的尺度化单元中。
容器重量轻,这使得它们具有便携性,而且它们与底层底子办法以及彼此的容器隔离。Docker 镜像可以在任何安装了 Docker 的机器上作为 Docker 容器运行,而不必要依靠于主机操纵系统的用户空间组件。就像Docker的图标一样,将应用程序和依靠项打包成一个一个集装箱举行运送,各自都有独立环境,互不干扰。
平时做项目,程序可能在我的主机下运行乐成,但是放到其他人的主机下却错误连连。这是因为环境的不同, 假如针对每个环境单独写一套部署脚本工程量太大了。但是Docker的出现便解决了该题目,所以,我是这样理解Docker的---Docker就是一个用于解决
“在我的机器上是正常的,为什么在你的机器上无法正常运行”
题目的工具。
2、Docker与虚拟机
Docker
和传统虚拟化方式的不同之处。传统虚拟机技术是
虚拟出一套硬件后,在其上运行一个完整操纵系统,在该系统上再运行所需应用进程;
而容器内的应用进程
直接运行于宿主的内核
,容器内没有自己的内核,而且也没有举行硬件虚拟。因此容器要比传统虚拟机更为轻便。
Docker 容器的底子镜像实际上只包含了操纵系统的核心依靠库和配置文件等必要组件。它利用一个叫
Namespace
的能力让它看起来就像是一个独立操纵系同一样。再利用一个叫
Cgroup
的能力限定它能利用的盘算资源。所以说,
容器本质上只是个自带独立运行环境的特殊进程,
底层用的实在是宿主机的操纵系统内核。
图1---虚拟机
图2---Docker
特性容器虚拟机启动秒级分钟级硬盘利用一般为 MB一般为 GB性能接近原生弱于系统支持量单机支持上千个容器一般几十个
3、为什么要利用Docker
Docker 可用于打包应用程序及其依靠项,这使得它轻量级且易于更快地、更可靠地发布代码。Docker 使得在生产环境中运行应用程序非常简单:假如机器中安装了 docker 引擎,docker 容器可以独立于平台
(1)更高效的利用资源:
由于容器不必要举行硬件虚拟以及运行完整操纵系统等额外开销,Docker 对系统资源的利用率更高。无论是应用实行速率、内存损耗或者文件存储速率,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,每每可以运行更多数目的应用。
(2)更快速的启动时间:
传统的虚拟机技术启动应用服务每每必要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操纵系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节流了
开发
、测试、部署的时间。
(3)同等的运行环境:
开发
过程中一个常见的题目是环境同等性题目。由于
开发
环境、测试环境、生产环境不同等,导致有些 bug 并未在
开发
过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境同等性,从而不会再出现
「这段代码在我机器上没题目啊」
这类题目。
(4)迁移性好:
由于 Docker 确保了实行环境的同等性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是条记本,其运行结果是同等的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变革导致应用无法正常运行的环境。
4、常用命令
docker -v //查看版本
docker images //查看镜像
docker ps //查看容器
sudo service docker start //启动 docker 服务
sudo service docker stop //停止 docker 服务
sudo service docker restart //重启 docker 服务
docker exec -it <容器Id> /bin/bash //进入一个运行中的容器
复制代码
二、根本概念
1、镜像
镜像就是一种特殊的文件系统。简单来说,
镜像就是将程序和环境打包在一起的一个“压缩包”。
镜像可以推到Docker Hub,也可以从Docker Hub上举行拉取(Docker Hub 是一个云端的公共注册表服务,用于存储和共享 Docker 镜像)。
镜像充实利用了Union FS的技术,将其操持为分层存储结构。镜像实在是由多层文件系统团结组成。镜像构建时会一层层构建,前一层是后一层的底子。每一层构建完就不会在发生改变,后一层的任何改变只发生在自己这一层。分层技术答应镜像构建过程中重用已有的层,从而大大进步了镜像的复用。
镜像就像容器的只读副本,容器只是运行状态的镜像。当拉取镜像并利用该镜像运行容器时,实际上就是在原来的只读层之上创建另一个暂时可写层。
2、容器
容器是镜像运行的实体。我们可以通过命令docker pull 从仓库中拉取镜像,然后实行docker run 命令,
将这个雷同“压缩包”的镜像举行“解压缩”,获得一个独立的环境和应用程序并运行起来。这样一个独立的环境和应用程序就是所谓的容器。
我们可以在一个操纵系统上同时跑多个容器,且这些容器之间都是互相独立,互相隔离的。
容器的实质是进程,但与直接在宿主实行的进程不同,容器进程运行于属于自己的独立的定名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,利用起来,就好像是在一个独立于宿主的系统下操纵一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
前面讲过镜像利用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为底子层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为
容器存储层
。容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何生存于容器存储层的信息都会随容器删除而丢失。
3、仓库
仓库就是Docker用来会合存放镜像文件的地方
,雷同于我们平时利用的github代码仓库。一个仓库会包含同一个软件的不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过<仓库名>:<标签>的格式来指定具体是哪个版本的镜像。
我们最常利用的是仓库是Docker Hub,这是默认的镜像仓库,但是国内访问很慢,建议切换至国内镜像源。
三、Docker compose
获取镜像后,我们知道利用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。但是我们做项目时通常必要多个多个Docker容器相互共同,这时就必要用到compose了。compose你可以这样理解,这就是一个用于定义和运行多容器Docker应用程序的工具。通过compose,我们可以利用YML文件来配置应用程序必要的全部服务。然后利用一个命令就可以从YML文件配置中创建并启动全部服务。
常用命令:
docker-compose up //启动yml文件定义的 container
docker-compose up -d //后台运行
docker-compose up --help //查看up帮助
docker-compose -f docker-compose.yml up //-f 指定yml文件
docker-compose stop //停止
docker-compose start
docker-compose ls //查看
docker-compose down //停止删除
docker-compose pull //重新下载
docker-compose ps
docker-compose images
复制代码
我这里利用compose举行启动容器(YML文件已提前写好)
四、总结
Docker本质上就是一个
将程序和环境打包并运行
的工具软件,而Docker容器本质上只是个自带独立运行环境的
特殊进程
,底层用的实在是宿主机的操纵系统内核。
Docker软件通过Dockerfile 形貌环境和应用程序的依靠关系举行构建镜像,而Docker compose 则解决了多个容器组成的一套服务的部署题目。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
慢吞云雾缓吐愁
论坛元老
这个人很懒什么都没写!
楼主热帖
聊聊 C# 方法重载的底层玩法 ...
使用 Mypy 检查 30 万行 Python 代码, ...
Linux安装PHP8 新版笔记
微信公众平台测试号申请、使用HBuilder ...
【只与自己有关】人往高处走?何为高? ...
Blazor WebAssembly + Grpc Web = 未来 ...
【MAC工具】各个Xcode版本对应macOS的 ...
Apache Shiro 身份验证绕过漏洞 (CVE-2 ...
Java多线程(7):JUC(上)
Mybatis基础知识大全!!!
标签云
集成商
AI
运维
CIO
存储
服务器
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表