docker入门_docker原理、安装、基本概念
docker底层原理
这里看不明白没关系,可以先有个大概印象。总结起来就是下面两句话
- 通过namespace在hostos上隔离出多个互相隔离的空间,每个空间下的资源之间相互不可见;由此达到docker之间相互隔离的效果
- 通过cgroup对namespace下的进程资源占用进行限制,达到每个docker对hostos的资源占用上限可控。
http://dockone.io/article/2941
https://www.jianshu.com/p/e1f7b8d5184c
为什么使用docker
项目开发、部署过程中比较麻烦的地方就是为了部署项目,需要配置各种各样的依赖环境;这样容易出错,环境不容易搭建和维护,在加上一堆各种配置,一处配置错误整个环境就有可能异常。
docker将应用程序与该程序的依赖打包在一个文件里面。运行这个文件就会生成一个虚拟容器,程序在这个虚拟容器里面运行就像在真实物理机上运行一样,而且不需要对程序的依赖话费额外的精力,因为启动docker的打包文件里面已经包含了这个程序的所有依赖。这样就屏蔽运行环境的差异。
docker可以实现:
- 环境部署、切换的麻烦。不用考虑程序部署的各种依赖和配置。
- 应用之间的隔离。比如两个程序在同一台物理机上,一个程序cpu占用100%另一个程序运行肯定会受影响

注:整个docker以及k8s相关操作命令的宿主机均安装centos7系列操作系统
docker安装
[root@k8s-01 ~]# docker version Client: Version: 18.06.1-ce API version: 1.38 Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:23:03 2018 OS/Arch: linux/amd64 Experimental: false Server: Engine: Version: 18.06.1-ce API version: 1.38 (minimum version 1.12) Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:25:29 2018 OS/Arch: linux/amd64 Experimental: false
[root@k8s-01 ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2021-09-13 22:13:09 CST; 1min 5s ago Docs: https://docs.docker.com Main PID: 1338 (dockerd) Tasks: 204 Memory: 193.9M CGroup: /system.slice/docker.service ├─1338 /usr/bin/dockerd
重要概念

image
image其实就是一个文件系统,它与宿主机的内核一起为程序提供一个虚拟的linux环境。它类似于虚拟机中使用到的镜像,由于任何应用程序都需要有它自己的运行环境,Image就是用来提供所需运行环境的一个模板。Image本身是只读的,可以通过Dockerfile定义,也可以到Repository中取拉取。
Container
Container是Docker提供的一个抽象层,它就像一个轻量级的沙盒,其中包含了一个极简的Linux系统环境与运行在其中的应用程序。
Container是Image的运行实例 (Image本身是只读的,Container启动时,Docker会在Image的上层创建一个可写层,任何在Container中的修改都不会影响到Image,
如果想要在Image保存Container中的修改, Docker采用了基于Container生成新的Image层的策略),Docker引擎利用Container来操作并隔离每个应用(也就是说,
每个容器中的应用都是互相独立的)。就是运行Images的地方。
Repository
存放Images的仓库。
官方仓库:
https://hub.docker.com/
https://hub.docker.com/search?image_filter=official&type=image
浙公网安备 33010602011771号