Docker安装概念及隔离

  • 1、 概念
  • 什么是dcker
  • docker与虚拟机相比优缺点
  • 2、安装
  • 安装版本注意
  • sentos安装
  • ubuntu安装
  • 3、docker底层的隔离机制
  • name space 命名空间
  • kernel lxc
  • Control Groups
  • 经典面试问题


1、 概念

什么是dcker

docker 是一个软件,使用GO语言开发的一个软件对容器进行管理,是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行

容器: A standardized unit of software

docker是Serverless无服务器,是比较新的理念

优势
快速启动和删除数量巨大的容器 解决重复安装服务器和相关服务
缺点
需要定制镜像,docker服务挂了,所有的容器都挂

存放数据的目录

/var/lib/docker

docker与虚拟机相比优缺点

docker的优势

启动速度块
资源消耗小
资源可以控制
扩展方便
		HPA

docker的缺点

app的隔离这块,没有虚拟机彻底
层次不一样,虚拟机多一层封装

docker可以做cpu隔离吗 docker怎么实现隔离_linux

2、安装

安装版本注意

centos和ubuntu的版本问题官网有推荐:

docker可以做cpu隔离吗 docker怎么实现隔离_centos_02


docker可以做cpu隔离吗 docker怎么实现隔离_centos_03

sentos安装

docker的安装我们可以根据官网的步骤来安装:
首先如果你安装过 以前的版本,首先要卸载掉以前的版本

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

\ 在centos里面是一个续行符
1、首先安装yum源的管理工具

yum install -y yum-utils

2、添加yum仓库文件,添加docker官方的yum仓库文件

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

官网下载仓库速度会比较慢,因此我们可以使用国内的镜像(阿里云)

yum-config-manager \
    --add-repo \   #/etc/yum.repos.d/存放所有的yum仓库文件的 
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    #添加仓库来自

3.安装docker

yum install docker-ce docker-ce-cli containerd.io -y

4.启动docker,并且设置docker开机启动

systemctl start docker
systemctl enable docker

查看进程是否启动成功

ps aux|grep docker

5.测试运行一个docker容器

docker run hello-world

出现以下提示则安装成功

Hello from Docker!
This message shows that your installation appears to be working correctly.

ubuntu安装

如同centos一样,如果安装了旧的版本,首先卸载,命令如下:

sudo apt-get remove docker docker-engine docker.io containerd runc

更新系统里的所有的能更新的软件

sudo apt-get update

安装几个工具软件

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \ 

    gnupg \
    lsb-release

添加官方密钥防伪

url -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

curl 是字符界面的浏览器
gpgkey 是用来验证软件的真伪 --》防伪的

设置稳定的仓库

echo \
>   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
>   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

再次更新系统

sudo apt-get update

安装docker-ce(引擎)软件

udo apt-get install docker-ce docker-ce-cli containerd.io

查看是否启动

ps aux|grep docker

测试

sudo docker run hello-world

3、docker底层的隔离机制

name space 命名空间

Namespace是内核的一个功能,用来给进程隔离一系列(网络,文件系统,进程等)系统资源

作用: 隔离资源的

docker 内部有多少种命名空间?namespace

network
		进程命名空间
		IPC 命名空间
		挂载命名空间
		UTS 命名空间
		用户命名空间

参考资料
https://www.huweihuang.com/docker-notes/principle/namespace/namespace.html


kernel lxc

LXC-Linux Containers

Control Groups

cgroups
对资源进行限制,例如:cpu,内存、磁盘、带宽等

经典面试问题

1.讲讲docker和虚拟机的区别

2.docker底层是如何做隔离的?

3.docker容器之间是如何通信的?

bridge、host、none、container 以上4种模式,只是考虑宿主机和容器之间的通信,在同一台机器里
实现跨主机的docker容器之间的通信 overlay

4.docker容器的数据保存问题?

数据持久化–共享数据volume

5.常用的docker命令有哪些?