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安装

yum install -y docker 安装docker
systemctl start/stop docker 启动/停止docker
systemctl enable docker 开机启动docker
docker version 查看docker版本,有下面回显说明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
View Code
systemctl status docker 查看docker服务的状态,有下面回显说明docker运行正常
[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
View Code

 

重要概念

 

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

posted @ 2021-09-13 22:36  flag_HW  阅读(156)  评论(0)    收藏  举报