本文目录一览:
- 1、Docker镜像升级保留数据(volume)
- 2、Docker(5)——数据管理
- 3、详解Docker——你需要知道的Docker进阶知识五
- 4、Docker(2)——构建镜像命令解析
- 5、docker挂载volume的用户权限问题
Docker镜像升级保留数据(volume)
1、 Docker Volume 即数据卷,用于保持数据持久化,例如MySQL运行在Docker容器中时,一般将数据通过 Docker Volume 保存在主机上,这样即使删除MySQL容器,数据依然保存在主机上,有效保证了数据的安全性。
2、Kubernetes的volume具有明确的生命空间。Volume生命周期比pod中运行的container长。Container重启之后,volume的数据仍会保留。但是,当Pod销毁之时,该pod关联的volume也会同时销毁。
3、除了把数据卷中的数据存储在宿主机,docker 还允许我们通过指定 volume driver 的方式把数据卷中的数据存储在其它的地方,比如 Azrue Storge 或 AWS 。
Docker(5)——数据管理
这张图说明 bind mount 和 volume 其实都是利用宿主机的文件系统, Bind mounts 模式是将宿主机上的任意文件或文件夹挂载到容器,而 Volumes 本质上是将Docker服务管理的一块区域(默认是 /var/lib/docker/volumes 下的文件夹)挂载到容器。
Dockerfile 是一个文本文件,其中包含了构建 Docker 镜像需要执行的命令序列。使用 docker build 命令从 Dockerfile 中读取指令来构建镜像。
docker system是用于管理磁盘空间的命令,docker system df,类似于df命令,专门用来查看docker的磁盘使用情况。
Docker技术也是当今IT从业人员的必备技能之一。
原来是由于我电脑的Windows Management Instrumentation (WMI)坏了,可以安装 这个 重新修复一下WMI (备注:需要用admin的方式打开CMD或者Powershell去修复),之后Docker Desktop就可以成功安装和使用了。
详解Docker——你需要知道的Docker进阶知识五
1、Dockerfile 是一个文本文件,其中包含了构建 Docker 镜像需要执行的命令序列。使用 docker build 命令从 Dockerfile 中读取指令来构建镜像。
2、Docker的运行原理如下:客户端可以将docker命令发送到服务器端的Docker daemon上,再由Docker damon根据指令创建、选择或者从Docker仓库中拉取(pull)镜像。接着客户端可以通过镜像创建容器。
3、Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
4、docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。
5、您可以使用群体服务来代替独立容器,并利用共享机密和配置。连接到同一用户定义网桥网络的容器可以有效地将所有端口彼此公开。
Docker(2)——构建镜像命令解析
镜像构建流程为首先将指定的上下文(contextpath)路径下的文件打包,发送到服务端。服务端再将收到的文件解压,然后以解压后的路径作为上下文,进行镜像构建。镜像(image)Docker镜像(Image)就是一个只读的模板。
FROM 格式: FROM image 或 FROM image:tag 含义:Dockerfile中第一条指令必须是FROM指令,且在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令。
镜像构建流程为首先将指定的上下文(contextpath)路径下的文件打包,发送到服务端。服务端再将收到的文件解压,然后以解压后的路径作为上下文,进行镜像构建。
docker挂载volume的用户权限问题
1、本文最初的问题就是因为容器执行者和挂载数据卷的权限不同。容器内部运行是uid=0的用户dockervolumn,数据卷从属与uid=1000的ryan。最终导致容器写入数据卷的文件权限升级为root, 从而普通用户无法访问。
2、对于数据卷来说,由 docker 完全管理,而绑定挂载需要我们自己去维护。我们需要自己手动去处理这些问题,这些问题并不仅仅是上面演示的这些,还有用户权限, SELINUX 等。tmpfs 只存储在主机的内存中。
3、在Docker主机上,使用chmod命令确保挂载目录的权限允许容器中的进程进行读取和执行。用户/组ID不匹配:如果容器中的用户/组ID与挂载目录所属的用户/组ID不匹配,导致无法执行脚本。
4、其根本原因是因为docker是以root用户启动的,生成的文件/var/run/docker.sock权限所有者都是root。网上解决方案是将普通账户添加到docker用户组。
5、to cwd (\/home/oracle\) set in config.json failed: permission denied: unknown 解决办法:docker exec -w /home/oracle -it9e847654f0b6chmod 777 /home/oracle 之后,就可以登录root用户dockervolumn了。