分类: docker

  • hexo github 搭建

    https://blog.csdn.net/qq_58608526/article/details/124652412

    这个命令行详细.不错.不过过程不够详细.搭建完.只能本地浏览.

    https://blog.csdn.net/weixin_42072280/article/details/128277772

    这个更接近我搭建时间.设置详细.仓库创建需要增加readme不然失败.继续学习.

    https://blog.17lai.site/posts/40300608/#Hexo-%E6%97%A5%E5%B8%B8%E6%93%8D%E4%BD%9C%E5%91%BD%E4%BB%A4 [三万字教程]基于Hexo的matery主题搭建博客并深度优化一站式完全教程 _

    笼统 有功底才能学习哈.

  • 群晖软件的坑

    安装tplink摄像头 查了一个帖子.

    https://koolshare.cn/forum.php?mod=viewthread&tid=169771

    [教程] 169元带云台摄像头实现群晖Surveillance Station高清录像+IPC控制 基本解决ONVIF 安装没有认证的摄像头的所有问题了.

    帖子里面有人说web端有bug不能播放680*480分辨率以上的live.

    用Surveillance Station 
    pc客户端 不能自己的域名访问。 只能局域网  或者vpn访问。

    ds cam 手机端可以域名访问.清晰度400万也达成了.摄像头的sd卡我也拔掉了.现在不知道是tplink的云 还是我的nas在录.

    SurveillanceVideoConverterTool 670M的avi 转mp4 需要20分钟。格式工厂需要1.5分钟。果断删掉前者.

  • wol网络唤醒局域网可以唤醒了

    记录一下正确的设置.

    bios :

    电脑网卡设置:

    顺道说一下 wordpress上传图片麻烦 装了.foogallery 和 photo gallerry foogallery可以竖图显示。另一个没有研究好。估计也可以的。以上就是展示效果.

    按照上面 用手机唤醒测试另一各电脑椅上步骤没有问题.我这个有问题的也是恢复了.局域网可以唤醒.远程无法唤醒 最后就发现是docker的网络问题.桥接 host no 三种模式 只能选择host .

    重启docker程序 远程测试成功.最后发现是docker问题 网络选择错误.我问了精简启动附加条件 把网络也优化掉了.

  • 群晖 docker 搭建kindle推送服务通过calibre-web

    http://www.chrno.cn/index.php/docker/15.html

    群晖Docker安装calibre-web图书管理系统

    遇到问题.必须使用8083端口 8083之前用vnc 服务占用了.

    修改登陆密码

    修改启用上传服务

    frp登陆设置

    smtp邮箱推送设置

    验证邮箱

    格式转换

    感觉这个服务不错.

    kindle更新

    kindle不断重启

  • natfrp sakaru 官方教程来啦 使用 docker 管理 frpc 运行(群晖 NAS)

    natfrp sakaru 官方教程来啦 使用 docker 管理 frpc 运行(群晖 NAS)

    https://doc.natfrp.com/#/frpc/usage/docker使用 docker 管理 frpc 运行(命令行)

    本教程以 DSM 6 系统作为 GUI 操作举例,命令行操作请移步 使用 docker 管理 frpc 运行(命令行)

    前置知识说明

    首先您需要知道启动参数的写法,即:-f <启动密钥>:<隧道ID>,如果要启动多个隧道可以 -f <启动密钥>:<隧道ID1>,隧道ID2,隧道ID3,...,如果还需深入了解请转到此

    对于群晖用户,建议您在阅读本篇教程之前,阅读我们的 传统群晖教程,阅读全部后,按照指引操作「配置 DSM 面板」和「创建隧道」两节

    设置隧道

    因为 docker 网络模型的原因,我们像从前一样把隧道的 本地IP 设置为 127.0.0.1 已经不再奏效,必须修改设置中的此项。

    此处需要分情况讨论:

    • 当修改为 host 宿主网络模式时,只需要设置为上级网关分配给当前设备的 ip 即可(人话:设置为路由器给群晖的ip)
    • 当保持默认的 bridge 网桥模式时,我们需要设置为对应网桥的网关 ip 才能恰当的访问当前设备,因为该方案兼容性和安全性更高,下面的教程默认采用此方案

    首先打开群晖的 Docker 应用,根据图上的方法算出我们需要的 ip

    然后在新建隧道时将其设置为 本地IP

    或者在 隧道列表 中,编辑一条隧道,设置 本地IP 为该 IP

    这样隧道就准备完了

    设置Docker

    如果您发现自己获取镜像非常慢,并不知道什么叫做 出国网络质量,或者不知道如何改善的话,获取镜像这一步建议跳转到 获取镜像:中国特色 试试

    首先我们需要获取镜像,跟着图片操作即可:

    获取到镜像后就可以启动一个「实例」,请注意,此处「命令」栏中输入的是我们先前准备的启动参数

    设置好后应用,然后启动即可

    获取连接信息

    连接信息在 docker实例 的日志中,跟着图片打开它,你就能看到

    打开浏览器,试一下(如何访问可能需要回忆 传统群晖教程 中的内容)

    注意事项

    群晖的编辑容器中有「启用自动重启启动」的选项,该选项默认关闭,建议打开它

    获取镜像:中国特色

    因为一些很有中国特色的原因,我国运营商的国际互联带宽长期不足(对于个人用户来说)。反映到您身上可能就是这个 7MiB 的镜像下了一个小时,最后还失败了,这时候就需要一些有中国特色的解决手段。

    我们在阿里云的容器镜像服务提供镜像下载服务,镜像地址是 registry.cn-hongkong.aliyuncs.com/natfrp/frpc

    使用方式如图:

    使用 docker 管理 frpc 运行(命令行)

    本教程为基于命令行操作的 docker 教程,如果需要 gui 教程请移步 使用 docker 管理 frpc 运行(群晖 NAS)

    如果您感觉本篇教程对您来讲难以理解,可以试试隔壁 systemd 教程

    前置知识说明

    首先您需要知道启动参数的写法,即:-f <启动密钥>:<隧道ID>,如果要启动多个隧道可以 -f <启动密钥>:<隧道ID1>,隧道ID2,隧道ID3,...,如果还需深入了解请转到此

    设置隧道

    因为 docker 网络模型的原因,我们像从前一样把隧道的 本地IP 设置为 127.0.0.1 已经不再奏效,必须修改设置中的此项。

    因为默认的 bridge 网桥模式兼容性和安全性更高,下面的教程默认采用此方案

    首先运行下面的指令读出 docker 默认网桥的 网关IP

    ip addr show docker0

    结果预期如下:

    4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
        link/ether 02:42:c4:f5:83:8f brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
           valid_lft forever preferred_lft forever

    其中 172.17.0.1 这一部分就是我们要的 IP

    然后在新建隧道时将其设置为 本地IP

    或者在 隧道列表 中,编辑一条隧道,设置 本地IP 为该 IP

    这样隧道就准备完了

    设置Docker

    首先我们需要获取镜像:

    # 默认 DockerHub 源,国内可能较慢:
    docker pull natfrp/frpc
    
    ######## 或者 ########
    
    # 阿里云容器镜像 香港地区源,适合国内用户:
    docker pull registry.cn-hongkong.aliyuncs.com/natfrp/frpc

    如果成功的话,返回应该会是下面这样:

    ~# docker pull registry.cn-hongkong.aliyuncs.com/natfrp/frpc
    Using default tag: latest
    latest: Pulling from natfrp/frpc
    4c0d98bf9879: Pull complete 
    292f768886fd: Pull complete 
    Digest: sha256:9d33d6110ee53480f28cc99e39476d3d845ce70cf8a4d775da78f15620bbab5a
    Status: Downloaded newer image for registry.cn-hongkong.aliyuncs.com/natfrp/frpc:latest
    registry.cn-hongkong.aliyuncs.com/natfrp/frpc:latest

    其中最后一行复制一下,这个是实际被下载到本地的镜像tag,启动时会用得上

    接下来我们执行:docker run -d --restart=always <你刚复制的镜像tag> -f <启动参数>,如果一切顺利,就能看到只有一行奇怪的hash的输出,就是实例ID

    获取连接信息

    连接信息在 docker实例 的日志中,执行 docker logs <实例ID> 就能看到,如对于这样的启动参数:

    我们取实例ID的随便前几位就能查到日志:

    注意事项

    --restart=always 选项并不是必须,但开启此选项后可以自动重启容器实例

  • end Kernel panic – not syncing:Fatal exception Vmware安装CentOS虚拟机时报错

    Vmware安装CentOS虚拟机时报错end Kernel panic – not syncing:Fatal exception

    今天安装虚拟机的时候,出现end Kernel panic – not syncing:Fatal exception

    错误页面
    错误图片如上

    解决

    我是用Vmware10安装的CentOS8镜像,出现了这个错误,更改为CentOS7镜像可以顺利安装。
    个人猜测是Vmware10版本过低,不匹配CentOS8版本。

    更新Vmware10为Vmware12即可,或者将CentOS8镜像更改为CentOS7镜像也可解决问题。

    我是通过使用CentOS7解决。

    原文链接:https://blog.csdn.net/qq_38991369/article/details/102705317

    然后准备去下centos7版本 发现 有

    ISOPackagesOthers
    x86_64RPMsCloud | Containers | Vagrant
    ARM64 (aarch64)RPMsCloud | Containers | Vagrant
    IBM Power BE (ppc64)RPMsCloud | Containers | Vagrant
    IBM Power (ppc64le)RPMsCloud | Containers | Vagrant
    ARM32 (armhfp)RPMsCloud | Containers | Vagrant
    i386RPMsCloud | Containers | Vagrant
    Release NotesRelease EmailDocumentation

    这些版本 vagrant 好像就是虚拟机专用版本.container 就是docker可以用的版本.cloud 云端版本.

    写到这 我有想起来查一下 docker和虚拟机的对比.

    看到这个资料 决定还是用docker试试.

    概要

    Docker是近年来新兴的虚拟化工具,它可以和虚拟机一样实现资源和系统环境的隔离。本文将主要根据IBM发表的研究报告,论述docker与传统虚拟化方式的不同之处,并比较物理机、docker容器、虚拟机三者的性能差异及差异产生的原理。 

    docker与虚拟机实现原理比较

    如下图分别是虚拟机与docker的实现框架。 
    虚拟机实现框架 docker实现框架 
    比较两图的差异,左图虚拟机的Guest OS层和Hypervisor层在docker中被Docker Engine层所替代。虚拟机的Guest OS即为虚拟机安装的操作系统,它是一个完整操作系统内核;虚拟机的Hypervisor层可以简单理解为一个硬件虚拟化平台,它在Host OS是以内核态的驱动存在的。 
    虚拟机实现资源隔离的方法是利用独立的OS,并利用Hypervisor虚拟化CPU、内存、IO设备等实现的。例如,为了虚拟CPU,Hypervisor会为每个虚拟的CPU创建一个数据结构,模拟CPU的全部寄存器的值,在适当的时候跟踪并修改这些值。需要指出的是在大多数情况下,虚拟机软件代码是直接跑在硬件上的,而不需要Hypervisor介入。只有在一些权限高的请求下,Guest OS需要运行内核态修改CPU的寄存器数据,Hypervisor会介入,修改并维护虚拟的CPU状态。 
    Hypervisor虚拟化内存的方法是创建一个shadow page table。正常的情况下,一个page table可以用来实现从虚拟内存到物理内存的翻译。在虚拟化的情况下,由于所谓的物理内存仍然是虚拟的,因此shadow page table就要做到:虚拟内存->虚拟的物理内存->真正的物理内存。 
    对于IO设备虚拟化,当Hypervisor接到page fault,并发现实际上虚拟的物理内存地址对应的是一个I/O设备,Hypervisor就用软件模拟这个设备的工作情况,并返回。比如当CPU想要写磁盘时,Hypervisor就把相应的数据写到一个host OS的文件上,这个文件实际上就模拟了虚拟的磁盘。 
    对比虚拟机实现资源和环境隔离的方案,docker就显得简练很多。docker Engine可以简单看成对Linux的NameSpace、Cgroup、镜像管理文件系统操作的封装。docker并没有和虚拟机一样利用一个完全独立的Guest OS实现环境隔离,它利用的是目前linux内核本身支持的容器方式实现资源和环境隔离。简单的说,docker利用namespace实现系统环境的隔离;利用Cgroup实现资源限制;利用镜像实现根目录环境的隔离。 
    通过docker和虚拟机实现原理的比较,我们大致可以得出一些结论: 
    (1)docker有着比虚拟机更少的抽象层。由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有优势,具体的效率对比在下几个小节里给出。在IO设备虚拟化上,docker的镜像管理有多种方案,比如利用Aufs文件系统或者Device Mapper实现docker的文件管理,各种实现方案的效率略有不同。 
    (2)docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。我们知道,引导、加载操作系统内核是一个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了这个过程,因此新建一个docker容器只需要几秒钟。另外,现代操作系统是复杂的系统,在一台物理机上新增加一个操作系统的资源开销是比较大的,因此,docker对比虚拟机在资源消耗上也占有比较大的优势。事实上,在一台物理机上我们可以很容易建立成百上千的容器,而只能建立几个虚拟机。

    docker与虚拟机计算效率比较

    在上一节我们从原理的角度推测docker应当在CPU和内存的利用效率上比虚拟机高。在这一节我们将根据IBM发表的论文给出的数据进行分析。以下的数据均是在IBM x3650 M4服务器测得,其主要的硬件参数是: 
    (1)2颗英特尔xeon E5-2655 处理器,主频2.4-3.0 GHz。每颗处理器有8个核,因此总共有16个核。 
    (2)256 GB RAM. 
    测试中是通过运算Linpack程序来获得计算能力数据的。结果如下图所示: 
    此处输入图片的描述 
    图中从左往右分别是物理机、docker和虚拟机的计算能力数据。可见docker相对于物理机其计算能力几乎没有损耗,而虚拟机对比物理机则有着非常明显的损耗。虚拟机的计算能力损耗在50%左右。 
    为什么会有这么大的性能损耗呢?一方面是因为虚拟机增加了一层虚拟硬件层,运行在虚拟机上的应用程序在进行数值计算时是运行在Hypervisor虚拟的CPU上的;另外一方面是由于计算程序本身的特性导致的差异。虚拟机虚拟的cpu架构不同于实际cpu架构,数值计算程序一般针对特定的cpu架构有一定的优化措施,虚拟化使这些措施作废,甚至起到反效果。比如对于本次实验的平台,实际的CPU架构是2块物理CPU,每块CPU拥有16个核,共32个核,采用的是NUMA架构;而虚拟机则将CPU虚拟化成一块拥有32个核的CPU。这就导致了计算程序在进行计算时无法根据实际的CPU架构进行优化,大大减低了计算效率。

    docker与虚拟机内存访问效率比较

    内存访问效率的比较相对比较复杂一点,主要是内存访问有多种场景: 
    (1)大批量的,连续地址块的内存数据读写。这种测试环境下得到的性能数据是内存带宽,性能瓶颈主要在内存芯片的性能上; 
    (2)随机内存访问性能。这种测试环境下的性能数据主要与内存带宽、cache的命中率和虚拟地址与物理地址转换的效率等因素有关。 
    以下将主要针对这两种内存访问场景进行分析。在分析之前我们先概要说明一下docker和虚拟机的内存访问模型差异。下图是docker与虚拟机内存访问模型: 
    此处输入图片的描述 
    可见在应用程序内存访问上,虚拟机的应用程序要进行2次的虚拟内存到物理内存的映射,读写内存的代价比docker的应用程序高。 
    下图是场景(1)的测试数据,即内存带宽数据。左图是程序运行在一块CPU(即8核)上的数据,右图是程序运行在2块CPU(即16核)上的数据。单位均为GB/s。 
    此处输入图片的描述 此处输入图片的描述 
    从图中数据可以看出,在内存带宽性能上docker与虚拟机的性能差异并不大。这是因为在内存带宽测试中,读写的内存地址是连续的,大批量的,内核对这种操作会进行优化(数据预存取)。因此虚拟内存到物理内存的映射次数比较少,性能瓶颈主要在物理内存的读写速度上,因此这种情况docker和虚拟机的测试性能差别不大; 
    内存带宽测试中docker与虚拟机内存访问性能差异不大的原因是由于内存带宽测试中需要进行虚拟地址到物理地址的映射次数比较少。根据这个假设,我们推测,当进行随机内存访问测试时这两者的性能差距将会变大,因为随机内存访问测试中需要进行虚拟内存地址到物理内存地址的映射次数将会变多。结果如下图所示。 
    此处输入图片的描述此处输入图片的描述 
    左图是程序运行在一个CPU上的数据,右图是程序运行在2块CPU上的数据。从左图可以看出,确实如我们所预测的,在随机内存访问性能上容器与虚拟机的性能差距变得比较明显,容器的内存访问性能明显比虚拟机优秀;但出乎我们意料的是在2块CPU上运行测试程序时容器与虚拟机的随机内存访问性能的差距却又变的不明显。 
    针对这个现象,IBM的论文给出了一个合理解释。这是因为当有2块CPU同时对内存进行访问时,内存读写的控制将会变得比较复杂,因为两块CPU可能同时读写同一个地址的数据,需要对内存数据进行一些同步操作,从而导致内存读写性能的损耗。这种损耗即使对于物理机也是存在的,可以看出右图的内存访问性能数据是低于左图的。2块CPU对内存读写性能的损耗影响是非常大的,这个损耗占据的比例远大于虚拟机和docker由于内存访问模型的不同产生的差异,因此在右图中docker与虚拟机的随机内存访问性能上我们看不出明显差异。

    docker与虚拟机启动时间及资源耗费比较

    上面两个小节主要从运行在docker里的程序和运行在虚拟机里的程序进行性能比较。事实上,docker之所以如此受到开发者关注的另外一个重要原因是启动docker的系统代价比启动一台虚拟机的代价要低得多:无论从启动时间还是从启动资源耗费角度来说。docker直接利用宿主机的系统内核,避免了虚拟机启动时所需的系统引导时间和操作系统运行的资源消耗。利用docker能在几秒钟之内启动大量的容器,这是虚拟机无法办到的。快速启动、低系统资源消耗的优点使docker在弹性云平台和自动运维系统方面有着很好的应用前景。

    docker的劣势

    前面的内容主要论述docker相对于虚拟机的优势,但docker也不是完美的系统。相对于虚拟机,docker还存在着以下几个缺点: 
    1.资源隔离方面不如虚拟机,docker是利用cgroup实现资源限制的,只能限制资源消耗的最大值,而不能隔绝其他程序占用自己的资源。 
    2.安全性问题。docker目前并不能分辨具体执行指令的用户,只要一个用户拥有执行docker的权限,那么他就可以对docker的容器进行所有操作,不管该容器是否是由该用户创建。比如A和B都拥有执行docker的权限,由于docker的server端并不会具体判断docker cline是由哪个用户发起的,A可以删除B创建的容器,存在一定的安全风险。 
    3.docker目前还在版本的快速更新中,细节功能调整比较大。一些核心模块依赖于高版本内核,存在版本兼容问题

    参考文献

    1. Felter W, Ferreira A, Rajamony R, et al. An Updated Performance Comparison of Virtual Machines and Linux Containers[J]. technology, 2014, 28: 32.
    2. http://www.zhihu.com/question/20848931

    原文链接 https://blog.csdn.net/albenxie/article/details/73478894

  • 群晖终于正常显示存储管理和共享文件夹了

    群晖更新

    libsynopkg.so.1
    libsynoshare.so.6
    libsynostoragemgmt.so
    三个文件全部更新后显示正常了。存储空间管理员   硬盘状态都显示出来了。
    
    vpn也能从套件中心手动安装了。之前安装系统提示找不到卷。

    docker这个地方显示也正常了。4g内存。

    现在查看。

    libsynostoragemgmt.so 还是有问题。估计动态链接数据有问题。

    查看系统日志

    udo -i # root权限
    cd /var/log/upstart
    cat synoscgi.log

    参照使用diff命令对比文件 没有找到不同 破损的问题 这个命令不熟。

    这个步骤不懂可以跳过,如果后面没解决再回头来操作这个也可以

    由于/lib 目录下还有大量的其他动态链接库,且之间相互关联,如果只是拿正常的文件替换该文件,问题可能还是无法得到根本解决。在覆盖后如果不放心,可以拿镜像包内的整个目录与DSM上的目录做一个比对。

    比对文件差异的软件很多,这里我们以Linux/MacOS下默认提供的diff为例进行讲解。

    在这里,我将解压出来的hda1目录拷贝到了DSM上的/mnt/image,然后执行以下命令:

    1
    diff -c -a -b -B -r -q /mnt/image/hda1/lib /lib
    

    执行后,该命令输出了以下结果(显示仅供参考):

    1
    2
    Files lib/libsynoshare.so.6 and lib/libsynoshare.so.6 differ
    Files lib/libsynopkg.so.1 and lib/libsynopkg.so.1 differ
    

    说明/lib/libsynoshare.so.6还有/lib/libsynopkg.so.1文件出现了损坏。

    验证是否成功

    SSH里执行sudo reboot进行重启,再尝试访问web界面,如果还是不行可以再次查看synoscgi.log日志文件,根据时间看有什么新的记录。

    其他问题

    执行指令synoscgi

    1
    2
    ps -ef | grep synoscgi
    ps -ef | grep defunct
    

    可以显示 synoscgi 及子进程运行情况和问题进程,根据显示的具体情况再去查找解决方案。

    其他参考文档。不问为什么直接解决了。

    黑群晖无法加载系统信息 | 磁盘信息 | 共享文件夹显示空白等BUG 问题解决

    https://sword.studio/215.html

  • sakura_frp 群晖 docker

    我用这个docker dmct zhanshen sakura部署好了。虚拟机镜像。2g的大小。战神的商城 https://shang.520810.xyz:666/index.php 以后可能要收费。不收费咱也总担心有后门啥的 毕竟这个系统能自动升级之类的。

    研究了一下 自行安装的方法。改天操作实习一下。

    另外natfrp官网好像也在弄docker的镜像。九天前更新 2021年1月6日距离这个日期估计十天前。

    用ssh基本就是一堆命令 代码 安装 创建 设置 之类的。虽然可以复制操作。但是有时候看不懂代码 不知道意思 不愿意折腾。

    在群晖Docker中使用Sakura Frp客户端

    https://bianchengboke.com/2019/08/%E5%9C%A8%E7%BE%A4%E6%99%96docker%E4%B8%AD%E4%BD%BF%E7%94%A8sakura-frp%E5%AE%A2%E6%88%B7%E7%AB%AF/

    猫盘 ARM 黑群晖免费内网穿透:樱花Sakura Frp 教程 舍弃QC和花生壳啦 x86黑群晖也可用

    https://ntgeralt.blogspot.com/2019/10/arm-sakura-frp-qc-x86.html

    Sakura Frp 映射群辉教程 这个需要低调上网访问

    https://moe.me/archives/sakurafrp_synology.html

    这些晚些继续复制实习。

  • 昨天发现群晖无法登陆。然后修复。今天发现docker 启动缓慢

    无论打开总览还是容器。还是注册表 都是菊花一直闪耀。好几分钟。去套件中心打算停止docker。但是担心 关闭后配置不在了。查了一下 发现问题不常见。相关搜索不多。有一个说会丢失配置信息。但是不能每次这么慢。实在不行先关闭docker所有容器。然后在关闭docker吧。然后就这么做了。关闭后然后在启动 在套件中心。打开速度恢复正常了。

    昨天修复群晖问题。后遗症就是 这个docker的内存显示为16G。实际物理内存是4G。改天16G内存便宜买一个装上。