Docker本地无法找到镜像求助:离线部署Datadog合成代理遇阻
解决离线环境下Datadog合成代理Docker镜像迁移问题
你当前的操作存在几个关键错误,逐一修正并给出正确流程如下:
错误点梳理
curl无法下载Docker镜像:Docker镜像不是普通文件,不能用curl直接拉取,必须通过Docker专属命令处理。- 误用
docker build命令:docker build是从Dockerfile构建新镜像的工具,和导入已有镜像完全无关,你不需要执行这个命令。 - 手动
tar打包镜像名称无效:Docker镜像的导出必须用docker save命令,直接打包镜像名称字符串生成的文件,Docker根本无法识别。
正确操作流程
第一步:在有外网的本地机器上拉取并导出镜像
- 拉取目标镜像:
docker pull gcr.io/datadoghq/synthetics-private-location-worker:1.36.0
- 将镜像导出为Docker可识别的tar包:
docker save -o synthetics-private-location-worker.tar.gz gcr.io/datadoghq/synthetics-private-location-worker:1.36.0
第二步:将tar包传到离线服务器并导入镜像
- 用FileZilla把生成的
synthetics-private-location-worker.tar.gz传到服务器目标目录。 - 在服务器上导入镜像:
docker load -i synthetics-private-location-worker.tar.gz
第三步:运行容器
导入完成后,执行Datadog提供的运行命令(注意要带完整镜像名,或可以给镜像打标签简化命令):
docker run -d --restart unless-stopped -v $PWD/priv-location.json:/opt/datadog/synthetics-check-runner.json gcr.io/datadoghq/synthetics-private-location-worker:1.36.0
如果想简化镜像名,可在导入后给镜像打标签:
docker tag gcr.io/datadoghq/synthetics-private-location-worker:1.36.0 synthetics-private-location-worker:1.36.0
之后就能用你原本的短名称运行容器了。
内容的提问来源于stack exchange,提问作者Kat Fitzgerald
相关产品推荐
相关产品推荐

