Docker基本概念填坑

Docker的基本概念填坑

Docker的基本概念填坑

1. Docker的基本组成

  • Docker Client客户端
  • Docker Daemon守护进程
  • Docker Image镜像
  • Docker Container容器
  • Docker Registry仓库

Docker是C/S架构的程序。Docker客户端向Docker的服务器端(也就是守护进程)发出请求,守护进程处理完所有工作并返回结果。Docker客户端对服务器的访问既可以在本地,也可以通过远程。

Docker Image镜像是一个层叠的只读文件系统,例如

它的最低端是个引导文件系统bootfs(就像典型代表的linux引导文件系统),Docker用户永远不会跟底层文件系统有交互

Docker文件系统第二层是rootfs文件系统,位于bootfs之上,可以是一种或者多种的操作系统,比如ubuntu或者centos。在Docker里rootfs永远是只读状态。<————-基础镜像

并且Docker会利用联合加载技术(union mount)在rootfs之上加载更多的只读文件系统。联合加载指的是一次加载多个文件系统,但是在外面看起来只能够看到一个文件系统。联合加载会将对各层文件系统叠加到一起,这样最终的文件系统会包含所有的底层文件和目录。

Docker Container容器通过镜像启动

当镜像启动的时候,就用刚才我们介绍的镜像文件的结构,Docker会在镜像文件的最顶层加载一个读写结构——可写层。当文件系统发生变化,这些变化都会应用到这一层上。比如想要修改一个文件,首先会从下面的只读层复制到读写层,然后再修改。该文件的只读版本依然存在,但是会被修改后的版本所隐藏——这就是Docker中的一个重要机制写时复制(copy on write)。

Docker Registry仓库,分为:公有、私有。Docker公司提供一个公有的仓库,叫做Docker Hub,我们可以在其上面注册账号,分享并保存自己的镜像。

Docker在线演示地址:

https://www.docker.com/tryit/

基本操作:

1.docker version #查看Docker的版本2.docker search tutorial #通过仓库查找一个叫tutorial的镜像文件3.docker pull learn/tutorial #下载该镜像文件,这里的镜像文件名就是上一步在仓库中查找到的镜像文件名,它包含了用户名和镜像名4.docker run learn/tutorial echo ‘hello world‘ #通过run命令启动一个容器,并且输出‘hello world‘5.docker run learn/tutorial apt-get install -y ping #在容器中安装ping命令6.docker ps -l #用ps命令来查看有哪些容器7.docker commit id编号 learn/ping #对新更改的容器保存为一个镜像,learn/ping是新名字8.docker run learn/ping ping www.google.com #在新保存的容器中运行ping谷歌的网站9.docker inspect id编号 #查看容器信息10.docker images #查看有哪些镜像文件11.docker push learn/ping #将镜像文件保存到docker hub上

2. Docker容器的相关技术简介

Docker依赖于Linux内核特性:

  • Namespaces 命名空间
  • Control groups (cgroups) 控制组

Namespaces命名空间

1.编程语言2.    封装------->代码隔离3.操作系统4.    系统资源的隔离(进程、网络、文件系统....)

对于Docker来说,它使用了5种命令空间:

  • PID(Process ID) 进程隔离
  • NET(Network) 管理网络接口
  • IPC(InterProcess Communication) 管理跨进程通信的访问
  • MNT(Mount) 管理挂载点
  • UTS(Unix Timesharing System) 隔离内核和版本标识

Docker利用Control groups控制组,用来分配资源。

cgroups功能:

  • 资源限制
  • 优先级设定
  • 资源计量
  • 资源控制

这两个特性带给Docker容器哪些能力?

  • 文件系统隔离:每个容器都有自己的root文件系统
  • 进程隔离:每个容器都运行在自己的进程环境中
  • 网络隔离:容器间的虚拟网络接口和IP地址都是分开的
  • 资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器
时间: 2024-08-18 14:13:53

Docker基本概念填坑的相关文章

【docker】docker初试与填坑

docker是最近很流行的部署方式,最近尝试之前的项目都转移到docker上运行,下面是碰到的一些坑和解决方案. 网络问题 因为国内的原因,docker pull 镜像的时候经常碰到连不上或者速度极慢的情况. 这部分可以使用 国内流行的 ?daocloud 的方案解决?,使用dao pull代替docker pull ,如果是自行构建,可能需要使用代理或者直接在国外主机build,再打包传回来. 时间同步 hub.docker.com上的镜像,包括自己构建的,基本上都是以utc时区作为默认时区,

一名Android开发者的微信小程序填坑之路(2)

前言 上一篇是九月二十七日写的,而这一篇我动笔的时间是十月十日(特殊的日子),中间相隔十三天--当然是因为国庆节.说老实话,这十三天里面我都没有碰和小程序有关的东西--毕竟学习小程序的开发也只是起于兴趣,而平时的工作并不会涉及与其相关的东西--但是在这十三天里,我能明显的感受到小程序热正在逐渐的消退,或者说大家正在逐渐以一种较为平和的姿态接受它的存在,其实这是一件好事.期待公测的到来. 接下来我就直接进入正题了,另外,文末我想和大家分享一下我的国庆节. PS:这篇文章是接着上一篇文章 一名And

Kubernetes Fluentd+Elasticsearch+Kibana日志搭建的填坑指南

在初步完成Kubernetes集群架构的建立后,通过搭建一些监控组件,我们已经能够实现 图形化的监控每个node,pod的状态信息和资源情况 通过scale进行replicateSet的扩展和伸缩 通过kubectl logs 或dashboard去查看每个Pod的运行日志 但是,在分布式架构中节点的规模往往是很庞大的,一个典型的生产环境可能有几十上百个minion节点,在这种情况下就需要建立一套集中的日志监控和管理系统,在本人前期的思考中,也想通过volumn外挂到存储的方式实现weblogi

填坑——浅谈“离散时间信号的傅里叶变换”

之前学习计算机视觉,虽然敲了不少代码,但一直没弄懂傅里叶变换以及图像滤波背后的数学含义,只能对着现成的公式照葫芦画瓢,让我内心觉得深深的不安.好在通过这段时间在华为的实习,恶补了一下数字信号处理相关的基础知识,总算是把这方面的坑给填上了.以下为这几天的学习成果,也就是我自己对傅里叶变换的理解. 一.离散时间信号 要弄懂离散时间信号的傅里叶变换,首先要弄清楚什么是信号,而什么又是离散时间信号.(虽然感觉像是废话,可作为一个软件工程的童鞋我一开始对这些东西真的没概念啊T_T) 所谓信号,其实就是包含

踩坑(Running)填坑(ZSSURE):DevExpress的XtraTabControl、Telerik的OpenAccessContext以及StarUML

题记: 今天好友在朋友圈分享了一篇有深度的好文"请鼓励你的孩子做个幸福普通人",文章略显长,细细品读下来感触颇多.加之最近天天看着小外甥大睿睿的一步步的成长,已渐渐远离年轻稚嫩.走向成熟稳重的我对学习有了新的认识,回想起自己的成长过程,经验和技能并非是父母手把手教导的,反而是他们给我营造的"自由.开放.甚至略显放纵"的环境.他们以身作则的行动,让我从中体会.感悟出了所有的点点滴滴. 说到现在从事的软件研发工作,想想同学中毕业鲜有留下来做技术的(姑且认为IT民工也属于

Node填坑教程——前言

Node是什么? Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码. 以上是比较官方的解释.简单来说,就相当于一个开发平台,不过这个平台及其简陋,官方没有ide(其实也不太需要),它不像php需要容器来运行,所有的开发.调试.管理.发布等工具都是民间的自己动手的产物,所以也诠释了为什么它的目标是帮助程序员构建高度可伸缩的应用程序. 进来发现Node有

java填坑

慢慢填坑咯~ 1. 观察运行结果 package javaBasic; public class Dervied extends Base { private String name = "dervied"; public Dervied() { tellName(); printName(); } public void tellName() { System.out.println("Dervied tell name: " + name); } public

“专业填坑”的青云QingCloud如何加速跑?

青云QingCloud CEO黄允松在2018年6月发了一条朋友圈,这样评价青云QingCloud的超融合系统"青云软件,精工制造,超十个数据中心部署,四年专业平坑,久经规模化压力考验的超融合战士".从此,"专业填坑"的梗就开始流行. 青云QingCloud的"专业填坑"并非调侃.在7月27日,Cloud Insight Conference 2018云计算峰会上,江苏交通控股信息中心(以下简称"江苏交通控股")副主任周宏表示

传统行业转型微服务的挖坑与填坑

原文:传统行业转型微服务的挖坑与填坑 一.微服务落地是一个复杂问题,牵扯到IT架构,应用架构,组织架构多个方面 在多家传统行业的企业走访和落地了微服务之后,发现落地微服务是一个非常复杂的问题,甚至都不完全是技术问题. 当时想微服务既然是改造应用,做微服务治理,类似注册,发现,熔断,限流,降级等,当然应该从应用开发组切入,一般一开始聊的会比较开心,从单体架构,到SOA,再到微服务架构,从Dubbo聊到SpringCloud,但是必然会涉及到微服务的发布和运维问题,涉及到DevOps和容器层,这些都