【微服务实战之Docker容器】第四章-【微服务实战之Docker容器】第三章-镜像仓库

2023-09-15 18:23:36

系列文章目录

【微服务实战之Docker容器】第一章-下载及安装



坑:容器卷记得加入以下命令配置

--privileged=true

Docker挂载主机目录访问如果出现cannot open directory .: Permission denied解决办法:
在挂载目录后多加一个–privileged=true参数即可 如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了额,如果要开启,我们一般使用–privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。

是个啥?

一句话:有点类似我们Redis里面的rdb和aof文件
将docker容器内的数据保存进宿主机的磁盘中
运行一个带有容器卷存储功能的容器实例
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
参照上章的运行私服容器:

 docker run -d -p 5000:5000  -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry

主要目的是为了防止重要资料丢失,资料存储在宿主机上

能干啥?

将运用与运行的环境打包镜像,run后形成容器实例运行 ,但是我们对数据的要求希望是持久化的 Docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。
为了能保存数据在docker中我们使用卷。
特点:
1:数据卷可在容器之间共享或重用数据
2:卷中的更改可以直接实时生效,爽
3:数据卷中的更改不会包含在镜像的更新中
4:数据卷的生命周期一直持续到没有容器使用它为止

基本的命令

 docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录      镜像名

查看是否挂载成功,使用以下命令查看容器所有的配置,然后找到Mounts

 docker inspect 容器ID  

在这里插入图片描述

这种方式实现的数据卷绑定,容器(注意不是镜像)与宿主机会持久绑定,当容器重启时这种绑定关系依然存在,感兴趣的小伙伴可以自己尝试一下。
先启动linux容器绑定卷–》在容器内对应目录下创建文件–》在容器外对应目录下创建文件–》分别在容器内外查看对应目录–》把容器停止–》在容器外创建文件–》把容器通过id重新启动–》查看容器内文件
O(∩_∩)O,依然一致

读写规则映射添加说明

有时需要只允许容器读取,不允许容器写入

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro      镜像名

ro = read only(只读)
docker默认的是rw,可读可写

卷的继承和共享

–volumes-from 父类

docker run -it  --privileged=true --volumes-from 父类  --name u2 ubuntu

这条命令可以实现容器间的卷继承,这种方式可以实现容器间的文件共享,我们测试一下

docker run -it --privileged=true -v /dockerdir:/tmp/testdocker --name u1  ubuntu

启动一个名为u1的ubuntu容器,绑定上卷,进入到u1容器的/tmp/testdocker目录下,创建一个名为u1.txt的文件

touch u1.txt

进入主机的/dockerdir/下,发现已有文件。
然后再使用命令,启动一个u2,继承u1的卷

docker run -it  --privileged=true --volumes-from u1  --name u2 ubuntu

然后进入到u2的/tmp/testdocker目录下,发现也有对应文件
在这里插入图片描述
然后使用u2创建一个u2.txt

touch u2.txt

到u1下发现也已经有了,这就实现了文件的共享
接着我们把u1和u2都停掉,重启u2

docker stop u1
docker stop u2
docker start u2

接着进入u2的命令行界面

docker exec -it u2 /bin/bash

发现文件依然存在

在这里插入图片描述
这说明了docker的卷继承是永久性的,不会随着容器的重启而消失。
大家可以自己测试一下容器的删除是否会对此有影响。

docker rm u1

(多敲,命令才会熟练)

今天就到这里啦😊

更多推荐

python安全工具开发笔记(五)——python数据库编程

一、PythonDBAPI在没有PythonDBAPI之前:有PythonDBAPI之后:PythonDBAPI包含内容PythonDBAPI访问数据库流程二、PythonMysql开发环境三、Python数据库编程实例数据库连接对象connection连接对象:建立Python客户端与数据库的网络连接创建方法:MyS

影响服务器稳定性的因素:

影响服务器稳定性的因素:1、服务器配置。配置是影响稳定性的因素之一,包括cpu、内存、带宽、硬盘、操作系统等,配置低了无法支撑网站服务器的正常运行,卡顿、崩溃,就会影响到服务器的稳定性。2、恶意GJ。如果服务器遭受了ddoslcc等恶意流量GJ,也会影响到服务器的稳定性,假如服务器没有搞好安全防范对策,非常容易因DDo

Linux —— 线程

目录一,线程概念二,Linux进程与线程三,Linux线程控制创建线程线程终止线程等待线程分离linux线程互斥一,线程概念在一程序内,一个执行路线称为线程thread,即线程是一个进程内部的控制序列;一切进程至少都有一个执行线程;线程在进程内部运行,本质是在进程地址空间内运行;在Linux系统中,CPU看到的PCB都

【校招VIP】前端JS之深拷贝和浅拷贝

考点介绍js中的浅拷贝和深拷贝,只是针对复杂数据类型(Objcet,Array)的复制问题。简单来讲浅拷贝和深拷贝都可以实现在原有对象的基础上再生成一份的作用。但是根据新生成的对象能否影响到原对象可以分为浅拷贝和深拷贝。前端JS之深拷贝和浅拷贝-相关题目及解析内容可点击文章末尾链接查看!一、考点题目1.实现浅拷贝的方法

RenderDoc基础类 + Python“基础”代码

这应该是国内第一份甚至是唯一份讲renderDoc的免费二开的文档,基于Python,Qt等(这是一个冷门的学科,本身做TA比例就只有1/10,技术TA的比例又1/10,然后会做工具几年资历的又1/10,假如1000个观众,应该只有1个观众会往下看,谢谢观看!!)RenderDoc生命周期和常用类qdCaptureVi

webpack、vue.config.js

一、webpack学习简述webpack是一个静态资源打包工具,它会以一个或多个文件作为打包的入口,将我们整个项目的文件编译组合成一个或多个文件输出出去。输出的文件就是编译好的文件,可以运行在浏览器中。一般的我们将webpack输出的文件叫做bundle为什么需要打包工具随着现在前端技术的发展,我们会使用各种框架(Vu

化工DCS/SIS/MIS系统时钟同步(NTP服务器)建设

化工DCS/SIS/MIS系统时钟同步(NTP服务器)建设化工DCS/SIS/MIS系统时钟同步(NTP服务器)建设目前计算机网络中各主机和服务器等网络设备的时间基本处于无序的状态。随着计算机网络应用的不断涌现,计算机的时间同步问题成为愈来愈重要的事情。以Unix系统为例,时间的准确性几乎影响到所有的文件操作。如果一台

python经典百题之判断回文数

题目:一个5位数,判断它是不是回文数即12321是回文数,个位与万位相同,十位与千位相同程序分析回文数是指一个数从左向右和从右向左读是一样的,例如:12321。我们需要编写一个程序来判断一个5位数是否是回文数。方法1:转换成字符串defis_palindrome(num):num_str=str(num)returnn

2023年海南省职业院校技能大赛(高职组)信息安全管理与评估赛项规程

2023年海南省职业院校技能大赛(高职组)信息安全管理与评估赛项规程一、赛项名称赛项名称:信息安全管理与评估英文名称:InformationSecurityManagementandEvaluation赛项组别:高等职业教育赛项归属产业:电子与信息大类二、竞赛目标为全面贯彻落实国家网络强国战略,对接新一代信息技术产业,

java中mysql事务嵌套回滚

在Java开发中,MySQL事务嵌套回滚时经常会遇到。本文将介绍如何在Java中处理MySQL事务嵌套回滚的问题。在开始之前,我们需要先了解什么是事务嵌套回滚。当在一个事务中嵌套了其他事务并且其中一个事务回滚时,该事务及其所有嵌套的事务都会被回滚。这可以保持数据的一致性。但是,重要的是,要正确处理异常和回滚。下面是Ja

良好的测试环境应该怎么搭建?对软件产品起到什么作用?

为了确保软件产品的高质量,搭建一个良好的测试环境是至关重要的。在本文中,我们将从多个角度出发,详细描述良好的测试环境的搭建方法、注意事项以及对软件产品的作用。一、软件测试环境的搭建1、从硬件设备的选择与配置开始。对于大型软件产品的测试,建议使用高性能的服务器以及分布式测试平台。在选择服务器时,要考虑产品的特性、测试需求

热文推荐