在我的 Dockerfile 中,我有以下“复制”语句:
# Copy app code
COPY /srv/visitor /srv/visitor
Run Code Online (Sandbox Code Playgroud)
不用说,在我的主机系统中,在“/srv/visitor”目录下,确实有我的源代码:
[root@V12 visitor]# ls /srv/visitor/
Dockerfile package.json visitor.js
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用此 Dockerfile 构建映像时,它会在应该发生“复制”的步骤中挂起:
Step 10 : COPY /srv/visitor /srv/visitor
INFO[0155] srv/visitor: no such file or directory
Run Code Online (Sandbox Code Playgroud)
它说没有这样的目录,但显然有。
有任何想法吗?
更新1:
有人指出我错了,因为我理解构建上下文的方式。该建议相当于将“COPY”语句更改为:
COPY . /srv/visitor
Run Code Online (Sandbox Code Playgroud)
问题是我是这样处理的,构建过程在下一步就停止了:
RUN npm install
Run Code Online (Sandbox Code Playgroud)
它说了一些类似“找不到 package.json 文件”的内容,但显然有一个。
更新 2:
我尝试在 Dockerfile 中使用此更改运行它:
COPY source /srv/visitor/
Run Code Online (Sandbox Code Playgroud)
尝试运行 npm 时它停止了:
Step 12 : RUN npm install
---> Running in ae5e2a993e11
npm ERR! install Couldn't read dependencies
npm ERR! Linux 3.18.5-1-ARCH
npm …
Run Code Online (Sandbox Code Playgroud) 我最近与我的一个客户签订了合同,以促进他的“家庭”办公室和辅助站点的无线通信。
主要场地是一栋 5 层办公楼(或多或少 15m 高)的顶部两层,次要场地是两个开放的“地块”之一(其中一个是管理层待定)。离二级站点的地面距离,近的距离2km多一点,最远的距离2.9km左右。
该链路将用于传输 1 个(甚至可能是两个)IP 摄像机和某种支持以太网的环境或天气传感器的视频馈送。我已经检查了摄像机的必要黑白,900Mhz 和 5.8Ghz 对其中的 4 个都绰绰有余,对于 2 个更是如此。我还验证了两个可能的安装点都有清晰的视线并且超过 60% 的菲涅耳区间隙已被覆盖。请记住,这是我的第一个长距离链接(带引号或不带引号的长链接),我不愿承认无线物理远非我的强项。
我的问题的最终要点是,虽然我在过去几天阅读了很多关于频率选择的内容,但我仍然发现一些歧义(我知道只有我觉得它有歧义)。大多数消息来源,比如这个,同意尽管较低频率在给定距离内的损耗较小(我了解到它被称为自由空间损耗),但它们需要更大的天线才能获得相同的“强度”传输(实际上是“增益”)与“强度”相同?)。
那么,对于给定的 2-3 公里距离,并且还满足所有典型要求,哪个频率更可取(或者我敢说“更好”)?我是否应该选择带有相对“小”天线的 900Mhz,因为 3km 并不是真正的“长距离”,并且它会提供一个衰减更少的链路,更少的重传,更高的整体速度?或者我应该为高级黑白选择 5.8Ghz 选项(我对此仍然不是很确定,如果错误,请纠正我),因为在这个距离上没有真正的区别,所以为什么不选择“更好”一?
附带说明一下,我应该坚持使用真正的 WiFi 还是应该考虑像Ubiquiti那样的专有桥接解决方案?我对他们的接入点有很多经验,我真的很满意,所以我不介意在我的客户中再集成一种他们的产品。在任何情况下,我都在寻找最佳解决方案,此时供应商的选择并不重要。
原谅我的无知和可能的语言错误使用。
更新:我安排租用一台频谱分析仪几天。我将确保 900Mhz 频段相当清晰,然后继续往下走。
更新 2:我有上述设备可以玩一天半。结论性的发现是该地区的 9Mhz 频段几乎是“空的”,正如这里所建议的那样,因此可以解决频率选择问题。
关于现在的设备,我将使用 Ubiquiti AirMax Yagi 天线和匹配的 RM900 2x2 无线电。我和客户员工的初步测试表明,性能超出了预期。
附带说明一下,选择的“地段”是 3 公里外的地段。
我正在使用一个非常简单的 Dockerfile 制作一个 docker 镜像。在 Dockerfile 里面,我有这个命令:
RUN printf "192.92.13.243 www.hahaha.com \n" >> /etc/hosts
Run Code Online (Sandbox Code Playgroud)
命令本身似乎没问题,因为此时图像的创建不会停止。
问题是:运行映像时,应该插入“/etc/hosts”中的行不存在。
现在,我四处搜索,发现在 docker 1.2 版本之前,容器内的主机文件存在问题。就我而言,我使用的是目前最新的 1.5 版。
我错过了什么吗?
更新1:
在 docker 的 github 页面中,似乎有很多问题,无论是开放的还是封闭的。
这个有点理论性,但请耐心等待。
目前我有一个服务器运行几个 Docker 容器(4 个或 5 个,取决于日期和时间)。我计划添加另一个,就像第一个一样,甚至可能是第三个。
现在,我的问题是:我应该管理 15 个容器而不是 5 个,使用 Google Kubernetes 有什么好处吗?
此外,是否有“官方”或至少“确定性”的工作流程可以从 Docker 容器迁移到 Kubernetes 的本机单元“pods”。在你问之前,我确实知道 pod 是由容器组成的(有时甚至是一个)。我的主要问题是“dockerfiles”与 pod 配置完全不同。
有任何想法吗?
我正在为灌溉泵和连接的管道构建一个监控系统。至此,我已经完成了传感器网络。一切都连接到一个微控制器板(实际上是 4 个 Teensy 3.0板),并且该板被编程为以预定的间隔输出一串格式化数据(读数)。
我想要做的是通过 USB 串行将板连接到RaspberryPI(或其他一些 SBC),并让计算机将从传感器板接收到的读数发送到远程服务器以进行记录。
我考虑过的选项是:
1 - Syslog...它很早就让我想到了一种可能性,因为它似乎提供了我需要的几乎所有东西。然而,复杂性让我感到害怕。
2 - REST...让 RaspberryPI 通过网络将数据逐行 POST 到服务器上的 CouchDB。
3 - HTTP ...与 node.js 保持开放的 HTTP 连接并“写入”数据行。它当然需要由第二个 node.js 脚本接收以存储在数据库中。
现在的要求:
~ 需要轻量级且相对较快。会有很多数据(1s 间隔),RaspberryPI 不是强者。
~ 我非常喜欢压缩字符串的选项。上行链路是通过 3G,我希望采用“小”月度计划。
~ 加密会很好,但不是强制性的。偏执狂对乡下人很强烈......
~我真的需要这个尽可能KISS。
长话短说,我认为这是某种网络串行连接,其中一台计算机将一行接一行地馈送到另一台计算机。
那么,我这里的哪个选项更可取?或者更好,有没有人有更好的主意?
老实说,如果有人有好的观点,我愿意编辑甚至重新发布问题。
编辑:
到目前为止,所有评论和答案都已得到赞赏和考虑。
Syslog 真的很棒,但我真的需要避免复杂性和开销。此外,经过一些测试后,RaspberryPI 似乎在启动 rsyslog 后不久就停止了。
现在已经决定 DBMS 将成为 CouchDB。
显而易见的选择是使用 curl 或残留的 node.js 服务器在数据到达后立即对数据库服务器进行 REST 调用。这虽然简单有效,但出于多种原因并不可取。安全也是一个问题;我不喜欢在现场使用微型 PC 直接调用 DBMS 的想法。
我开始悬赏的原因是我希望有人可以提出以下想法:“远程微型 PC 和 DBMS 之间的某种持久连接。数据将通过某种协议格式化并通过此连接转发以便在另一端接收。这个连接需要尽可能轻量级,具有尽可能少的开销”。
我目前正在管理分布在 2 个不同 AD 域中的计算机。我将这两个域称为 MEDIA 和 DATA。我的工作站和我的大多数同事都是 MEDIA (192.168.10/24) 域的成员。
DATA 10.0.62.0/24) 域位于远程数据中心。我在两个目录中都有一个有效的管理员帐户。
有一个 VPN 可以让我免费访问远程域。
我正在使用 Windows 管理控制台 (MMC) 来管理本地域 (MEDIA - 192.168.10.0/24) 中的计算机。我的问题是这样的:
如何从我的工作站(在 MEDIA 域上)使用 MMC 来管理 DATA 域中的计算机?
我之前的工作(主要是 Nagios)对服务器监控产品有一点经验,但从来没有机会从头开始设置监控方案。每次都有许多需要监控的机器,运行 Nagios 守护程序(我认为这有一个奇特的名字,但此时我没有记忆),以及运行 Nagios 的专用机器。
现在我是个体经营者,大多数时候,我发现自己为我的客户(存储、邮件、WLAN 控制器等)设置了一个服务器。
是否有某种轻量级的监控解决方案可以在它应该监控的同一台机器上运行?我很清楚 Nagios(以及其他商业和开源监控应用程序)能够做到这一点,但我反对的理由是 - 一个 - 它是矫枉过正(更不用说滥用系统资源)和 - 二 -这样做的坏习惯。
请随时提出任何解决方案,当然,如果我对某些事情有错误,请教育我。请注意,我对可能需要我进行一定程度“黑客攻击”的想法持开放态度。我没有明确设置部署预构建的应用程序,任何解决方案都可以并且可以考虑。
编辑:对此有一个要求。我需要它能够以自定义方式响应事件(分配脚本作为对触发器的响应就可以)。
我正在尝试从官方 Arch Linux 映像构建 Docker 映像。这些是我到目前为止所做的事情:
我拉了官方的 Arch Linux 镜像:
docker pull base/archlinux
Run Code Online (Sandbox Code Playgroud)
我写了这个“Dockerfile”:
# Set base image
FROM base/archlinux:latest
# Fix mirrorlist file
#RUN rm /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist
# Update pacman and install packages
RUN pacman-db-upgrade
RUN pacman -Syyu --noconfirm
RUN pacman -S --noconfirm nodejs phantomjs cronie
# Make cronjobs
RUN echo "*/2 …
Run Code Online (Sandbox Code Playgroud) 我想使用这个Powershell 脚本在 Win7 机器上自动进行一些备份。当从 Powershell 终端手动运行时,脚本按广告运行并在几秒钟后结束(这是一个小备份)。
问题是当我尝试使用任务计划程序自动化该过程时。时机成熟时(或当我手动运行任务时),脚本会运行并正确执行备份。但它并没有回到“就绪”状态,即使我知道它已经结束了。我每次都必须手动停止任务。
现在,我还没有等到任务再次运行时会发生什么,但我认为它不会第二次启动,因为它没有“准备好”。
我该怎么办?
更新1:
我选择的操作是“启动程序”。在“程序/脚本”框中,我有“powershell.exe”,作为参数,我有脚本“*.ps1”文件的路径。
更新1:
我注意到虽然任务没有返回“就绪”,但如果我手动启动它,它会再次运行。
由于我最近一直在做很多 IP 摄像机的工作,所以真正长距离的东西会出现只是时间问题,超出了 cat5e/cat6 电缆的覆盖范围。我现在的客户需要在他的庄园周边安装一些 IP 摄像机,还要将主屋与两座附属建筑相连,主屋旁边有一个宾馆,以及大约 400 米外的人员铺位。
现在需要说的是,我的客户已经明确(并反复)表示不考虑无线解决方案。
我的行动计划是为摄像机使用多模光纤电缆,以及以太网到光纤的媒体转换器。我会避免这种情况,但从房子到庄园周边的距离从 100 米到近一公里不等。我算不上是光纤专家,但我以前的工作在这种简单的安装方面有很好的经验。
对于实际问题:
由于我无论如何都会将光纤用于人员铺位,使用 PPP 而不是以太网进行链接有什么好处吗?
我做了一些研究,或多或少地知道 PPP 提供了什么。但是,我在任何情况下都不需要协议的任何更高级的功能,如多链路、身份验证、压缩等。由于光纤将被掩埋,因此几乎涵盖了安全性。所有链接都是点对点的,不需要压缩。
还有,有什么理由选择 PPP 而不是以太网吗?我不反对一点(甚至更多)学习,因为我有很长的时间框架。我需要做得非常好,而且这里要“干净”,所以我需要最好的选择。
如果你能指点我更多的阅读,或者一些帮助我选择的建议,我将不胜感激。
我已经设置了一个 Centos 7 服务器来运行 Nagios。默认情况下,操作系统有非常严格的 iptables 规则,这里的一个人建议通过输入以下命令来解决这个问题:
iptables -A IN_public_allow -p tcp --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
这工作正常,直到我重新启动服务器,此时我必须再次输入命令,否则服务器将再次无法访问。
这是 iptables 的正常行为吗?我可以做些什么来修复它吗?
docker ×4
arch-linux ×1
automation ×1
centos7 ×1
containers ×1
database ×1
ethernet ×1
fiber ×1
hosts-file ×1
iptables ×1
kubernetes ×1
linux ×1
monitoring ×1
nagios ×1
node.js ×1
powershell ×1
scripting ×1
serial ×1
signals ×1
wifi ×1
windows ×1
windows-7 ×1