小编Use*_*645的帖子

docker 是否可以并行构建多阶段镜像?

我有一个相当大的具有多层的 Dockerfile。其中一些层需要相当长的时间。我注意到很多事情并不相互依赖。

因此,显而易见的问题是:我可以docker build并行吗?

docker构建似乎只有限制构建速度的选项,而不是加速它(例如--memory)。

示例:假设您有一个Dockerfile看起来像这样的。我现在想调用一个docker build --some-flag并行构建所有阶段的函数,除非它们必须相互协作。

FROM someImage AS stage1
# do some task

FROM otherImage AS stage2
# do another taks

FROM yetAnotherImg As stage3
# more work
COPY --from=stage2 ... # stage3 has to wait for stage2 to finish
Run Code Online (Sandbox Code Playgroud)

你知道是否--some-flag存在吗?您知道如何实现目标的不同方式吗?

编辑:

我唯一能想到的就是将 Dockerfile 分成更多阶段,从而使修改不那么痛苦,但这并不是一个真正理想的解决方案

parallel-processing docker docker-build

17
推荐指数
2
解决办法
2万
查看次数

Ignite 和 gVisor 在用例方面有什么区别?

我想知道gVisor和Weave Ignite在用例方面是否有区别(如果有的话)。对我来说,他们似乎都在尝试类似的事情:让虚拟化环境中的代码执行更加安全。

gVisor 是通过引入runsc一个运行时来实现沙盒容器的,而 Ignite 是通过使用Firecracker 来实现的,在他们的上下文中,它似乎也被用作沙盒。

virtualization sandbox firecracker weave-ignite gvisor

9
推荐指数
1
解决办法
1604
查看次数

使用 VS Code 调试程序时,如何将文件传递到程序中

我想启动 a.exe (一个已编译的 cpp 程序)并传递一个文件到其中。在 CMD 上我会这样做a.exe < input.txt。如何在调试模式下使用 VS Code 启动它?

这是我的 launch.json 文件:

{
"version": "0.2.0",
"configurations": [
    {
        "name": "C++ Launch",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceRoot}/a.exe",
        "args": [
            "<",
            "input.txt"
        ],
        "stopAtEntry": false,
        "cwd": "${workspaceRoot}",
        "environment": [],
        "externalConsole": true,
        "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
        "linux": {
            "MIMode": "gdb"
        },
        "osx": {
            "MIMode": "lldb"
        },
        "windows": {
            "MIMode": "gdb"
        }
    }
]}
Run Code Online (Sandbox Code Playgroud)

正如args我已经尝试使用的"<", "input.txt"那样,就像这篇文章中的那样以及这篇文章"<input.txt"中的建议。两者都不起作用。按照此处的建议,在 cmd 上进行调试似乎是一种非常糟糕的做法。当我拥有很棒的 VS …

c++ windows debugging exe visual-studio-code

6
推荐指数
1
解决办法
2139
查看次数

Boruvka 和 Kruskal 在查找 MST 方面的差异

我想知道Boruvkas算法和Kruskals算法之间的区别。

他们的共同点:

  • 两者都在无向图中找到最小生成树(MST)
  • 两者都将最短边添加到现有树中,直到找到 MST
  • 两者都从整体上看待图,这与 Prims 算法不同, Prims算法将一个又一个节点添加到 MST 中
  • 两种算法都是贪婪的

唯一的区别似乎是,Boruvka 的视角是每个单独的节点(从那里寻找最便宜的边),而不是查看整个图(像 Kruskal 那样)。

因此,Boruvka 似乎应该相对容易并行执行(与 Kruskal 不同)。真的吗?

algorithm graph minimum-spanning-tree kruskals-algorithm

6
推荐指数
1
解决办法
5153
查看次数

vs code:一次启动多个配置

我正在研究集群计算,想模拟一个具有一个领导节点和多个跟随节点的集群。我可以通过设置多个配置(每个节点一个)来做到这一点。现在,我想一次(或一个接一个)运行所有这些配置。

是否有可能做到这一点?

其他人已经尝试解决这个问题。他们提出的解决方案是为每个配置创建一个新launch.json文件.vscode夹。这似乎可行,但不切实际,因为我想启动 20 个(或 100 个)节点。

launch visual-studio-code

6
推荐指数
1
解决办法
6204
查看次数

在 Python 中将枚举转换为列表

我有一个我这样定义的枚举:

def make_enum(**enums):
    return type('Enum', (), enums)

an_enum = make_enum(first=1, second=2)
Run Code Online (Sandbox Code Playgroud)

稍后我想检查一下,我在函数中作为参数的值是否是an_enum. 通常我会这样做

assert 1 in to_list(an_enum)

如何将枚举对象an_enum转换为列表?如果这是不可能的,我如何检查值是否“是枚举的一部分”?

python enums assert

6
推荐指数
2
解决办法
7965
查看次数

如何将所有资源复制到新的命名空间?

我想创建一个与旧名称空间相同的新名称空间。

我的方法看起来像这样(完整命令如下):

kubectl get <resources> -o json --namespace OLD-NAMESPACE | jq '.items[].metadata.namespace = "NEW-NAMESPACE"' | kubectl create -f  -
Run Code Online (Sandbox Code Playgroud)

这基本上以 json 格式获取所有资源定义,用新名称空间替换旧名称空间,然后应用所有内容。

不幸的是,这不起作用,因为旧的定义包含名称空间特定的东西。为了避免这种情况,曾经有一个--export标志,但已被弃用,请参阅此处。

知道我该怎么做吗?

完整命令:

kubectl get bindings,configmaps,endpoints,limitranges,persistentvolumeclaims,persistentvolumes,pods,podtemplates,replicationcontrollers,resourcequotas,secrets,mutatingwebhookconfigurations,validatingwebhookconfigurations,controllerrevisions,daemonsets,deployments,replicasets,statefulsets,tokenreviews,localsubjectaccessreviews,selfsubjectaccessreviews,selfsubjectrulesreviews,subjectaccessreviews,horizontalpodautoscalers,cronjobs,jobs,certificatesigningrequests,leases,endpointslices,events,ingressclasses,networkpolicies,runtimeclasses,poddisruptionbudgets,rolebindings,roles,debugattachments,csidrivers,volumeattachments -o json --namespace OLD-NAMESPACE | jq '.items[].metadata.namespace = "NEW-NAMESPACE"' | kubectl create -f  -
Run Code Online (Sandbox Code Playgroud)

migration namespaces kubernetes

6
推荐指数
1
解决办法
5766
查看次数

无法导入...(没有所需的模块提供包)

我正在关注这个教程。

我初始化了我的项目并通过以下方式获取了依赖项

go mod init github.com/martin-helmich/kubernetes-crd-example
go get k8s.io/client-go@v0.17.0
go get k8s.io/apimachinery@v0.17.0
Run Code Online (Sandbox Code Playgroud)

我有一个使用import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1".

VS Code 向我展示了could not import k8s.io/apimachinery/pkg/apis/meta/v1 (no required module provides package "k8s.io/apimachinery/pkg/apis/meta/v1")。我在这里做错了什么?我的Go安装不正确吗?

module go kubernetes

6
推荐指数
1
解决办法
5776
查看次数

使用提供的运行时如何在本地调试 AWS Lambda?

我想在本地调试用 C++ 编写的 AWS Lambda 函数。理想情况下,我希望能够单步执行我的代码(就像您使用GDB或任何像样的 IDE 那样)。使用 AWS Lambdas 执行此操作的方法通常包括AWS SAM。

思路1,使用SAM调试:

不幸的是,SAM 不能让您调试提供的运行时,因为它“仅”支持 Node.js、Python 和 Go(比较文档)。

问题 1:

有没有办法以某种方式将 GDB 附加到我编译的 lambda 函数?

想法2,使用docker-lambda运行:

您还可以使用lambci/docker-lambda启动您的函数。如果你想得到一些调试输出,你可以做 strace docker run --rm -v my/build/dir:/var/task lambci/lambda:provided handler '{"some": "event"}'. 这有效,但并不是我正在寻找的调试质量。

问题2:

我可以以某种方式将 a 附加到正在运行的 lambda 函数docker-lambda吗?

想法3:远程:

绝望,去追求你能得到的任何东西(这不是我想做的)。

问题 3:

如果在本地真的没有办法做到这一点,我应该如何在 AWS 上做到这一点?

c++ gdb docker aws-lambda aws-sdk-cpp

5
推荐指数
0
解决办法
423
查看次数

我如何告诉 clang-tidy 检查一次编译指示而不是 llvm 风格的标头防护?

我想使用部落整洁。该程序应该检查我是否有标头防护,这就是我设置标志的原因llvm-header-guard。不幸的是,这会检查标头防护是否是 llvm-style,这是我不想要的。我想用#pragma once.

有谁知道如何告诉 clang-tidy 检查#pragma once而不是 llvm 风格的标头防护?

c++ pragma llvm header-files clang-tidy

5
推荐指数
1
解决办法
1751
查看次数