docker学习

Docker体系结构

containerd:是一个简单的守护进程,使用runc管理容器

Shim:只负责管理一个容器

runC:是一个轻量级的工具,只能用来运行容器

docker学习_第1张图片

内部组件

namespaces:

命名空间,linux内核提供的一种资源隔离的机制,如进程,网络,挂载点等资源

CGroup:

控制组,linux内核提供的一种限制进程资源的机制,例如cpu,内存等资源

unionFS

联合文件系统,支持将不同位置的目录挂载到同一虚拟文件系统,形成一种分层的模型。

虚拟机与容器的区别

 

docker学习_第2张图片

infrastructure:计算机硬件

Hypervisor:虚拟机与操作系统的中间,承上启下,可以配置多个cpu,作为资源调度

vm:虚拟机是文件系统和库文件

container:容器,共享宿主机的系统

启动时间

docker秒启动,kvm分钟级启动

轻量级

容器是M为单位,占用资源小,部署更快速,虚拟机以G为单位,

性能

容器共享宿主机内核,性能接近无机器

开销大,性能低

安全性

知识进程隔离,稳定性不如虚拟机

应用场景

docker学习_第3张图片

场景一:节省项目环境部署时间

docker学习_第4张图片

场景二:环境一致性,可移植性

docker学习_第5张图片

场景三:持续集成

docker学习_第6张图片docker学习_第7张图片

场景四:微服务

docker学习_第8张图片

场景五:弹性伸缩

docker学习_第9张图片

小结:

docker学习_第10张图片

安装

docker学习_第11张图片

第二章镜像管理

docker学习_第12张图片

镜像

docker学习_第13张图片

daemon.json:docker跨平台的配置文件

镜像与容器联系

docker学习_第14张图片

overlay2:存储驱动

docker学习_第15张图片

ubuntu:默认aufs;

deviceapper早期版本,性能差;

overlay2:现在一般用overlay2,docker自主研发,性能最好,支持文件系统恶心他,sfs

镜像管理命令

docker学习_第16张图片

容器管理

docker学习_第17张图片

创建一个容器:bs

查看当前进程的容器:

docker container ls

docker学习_第18张图片

查看当前容器的详情信息:

docker container inspect 3d9fe986d8fd

docker学习_第19张图片

 

将Docker主机数据挂载到容器

 

 

volumes

docker学习_第20张图片

volume指令:

docker volume --help

docker学习_第21张图片

创建卷

docker volume create nginx-vol

打开卷:

docker volume inspect nginx-vol

docker学习_第22张图片

-v形式不建议使用

数据共享,多个服务器可以共用一个数据卷,

如果不指定数据卷的话,会默认创建一个数据卷,并随机生成一个命名卷和匿名卷

通过卷创建容器:

docker run -d -it --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx

dst:挂载点

src:数据卷

进入容器命令:

docker exec -it nginx-test bash

查看:默认页

在数据卷添加数据:

另一边也可以看得到

docker学习_第23张图片

删除我所有创建的容器:

docker rm -f $(docker ps -q -a)

容器删除后数据卷还在,现在引入数据命令:并暴露端口号,用于测试

docker run -d -it --name=nginx-test -p 88:80 --mount src=nginx-vo1,dst=/usr/share/nginx/html nginx

 

docker学习_第24张图片

Bind Mounts

docker学习_第25张图片

搭建LNMP网站平台

docker学习_第26张图片

第六章Dockerfile

docker学习_第27张图片

dockerfile指令:

docker学习_第28张图片

构建java网站环境镜像

docker学习_第29张图片

docker学习_第30张图片

 

你可能感兴趣的:(Docker)