Docker容器

1.容器与管理程序虚拟化

      容器与管理程序虚拟化(Hypervisor Virtualization, HV)不同,HV通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上,而容器则是直接运行在操作系统内核之上的用户空间,因此被称为"操作系统级虚拟化",可以让多个独立用户空间运行在同一台宿主机上。
容器技术的缺点:
      容器仅能运行与底层宿主机相同或相似的操作系统,不够灵活。
容器技术的应用场景:
      容器在超大规模的多租户服务部署、轻量级沙盒以及对安全要求不太高的隔离环境中得到广泛应用。

2.Docker简介

      Docker能够把开发的应用程序自动部署到容器的开源引擎,是一个客户端/服务器(C/S)架构的程序,Docker的核心组件有:

① Docker客户端和服务器,即Docker引擎:
      Docker客户端只需要向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。它提供了一个命令行工具docker以及一整天RESTFUL API来与守护进程交互。

Docker架构

② Docker镜像:
      镜像是构建Docker世界的基石,用户基于镜像来运行自己的容器,是Docker生命周期中的构建和打包阶段。镜像体积很小,非常”便携“,易于分享、存储和更新。
③ Registry:
      Docker用Registry来保存用户构建的镜像,其分为公有和私有两种。公共Registry由Docker公司运营,叫做DockerHub,用户可注册账号并在其上分享并保存自己的镜像,同时支持保存自己的私有镜像。
④ Docker容器:
      Docker可以帮用户构建和部署容器,其基于镜像启动,用户只需要把应用程序或服务打包放进容器即可。容器是Docker生命周期中的启动或执行阶段,总的来说,Docker容器就是:一个镜像格式、一系列标准操作、一个执行环境。

3. Docker基础指令

docker run [options] ubuntu16.04 bin/bash :通过Docker二进制执行文件dockerrun指令结合创建并启动一个容器,指定镜像为ubuntu16.04,同时在容器内执行bin/bash指令启动shell。可通过下述两个命令行参数新容器才能提供一个交互式shell:

  • -i:允许你对容器内的标准输入(STDIN)进行交互;
  • -t:在新容器内指定一个伪终端或终端;
  • -d:后台运行容器,创建守护式容器,并返回容器ID;
  • --name:容器命名,如 docker run --name container ubuntu16.04 bin/bash :创建一个名为container的容器,合法容器名称只能包含以下字符:大小写字母a-z and A-Z、数字0-9、下划线、原点、横线([a-zA-Z0-9_.-]);
  • -p:指定容器运行时公开的网络端口号,可以通过主机端口:宿主端口指定将主机某端口映射到容器中;
  • --restart:若容器因某种错误而停止运行,可以通过此标准让Docker自动重启该容器。它会检查容器的退出代码,以此判断是否重启容器:
    • --restart=always:总是自动重启该容器;
    • --restart=on-failure:仅当容器退出代码非0时自动重启,同时支持设置重启次数--restart=on-failure:5

注意: 若本地不存在ubuntu16.04镜像,将会连接官方的Docker Hub Registry并查看是否有该镜像,若有则下载到本地。

② 启停操作
docker stop container:停止名为container的容器(也可用容器ID) ;
docker start container:启动已被停止的容器container
docker restart container:重新启动容器container

docker ps [options]:列出正在运行的容器;

  • -a:显示所有的容器,包括未运行的;
  • -l:显示最近一个创建的容器;
  • -n:列出最近创建的n个容器;

docker attach container:容器附着,根据容器名或容器ID重新附着到此容器会话上;
docker logs [options]:获取容器日志;

  • -f:跟踪日志输出;
  • --since:显示从某时刻开始的所有日志;
  • -t:显示时间戳;
  • -tail:仅列出最新N条容器数据;

⑥性能监控
docker top container [ps options]:查看容器container中运行的进程信息,同时支持ps参数;
docker stats container:查看容器container的资源消耗,如CPU、内存、网络I/O及磁盘存储I/O等性能指标;

docker exec [options] container command:在运行中的容器container上执行特定的command命令;

  • -d:运行一个后台进程;
  • -i:即使没有附加也保持STDIN 打开;
  • -t:分配一个伪终端;

docker inspect container:获取容器/镜像container的配置信息,包括名称、命令、网络配置等;
⑨删除容器和镜像
docker rm:删除容器;
docker rmi:删除本地镜像;

⑩构建镜像
docker build:使用Dockerfile创建镜像;

4.Docker镜像

      Docker镜像是由文件系统叠加而成,最底端是引导文件系统bootfs,当容器启动后将被移到内存中,而bootfs则被卸载。Docker镜像的第二层就是root文件系统rootfs,它位于bootfs之上,由一个or多个操作系统组成。
      在传统的Linux引导过程中,root文件系统先以只读方式加载,当引导结束并完成完整性检查后,被切换成读写模式。但是在Docker中,root文件系统永远处于只读状态,且Docker使用联合加载技术(一次加载多个文件系统,而对外仅可见到一个文件系统)在root文件系统层上加载更多的只读文件系统。联合加载将各文件系统叠加,形成一个包含所有底层文件和目录的终极文件系统。

Docker文件系统

      Docker将上述只读文件系统称为镜像,一个镜像可叠放在另一个镜像的顶部,位于下面的镜像称为父镜像,最下面的称为基础镜像。最后,当从一个镜像启动容器时,Docker会在该镜像的最顶层加载一个读写文件系统,在此执行程序。

写时复制(copy on write)机制
      当Docker第一次启动一个容器时,初始的读写层为空,当文件系统发生变化时,这些变化都会被应用到这一层。比如,若修改一个文件,首先是将其从只读层复制到读写层,在保留只读版本的情况下完成修改。

构建缓存
      Docker在构建过程中会将每一步结果提交为镜像,并把构建所创建的镜像作为缓存,若构建过程中某一步发生了错误,新的构建将以当前缓存的镜像作为开始点。可以通过使用docker build--no-cache标志在构建过程中不使用缓存,同时修改构建指令也将放弃使用缓存镜像

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容

  • 《Docker从入门到实践》阅读笔记 原书地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo阅读 11,268评论 1 39
  • Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启...
    执笔梦一场阅读 3,057评论 2 10
  • 时间煮雨 这是一个陌生而又熟悉的地方,四周缭绕着层层雾气,远处似乎有什么牵引着我继续前行,朦朦胧胧间隐约可以看见...
    青城剑歌阅读 293评论 0 2
  • 2019年一月是总结之前规划以后,也是我参加易效能2.0班49天的时间,这一个月是比较忙的时间,此刻坐在香港黄金海...
    7853a2071909阅读 117评论 0 0