我有一个节点js应用程序,它执行基本的docker操作,如pull image,create,run,start和stop docker containers。我正在使用dockerode库。 我想强制执行只允许被提取的受信任签名图像。 根据docker文档,设置env变量DOCKER_CONTENT_TRUST = 1。这是不可行的,因为我正在远程调用docker。
在命令行上观察:在未设置DOCKER_CONTENT_TRUST = 1的情况下,使用标志--disable-content-trust = false将仅强制下载受信任的图像。
[root@vm ~]# echo $DOCKER_CONTENT_TRUST
[root@vm ~]# docker pull --disable-content-trust=false docker/trusttest
Using default tag: latest
no trust data available
[root@vm ~]#
但是,使用dockerode api从节点js调用时没有效果
这是节点代码:
function pullImage(imageId){
return new Promise((resolve, reject)=>{
docker.pull(imageId,{"disable-content-trust":"false"},(err,stream)=>{
if(err){
console.error("Docker pull failed for:" + imageId + "error:" + err);
reject(err);
}else
console.log("Docker image installed: " + imageId);
resolve(true);
}
});
});
}
pullImage('docker/trusttest',{}).then((v)=>{
console.log("pull image successful", v);
}).catch((ex)=>{
console.error("exception in pull image", ex);
});
即使disable-content-trust = false,此代码也会下载图像。 问题是我是否正确地将选项参数传递给docker.pull? 我无法找到dockerode的选项参数值的文档。 任何帮助深表感谢。
链接: https://docs.docker.com/engine/security/trust/content_trust/