美文网首页
Docker容器

Docker容器

作者: Sponge1128 | 来源:发表于2019-04-21 16:10 被阅读0次

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标志在构建过程中不使用缓存,同时修改构建指令也将放弃使用缓存镜像

相关文章

网友评论

      本文标题:Docker容器

      本文链接:https://www.haomeiwen.com/subject/zphjgqtx.html