|33个常见问题!超全Windows排查手册


简介: 深入探究Docker
Docker镜像理解
Docker镜像是什么
镜像是一种轻量级、可执行的独立软件包 , 用来打包软件运行环境和基于运行环境开发的软件 , 它包含运行某个软件所需的所有内容 , 包括代码、运行时库、环境变量和配置文件
Docker镜像加载原理
UnionFs:联合文件系统
UnionFs(联合文件系统):Union文件系统(UnionFs)是一种分层、轻量级并且高性能的文件系统 , 它支持对文件系统的修改作为一次提交来一层层的叠加 , 同时可以将不同目录挂载到同一个虚拟文件系统下 , UnionFs联合文件系统是Docker镜像的基础 , 镜像可以通过分层来进行继承 , 基于基础镜像(没有父镜像) , 可以制作各种具体的应用镜像特性:一次同时加载多个文件系统 , 但从外面看起来 , 只能看到一个文件系统 , 联合加载会把各层文件系统叠加起来 , 这样最终的文件系统会包含所有底层的文件和目录
Docker镜像加载原理
Docker的镜像实际上由一层一层的UnionFs文件系统组成bootfs:主要包含 bootloader和 Kernel , bootloader主要是引导加 kernel , Linux刚启动时会加bootfs文件系统 , 在 Docker镜像的最底层是bootfs , 这一层与我们典型的Linux/Unix系统是一样的 , 包含bootfs加载器和内核 , 当bootfs加载完成之后整个内核就都在内存中了 , 此时内存的使用权已由 bootfs转交给内核 , 此时系统也会卸载bootfs 。 rootfs:在 bootfs之上 , 包含的就是典型 Linux系统中的/dev、/proc、/bin、/etc等标准目录和文件 , rootfs就是各种不同的操作系统发行版 , 比如:Ubuntu,、CentOS等等
简单理解:
1. 对于Docker安装OS来说:就是Docker使用了Linux本身的bootfs , 只需要安装自己所需的rootfs 2. 对于Docker安装普通镜像来说:就是Docker本身是分层下载镜像 , 所以可以提取出公共层镜像 , 进行复用Docker镜像的特点
Docker镜像都是只读的 , 当容器启动时 , 一个新的可写层加载到镜像的顶部
这一层就是我们通常说的容器层 , 容器之下的都叫镜像层
|33个常见问题!超全Windows排查手册
本文插图

-
Commit镜像
# 提交本地镜像 # -a:作者信息 -m:描述信息 容器ID 镜像名称:版本信息 docker commit -a=''test'' -m=''test'' 容器id tomcat01:1.0Docker容器数据卷
什么是容器数据卷
容器之间可以有一个数据共享的技术!Docker容器中产生的数据 , 同步到本地!
这就是卷技术!目录的挂载 , 将我们容器内的目录 , 挂载到Linux上面!
容器数据卷使用命令
# 命令 docker run -it -v 主机目录:容器内目录 /bin/bash挂载MySQL数据库到Liunx宿主机
# 1. 下载MySQL docker pull mysql # 2. 启动并挂载 -e:特别注意需要设置密码 docker run -d -p 3344:3306 -v /home/conf:/etc/mysql/conf.d -v /home/logs:/logs -v /home/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql此时我们使用远程连接软件会报错
|33个常见问题!超全Windows排查手册
本文插图

-
# 解决报错 # 1. 进入容器内 docker exec -it 容器ID /bin/bash # 2. 进入MySQL mysql -uroot -p123456 # 3. 授权 mysql> GRANT ALL ON *.* TO 'root'@'%'; # 4. 刷新权限: mysql> flush privileges; # 5. 更新加密规则: mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; # 6. 更新root用户密码: mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; # 7. 刷新权限: mysql> flush privileges;具名和匿名挂载


推荐阅读