Docker容器技术概览

                                     作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

一.Docker容器的优缺点

1>.Docker的优势

  快速部署:
    短时间内可以部署成百上千个应用,更快速交付到线上 。
  高效虚拟化:
    不需要额外的hypervisor支持,直接基于linux实现应用虚拟化,相比虚拟机大幅提高性能和效率。
  节省开支:
    提高服务器利用率,降低IT支出。
  简化配置:
    将运行环境打包保存至容器,使用时直接启动即可。
  快速迁移和扩展:
    可跨平台运行在物理机,虚拟公有云等环境,良好的兼容性可以方便将应用从A宿主机迁移到B宿主机,甚至是A平台迁移到B平台。

2>.Docker的劣势

  隔离性:
    各应用之间的隔离不如虚拟机彻底,因为同一台宿主机所有Docker的容器公用宿主机内核。

 

二.Docker容器的核心技术刨析

1>.容器规范

  除了docker自带的docker容器管理技术,还有CentOS的rkt,还有阿里的Pouch,为了保证容器生态的标准性和健康可持续发展,包括Linux基金会,Docker,微软,红帽,谷歌和IBM等公司在2015年6月共同成立了一个叫open container(OCI)的组织,其目的就是制定开放标准容器规范。

  OCI一共发布了两个规范,发布了两个规范,分别是 分别是runtime spec和 image format spec。有了这两个规范,不同的容器公司开发的容器只要兼容这两个规范,就可以保证容器的可移植性和相互可操作性。 

2>.容器runtime

  runtime是真正运行容器的地方。因此为了运行不同的容器,runtime需要和操作系统内核紧密合作以便为容器提供相应的运行环境。

  目前主流的三种runtime:
    lxc:
      Linux上早期的runtime,Docker早期就是采用lxc作为runtime。
    runc:
      目前Docker默认的runtime,runc遵守OCI规范,因此可以兼容lxc,目前runc已经是docker生成环境使用的标准,包括阿里巴巴开源的pouch也是使用的runc。
    rkt:
      是CentOS开发的容器runtime,也符合OCI规范,所以使用rktruntime也可以运行Docker容器。
root@docker101:~# hostname
docker101.yinzhengjie.org.cn
root@docker101:~# 
root@docker101:~# uname -r
4.15.0-74-generic
root@docker101:~# 
root@docker101:~# uname -m
x86_64
root@docker101:~# 
root@docker101:~# docker info                                           #注意观察"Default Runtime"对应的值为"runc"
Client:
 Debug Mode: false

Server:
 Containers: 2
  Running: 2
  Paused: 0
  Stopped: 0
 Images: 2
 Server Version: 19.03.5
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: b34a5c8af56e510852c35414db4c1f4fa6172339
 runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
 init version: fec3683
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 4.15.0-74-generic
 Operating System: Ubuntu 18.04.3 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 3.83GiB
 Name: docker101.yinzhengjie.org.cn
 ID: H7TH:LMVR:XQ66:F3JN:ALFO:2XKR:6W7W:MIRF:ZY6K:QAPJ:ZCA7:GD4B
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://tuv7rqqq.mirror.aliyuncs.com/
 Live Restore Enabled: false

WARNING: No swap limit support
root@docker101:~# 
 
root@docker101:~# docker info                          #注意观察"Default Runtime"对应的值为"runc"

相关文章: