java - 在 IntelliJ 中运行 Docker for AWS Lambda 应用程序 : Docker throws 404 Client Error (docker. 错误。ImageNotFound)

标签 java docker intellij-idea aws-lambda

问题

我正在关注本教程:https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/key-tasks.html

操作系统:Win 10 Pro 64 位

Maven:

C:\Users\MyUserName>mvn -version
Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-28T01:06:16+10:00)
Maven home: C:\Program Files\apache-maven-3.6.2\bin\..
Java version: 1.8.0_221, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_221\jre
Default locale: en_AU, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

Java:

C:\Users\MyUserName>java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

C:\Users\MyUserName>javac -version
javac 1.8.0_221

Docker(已安装并正在运行):

C:\Users\MyUserName>docker -v
Docker version 19.03.2, build 6a30dfc

IntelliJ Docker 插件中的 Docker 设置:

  • 文件 > 设置 > 构建、执行、部署 > Docker:

  • TCP 套接字 > 引擎 API URL:tcp://localhost:2375

Docker 桌面配置:

  • Docker 守护进程在选中复选框的情况下启动:“在 tcp://localhost:2375 上公开守护进程,无需 TLS”

通过 App.java 上的 Lambda 符号运行 Lambda 函数时出现异常(完整日志在帖子末尾提供):

requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http+docker://localnpipe/v1.35/containers/create

预期输出:Lambda 函数已部署到本地 Docker 容器并运行。

手动运行 Docker 命令时,出现此错误:

C:\Users\MyUserName>docker run lambci/lambda:java8
Unable to find image 'lambci/lambda:java8' locally
java8: Pulling from lambci/lambda
docker: image operating system "linux" cannot be used on this platform.
See 'docker run --help'.

当 Docker 从 IntelliJ 中运行时,我不会收到此错误。

IntelliJ 日志的完整输出:

"C:\Program Files\Amazon\AWSSAMCLI\bin\sam.cmd" local invoke --template C:\Users\MyUserName\dev\IdeaProjects\Serverless-Project-01\HelloWorldFunction\.aws-sam\build\template.yaml --event "C:\Users\MyUserName\AppData\Local\Temp\[Local] HelloWorldFunction-event.json" HelloWorldFunction
Invoking helloworld.App::handleRequest (java8)
2019-10-05 22:46:08 Found credentials in environment variables.

Fetching lambci/lambda:java8 Docker container image.....
Mounting C:\Users\MyUserName\dev\IdeaProjects\Serverless-Project-01\HelloWorldFunction\.aws-sam\build\HelloWorldFunction as /var/task:ro,delegated inside runtime container
Traceback (most recent call last):
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\api\client.py", line 261, in _raise_for_status
    response.raise_for_status()
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\requests\models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http+docker://localnpipe/v1.35/containers/create

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "runpy.py", line 193, in _run_module_as_main
  File "runpy.py", line 85, in _run_code
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\__main__.py", line 12, in <module>
    cli(prog_name="sam")
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 717, in main
    rv = self.invoke(ctx)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metrics.py", line 93, in wrapped
    raise exception  # pylint: disable=raising-bad-type
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metrics.py", line 62, in wrapped
    return_value = func(*args, **kwargs)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\invoke\cli.py", line 90, in cli
    parameter_overrides,
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\invoke\cli.py", line 150, in do_cli
    context.function_name, event=event_data, stdout=context.stdout, stderr=context.stderr
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\lib\local_lambda.py", line 97, in invoke
    self.local_runtime.invoke(config, event, debug_context=self.debug_context, stdout=stdout, stderr=stderr)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\lambdafn\runtime.py", line 83, in invoke
    self._container_manager.run(container)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\manager.py", line 93, in run
    container.create()
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\container.py", line 134, in create
    real_container = self.docker_client.containers.create(self._image, **kwargs)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\models\containers.py", line 861, in create
    resp = self.client.api.create_container(**create_kwargs)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\api\container.py", line 429, in create_container
    return self.create_container_from_config(config, name)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\api\container.py", line 440, in create_container_from_config
    return self._result(res, True)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\api\client.py", line 267, in _result
    self._raise_for_status(response)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\api\client.py", line 263, in _raise_for_status
    raise create_api_error_from_http_exception(e)
  File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\errors.py", line 31, in create_api_error_from_http_exception
    raise cls(e, response=response, explanation=explanation)
docker.errors.ImageNotFound: 404 Client Error: Not Found ("No such image: lambci/lambda:java8")

我对这一切都很陌生,因此感谢您的支持。

最佳答案

我自己也遇到过这个错误

  1. 右键单击 Windows 托盘中的 Docker Desktop 图标
  2. 选择“切换到 Linux 容器”

关于java - 在 IntelliJ 中运行 Docker for AWS Lambda 应用程序 : Docker throws 404 Client Error (docker. 错误。ImageNotFound),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58248597/

相关文章:

node.js - 在没有端口映射的情况下运行 Node Docker

Angular Docker 热重载不适用于 Windows

java - 如何将 Mule 项目的配置从 Intellij 转移到 Netbeans 8?

editor - 如何禁用IDEA自动关闭大括号?

java - SLF4J:SimpleLogger 不记录跟踪和调试,也不记录异常

java - Spring Boot 应用程序中的 Hibernate/JPA 错误加入

java - ArrayIndexOutOfBoundsException : -1

Java PATH 问题(适用于 java 安装目录,但不适用于其他任何地方)

java - 如何使用 Spring MVC 从表单中的组合中获取属性值

amazon-ec2 - DEIS 没有公共(public) IP