docker 查看容器_Docker介绍

docker介绍

什么是docker?我们先看一下官方文档对docker的定义。翻译一下就是:Docker是一个集开发,发布和运行应用程序的开放平台。Docker能够分离应用和基础架构,从而可以使得用户可以快速交付软件。借助于Docker,用户可以以管理应用的方式管理基础架构。通过利用Docker快读交付,测试和部署代码的能力,用户可以大大地减少编写代码和在生产环境中运行代码的延迟。

Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.

Docker提供了在一个松散隔离的环境中打包和运行应用的功能,这个环境被称为容器。容器是轻巧的,它们不需要其他额外的管理程序就可以直接运行在宿主机的内核上,同时环境的隔离性和安全性特性允许在一个给定的主机上可以运行多个容器,而且多个容器相互独立,互不干扰。

Docker架构

Docker的基础架构是客户端-服务器(client-server)模式。在Docker中的主要组件有守护程序进程(daemon process)[服务器(service),一种长期运行的程序],命令行界面客户端(command line interface client, CLI client)和指定程序与守护进程通信并指示其操作的接口REST API。CLI 使用接口docker REST API通过脚本或者直接CLI命令控制docker守护进程或者与docker守护进程进行交互。守护进程(daemon)创建和管理docker对象,比如镜像(images),容器(contains),网络(network)和数据卷(data volumes)。

0a8f63ccb651f18b7ba65f1461ff715d.png

Docker客户端和Docker守护进程可以在同一系统上运行,也可以将Docker客户端连接到远程的Docker守护进程。Docker客户端和Docker守护进程在UNIX套接字或者网络接口上使用REST API进行通话,Docker守护进程用来完成docker容器的构建,运行和分发等工作。

  • docker守护进程侦听docker API的并且管理docker对象,例如图像,容器,网路和数据卷。守护进程也可以与其他的守护进程进行通信来管理docker服务
  • docker客户端是docker用户与Docker交互的主要方式。客户端将命令发送到守护进程,守护进程执行相应的命令。Docker客户端可以与多个守护进程进行通信。
  • docker仓库用来储存docker仓库。Docker hub是一个任何人都能够使用的公共仓库。
  • docker对象
    • 镜像是一个带有创建Docker容器的说明的只读模板。用户可以docker仓库中他人已经创建好的镜像,也可以创建Dockerfile文件来编写创建镜像的指令。Dockerfile中的每条指令都会在镜像中创建一层。当用户更改Dockerfile并且重新创建镜像的时候,只有更改的层需要重建,其它层保持不变。通常情况下,一个镜像可以基于另一个镜像进行构建。假设用户现在拥有一个GPU版本的pytorch环境基础镜像,然而项目还需要一些额外的库文件,比如opencv库文件,那么就可以基于基础镜像,再安装相应的opencv库文件 ,就可以构造项目所需要的镜像了。
    • 容器是一个镜像的可运行实例。用户可以通过API或者命令行界面创建,启动,停止,移除和删除一个容器。默认情况下,容器与容器以及宿主机之间的隔离度相对较好,用户可以控制容器的网络,存储和其他基础子系统与宿主机的隔离程度。

65b4137a260834e355483af4fb36960b.png
docker 架构

docker 和虚拟机

dokcer和虚拟机docker可直接运行在宿主机上,与宿主机共享内核。
虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。创建虚拟机时,需要将实体机的部分硬盘黑盒内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘黑盒操作系统。 -----<虚拟机>百度百科编写

908e17b0416f958f128e8871951db6e9.png
docker vs VM

命名空间namespaces

docker使用命名空间namespaces技术提供独立的工作区间。当用户运行一个容器的时候,Docker就为这个容器创建一系列的命名空间。这些命令空间提供了层的隔离性。

  • pid命令空间:进程隔离(PID:进程ID)
  • net命名空间:网络接口管理
  • ipc命名空间:管理进程间通信资源的访问
  • mnt命名空间:管理文件系统挂载点
  • uts命名空间:隔离内核和版本标识符

联合文件系统

联合文件系统(Union File System)通过创建层来实现联合挂载。Docker使用联合文件挂载和copy-on-write技术为容器提供组成容器的块,这也是容器轻巧和快速的原因。

copy-on-write是一种共享和复制文件能够达到最大效率的技术。如果一个文件或者一个文件夹存在于镜像的最底层,其它层(包括可写层)需要对其进行读访问,那么就可以使用这个存在的文件。如果其他层首次需要修改这个文件(当构建镜像时或者运行容器时),那么这个文件被复制到此层并被修改。这样能够最小化I/O和后续每层的大小。

当使用docker pull 从仓库中拉取一个镜像时,或者当你从一个当地并不存在的镜像中创建容器时,每一层单独地被拉取,存储在Docker的当地存储区域,在linux主机上,则是/var/lib/docker。

bf05c4dc9e7ea7e897a0378cb8c3eaaa.png

从上图可以看出,拉取镜像时,是分层拉取,ubuntu18.04总共有三层。docker inspect 查看其镜像信息,在Layers属性中,包含三层的sha256信息。

6f69042820b95ae12ef5260b92f20cd5.png

镜像和容器

一个docker镜像从一系列层中构建,在Dockerfile中,每一层表示一条指令。除了最后一层,其它层都仅仅是可读的。这些层按照栈的格式堆叠,每一层互不相同。当用户创建容器的时候,用户仅仅在最高层添加一个可写的层,这一层被称为“容器层”。在运行的容器中进行的改变,例如对文件的增删改查,都仅仅写入这个可写的容器层。

镜像和容器的最主要区别在于最顶层的可写层。添加新文件,更改存储可写成的数据等等都被写入到这个容器中。当容器被删除,那么这个可写层也随之被删除。这个容器基于的镜像保持不变。 基于此,基于一个镜像就可以构造多个容器,并且每个容器都有自己的数据区域。

050ea18b4fce863331d0d8a5449b5db1.png
这张图来自于官方文档,以ubuntu15.04作为例子

Docker常用命令

# 镜像有关命令
docker image pull    # 拉取镜像
docker images  # 查看镜像
docker rmi  image-id/镜像名字  # 删除某个镜像
docker rmi $(docker images | grep -v RESPOSITORY | awk '{print $3}') # 删除所有镜像
docker search 镜像名字  # 搜索某个镜像
docker build -t 镜像名称:版本   .    # 构建镜像,注意后面的 .# docker命令
docker -v  # 查看docker版本
docker info # 查看docker系统信息# 容器有关命令
docker ps -a  # 查看所有容器列表
docker ps -a -n=10 # 查看10个容器
docker inspect 容器ID  # 查看某个容器的信息
docker rm 容器ID # 删除某个容器
docker rm $(docker ps -a)  # 删除所有容器
docker stop 容器ID # 关闭运行中的某个容器
docker start 容器ID # 启动某个容器但是不进入
docker start -i 容器ID # 启动并进入某个容器
docker restart 容器ID # 重启某个容器
docker attach 容器ID # 进入一个运行中的容器
docker run -it 镜像名称:版本 # 启动容器并且以交互式进入容器

参考

Docker Documentation​docs.docker.com
69afacb18786ced70460920b4ca07c2a.png
docker中文社区,docker帮助,docker手册,docker教程,docker安装手册 - docker中文社区​www.docker.org.cn
cbaca0cba11d571ff60dcd156fec4252.png
Docker Blog - News, Education & Version Updates​www.docker.com

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASF经验谈(上)

http://software.intel.com/zh-cn/blogs/2009/12/01/asf/?cidsw:51cto【前言】写这篇文章之前先声明一下&#xff0c;笔者这里说到的ASF不是指Microsoft的多媒体文件的ASF格式&#xff08;可能这个很多人更熟悉一些&#xff09;&#xff0c;而是用于远程管理的ASF(Alert Stand…

ubuntu linux 批量部署,使用Cobbler批量部署Linux和Windows:CentOS/Ubuntu批量安装(二)...

通过前面服务端的部署&#xff0c;已经配置好了 Cobbler Server 端&#xff0c;接下来开始进行 CentOS/Ubuntu 的批量安装&#xff0c;在进行 CentOS/Ubuntu 批量安装时&#xff0c;也需要通过Cobbler来做相应的发行版导入配置。流程如下&#xff1a;上传ISO镜像到 Cobbler Ser…

盘点这些年被黑的最惨的语言

全世界只有3.14 % 的人关注了爆炸吧知识这些年&#xff0c;被黑过的语言数不胜数&#xff0c;最惨的要数HTML&#xff0c;但CSS、Python等也惨遭黑手比惨&#xff1f;这就来一波。HTMLHTMLC语言C语言JavaJavaJavaJavaJavaScript JavaScript JavaScriptJavaPHPPHPPHPPHPPythonPy…

2011目标 及 总结

20110918 添加 Glodon 任务规划 20110612 修改 经过年中分析&#xff0c;把下半年目标定为&#xff1a; 重心转向技术开发&#xff0c;有闲暇的时间就继续完成年初计划中的其它项。在技术学习方面&#xff0c;注意&#xff1a;不要花太多时间在开发“小系统”上&#xff0c;也不…

python 批量下载网页图片_Python实现多线程批量下载图片

《派森》(Python)3.13 win32 英文安装版 类型&#xff1a;编程工具大小&#xff1a;21M语言&#xff1a;英文 评分&#xff1a;8.7 标签&#xff1a; 立即下载 爬取图片可真的是一个可遇不可求的机会。 有需求就会动力。 目标&#xff1a;爬取某个网站上n多页的链接&#xff0c…

linux中获取redis的map,深入Redis之 bitmap位图和HyperLogLog(五)

bitmap位图我们知道一个字符占1个字节&#xff0c;也就是8个位例如set name bigbig字符串中的3个字符的ASCII码为98 105 113所以big转为二进制就是&#xff1a;01100010|01101001|01100111b i g占了3个字节的大小&#xff0c;一共24个位。bitmap位图可以帮我们获取…

想象中的同居生活 VS 真实的同居生活

1 长颈鹿是怎么喝水的2 为了防止雨伞被偷设计师还是真动了不少脑筋呢-3 睡在这样的床上&#xff0c;晒着太阳&#xff0c;肯定超赞4 如何阻止猫咪上楼5 想象中的同居生活 VS 真实的同居生活 6 硬生生把苹果削成吃不饱也吃不起的样子7 来来来准备瓜子杏仁你点的每个赞&#xff…

抽丝剥茧!Source Generators原理讲解

前言前段时间&#xff0c;我们已经用Source Generators实现了好多功能&#xff0c;比如AutoMapper、API最佳实践。你看完那些实现代码&#xff0c;是不是还有点云里雾里&#xff01;Source Generators到底是怎么做到的&#xff1f;基础知识Source Generators是编译过程的一部分…

GPON技术概述

GPON技术转载自《电子发烧友》。文章链接请见&#xff1a;http://www.elecfans.com/article/88/171/2009/2009050556028.htmlGPON技术详述介绍GPON 技术之前&#xff0c;先介绍目前也被应用的另一种PON 技术“EPON”。1&#xff0e;EPON技术介绍EPON 又名 GEPON&#xff0c;是由…

linux中断处理汇编入口,Linux中断处理体系结构分析(一)

中断也是一种异常&#xff0c;之所以把它单独的列出来&#xff0c;是因为中断的处理与具体的开发板密切相关&#xff0c;除一些必须、共用的中断(比如系统时钟中断、片内外设UART中断)外&#xff0c;必须由驱动开发者提供处理函数。内核提炼出中断处理的共性&#xff0c;搭建一…

没有违反GPL,他们真的给了源码

文 | Travis出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;【前情回顾】国内智能设备制造商 UMIDIGI 因违反 GPLv2 协议引发争议&#xff0c;并告知开发者“想要源码上门自取”。而后&#xff0c;知名科技博主 Naomi Wu&#xff08;机械妖姬&#xff09…

有朋友问我为什么这么帅

1 2 重庆的朋友告诉我这是微辣3 我就说我只是虚胖&#xff0c;这下你相信了吧&#xff1f;4 这明明就是打情骂俏好嘛5 这还是那个平常瓶盖都拧不开的女孩子吗6 被一个机器人撩到了&#xff01;7 这是什么原理&#xff1f;你点的每个赞&#xff0c;我都认真当成了喜欢

python安装详细步骤mac_Mac安装python3的方法步骤

Python有两个版本&#xff0c;一个是2.x版&#xff0c;一个是3.x版&#xff0c;这两个版本是不兼容的。 现在 Mac 上默认安装的 python 版本为 2.7 版本&#xff0c;若 安装 新版本需要 通过 该地址进行下载&#xff1a; https://www.python.org/ftp/python/3.5.0/python-3.5.0…

在Excel中实现下拉列表选择录入

我们在用Excel录入表格数据时&#xff0c;常常会遇到某列数据的值只在几个固定值中选择一个的情况&#xff0c;比如&#xff1a;人的性别列只可能录入男或女&#xff0c;对学历列只可能录入高中、大专、本科、研究生之一等。遇到这类数据&#xff0c;如果我们手工录入&#xff…

你吃的瓜子仁,真是老奶奶磕出来的?!

全世界只有3.14 % 的人关注了爆炸吧知识本文转载自微信公众号一只学霸&#xff08;ID&#xff1a;bajie203&#xff09;萌萌不是挺爱吃瓜子仁吗有次他吃的时候大毛在旁边看着看着突然想到一个问题吓得我反思了一下自己是怎么和他们考上同个学校的没思考出来吓得我给大家写了这篇…

持续20年,一场威胁Linux存亡的诉讼终结束

文 | 局长出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;一场持续将近 20 年、曾被认为会威胁 Linux 存亡的诉讼终于迎来了尾声。这场诉讼开始于 2003 年&#xff0c;不过其背后的事件最早可追溯到 1998 年。当时 IBM 和 Santa Cruz Operation&#xff…

shell grep 变量_老司机给出的关于 shell 脚本的8个建议,必收!

这八个建议&#xff0c;来源于键者几年来编写 shell 脚本的一些经验和教训。事实上开始写的时候还不止这几条&#xff0c;后来思索再三&#xff0c;去掉几条无关痛痒的&#xff0c;最后剩下八条。毫不夸张地说&#xff0c;每条都是精挑细选的&#xff0c;虽然有几点算是老生常谈…

不是说好一起长大的吗?

1 仿佛闻到了嫉妒的味道&#xff01;2 阿拉&#xff1a;不是说好一起长大的吗&#xff1f;3 还有这么小的菠萝蜜&#xff1f;&#xff1f;4 你以为它是个橘子其实它并不是5 当我吃到自己喜欢吃的东西时……6 以后吃完小龙虾&#xff0c;千万别扔&#xff0c;有妙用7 这是啥玩意…

javascript:设置URL参数的方法,适合多条件查询

适用场景&#xff1a;多条件查询情况&#xff0c;如下图所示&#xff1a; 通过设置URL参数&#xff0c;再结合数据源控件设置的RUL参数&#xff0c;就能进行简单的多条件查询了。 javascript函数&#xff1a; <mce:script type"text/javascript"><!-- //设置…

SQL点滴19—T-SQL中的透视和逆透视

原文:SQL点滴19—T-SQL中的透视和逆透视透视 今天抽一点时间来看看透视和逆透视语句&#xff0c;简单的说就是行列转换。假设一个销售表中存放着产品号&#xff0c;产品折扣&#xff0c;产品价格三个列&#xff0c;每一种产品号可能有多种折扣&#xff0c;每一种折扣只对应一个…