Docker安装存储引擎服务进程镜像结构
Posted 林炜玮_51CTO
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker安装存储引擎服务进程镜像结构相关的知识,希望对你有一定的参考价值。
docker 容器安装
w3c https://www.w3cschool.cn/docker/
菜鸟网 https://www.runoob.com/docker/docker-tutorial.html
解决docker info告警WARNING: No swap limit support
root@172:/home/linweiwei# vi /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0
# If you change this file, run update-grub afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n Simple configuration
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 cgroup_enable=memory swapaccount=1"
docker 存储引擎
在 Docker 中, 底下的只读层就是 image, 可写层就是 Container, 是 Docker 18.06 及更早版本的首选存储驱动程序
如果 docker 数据目录是一块单独的磁盘分区而且是 xfs 格式的, 那么需要在格式化的时候加上参数-n ftype=1, 否则后期在启动容器的时候会报错不支持d-type,Centos 7.3 修复此问题
docker 服务进程
容器进程的关系
有四个进程:
dockerd: 被 client 直接访问, 其父进程为宿主机的 systemd 守护进程。
docker-proxy: 实现容器通信, 其父进程为 dockerd
containerd: 被 dockerd 进程调用以实现与 runc 交互。
containerd-shim: 真正运行容器的载体, 其父进程为 containerd
容器的创建和管理过程
通信流程:
1.dockerd 通过 grpc 和 containerd 模块通信(runc)交换, dockerd 和 containerd通信的 socket 文件: /run/containerd/containerd.sock
2. containerd 在 dockerd 启动时被启动, 然后 containerd 启动 grpc 请求监听,containerd 处理 grpc 请求, 根据请求做相应动作。/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
3. 若是创建容器, containerd 拉起一个 container-shim 容器进程 , 并进行相应的创建操作
4. container-shim 被拉起后, start/exec/create 拉起 runC 进程, 通过 exit、 control文件和 containerd 通信, 通过父子进程关系和 SIGCHLD(信号)监控容器中进程状态
5. 在整个容器生命周期中, containerd 通过 epoll 监控容器文件, 监控容器事件
docker 镜像管理
Union File System
Docker 镜像含里面是一层层文件系统,叫做 Union File System
联合文件系统可以对每一层文件系统设置三种权限, 只读(readonly) 、 读写(readwrite) 和写出(whiteout-able)
但是 docker 镜像中每一层文件系统都是只读的,构建镜像的时候,从一个最基本的操作系统开始,每个构建的操作都相当于做一层的修改,
增加了一层文件系统,一层层往上叠加,上层的修改会覆盖底层该位置的可见性
基本镜像结构
为了节约体积,很多官方容器镜像就做了基本两层
一个典型的 Linux 文件系统由 bootfs 和 rootfs 两部分组成, bootfs(boot file
system) 主要包含 bootloader 和 kernel, bootloader 主要用于引导加载 kernel,
当 kernel 被加载到内存中后 bootfs 会被 umount 掉, rootfs (root file system)
包含的就是典型 Linux 系统中的/dev, /proc, /bin, /etc 等标准目录和文件
镜像结构
企业使用镜像及常见操作
搜索、 下载、 导出、 导入、 删除
命令总结:
# docker load -i centos-latest.tar.xz #导入本地镜像
# docker save > /opt/centos.tar #centos #导出镜像
# docker rmi 镜像 ID/镜像名称 #删除指定 ID 的镜像, 通过镜像启动容器的时候镜像不能被删除, 除非将容器全部关闭
# docker rm 容器 ID/容器名称 #删除容器
# docker rm 容器 ID/容器名-f #强制删除正在运行的容器
以上是关于Docker安装存储引擎服务进程镜像结构的主要内容,如果未能解决你的问题,请参考以下文章