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的隔离这块,没有虚拟机彻底
层次不一样,虚拟机多一层封装
2、安装
安装版本注意
centos和ubuntu的版本问题官网有推荐:
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命令有哪些?