首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法在docker /bin/sh中运行go程序:<program>:not found

在Docker /bin/sh中无法运行Go程序:<program>:not found的问题可能是由于以下几个原因导致的:

  1. Go程序未正确安装:确保在Docker镜像中正确安装了Go语言环境。可以通过在Dockerfile中添加以下命令来安装Go:
代码语言:dockerfile
复制

RUN apt-get update && apt-get install -y golang

代码语言:txt
复制

或者使用其他适合的安装方式。

  1. Go程序未正确编译:在Docker镜像中,需要确保Go程序已经被正确编译为可执行文件。可以通过在Dockerfile中添加以下命令来编译Go程序:
代码语言:dockerfile
复制

RUN go build -o <program>

代码语言:txt
复制

其中,<program>是你的Go程序的名称。

  1. Go程序的路径未正确设置:在Docker镜像中,需要确保Go程序的路径正确设置。可以通过在Dockerfile中添加以下命令来设置Go程序的路径:
代码语言:dockerfile
复制

ENV PATH=$PATH:/path/to/go/program

代码语言:txt
复制

其中,/path/to/go/program是你的Go程序所在的路径。

  1. Docker容器中缺少依赖项:如果你的Go程序依赖于其他库或模块,需要确保这些依赖项在Docker镜像中已经正确安装。可以通过在Dockerfile中添加以下命令来安装依赖项:
代码语言:dockerfile
复制

RUN go get -d -v ./...

代码语言:txt
复制

这将自动下载并安装Go程序所需的所有依赖项。

综上所述,要解决在Docker /bin/sh中无法运行Go程序:<program>:not found的问题,需要确保正确安装Go语言环境、正确编译Go程序、正确设置Go程序的路径,并且安装了Go程序所需的所有依赖项。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

docker通过X11运行gui程序

本文由腾讯云+社区自动同步,原文地址 http://blogtest.stackoverflow.club/99/ 背景 我们都知道Docker是一个开源项目,提供了一个打包、分发和运行任意程序的轻量级容器的开放平台...它没有语言 支持、框架或者打包系统的限制,并可以运行在任何地方、任何时候,从小型的家用电脑到高端的服务器都可以运行。...但是docker的应用环境不止限于web等不需要GUI的场景,如果我们需要经常测试新的框架,或者本地开发一个docker image,随后上传到服务器。...为了演示如何在docker运行GUI程序,我们以firefox为例。 以下所有代码的环境为ubuntu 16.04 amd64, 其他发行版可进行适当修改。...步骤 安装docker sudo apt install docker.io 拉取一个image docker pull ubuntu:16.04 运行一个容器 docker run -ti --net

10.6K30

基于 Alpine 的 Docker 镜像编译的程序无法云函数环境运行

最近有一个用户反馈, 他使用 golang:1.13.1-alpine3.10 这个镜像来编译的可执行程序无法云函数的环境运行, 报错信息如下: fork/exec /var/user/main: no...Go 程序链接出错的信息, 看起来也是 Alpine Linux 下编译的, 有人回复道 Alpine Linux 使用的不是 glibc 啊哈, 终于有线索了, 写代码验证一下 package main...import "fmt" func main() { fmt.Println("hello world") } CentOS 上编译后, 使用 ldd 查看一下程序依赖哪些 .so(也可以使用...readelf -d) $ ldd main not a dynamic executable 程序太简单了, 没有依赖动态库 搜索了一下, 发现 Go 的仓库有一个 issue #33019...ld-musl-x86_64.so.1 => /lib64/ld-linux-x86-64.so.2 (0x00007f2512958000) 可以看到, 缺失了 libc.musl-x86_64.so.1, 运行一下程序

5.7K00
  • 基于Dockerfile构建容器镜像的最佳实践

    ,控制台会输出Sending build context to Docker daemon xxxMB,这就表示将当前工作目录下的文件及目录都作为了构建上下文 前面提到可以RUN指令添加--no-cache...不使用缓存,同样也可以执行docker build命令时添加该指令以镜像构建时不使用缓存 构建上下文中,使用.dockerignore 文件构建时就可以避免将本地模块以及调试日志被拷贝进入到Docker...Tini tini容器init是一个最小化的init系统,运行在容器内部,用于启动一个子进程,并等待进程退出时清理僵尸和执行信号转发 优点 tini可以避免应用程序生成僵尸进程 tini...可以处理Docker进程运行程序的信号,通过Tini, SIGTERM 可以终止进程,不需要你明确安装一个信号处理器 示例 # Add Tini ENV TINI_VERSION v0.19.0...,这就和我们vm上运行一个nginx服务一样,最好通过特定的降权用户去运行 举例,tomcat镜像 ...

    2K40

    Linux系统sh脚本编写

    一、开头 程序必须以下面的行开始(必须方文件的第一行): #!/bin/sh或者#!/bin/bash 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。...在这个例子我们使用/bin/sh来执行程序。 当编写脚本完成时,如果要执行该脚本,还必须使其可执行。 要使编写脚本可执行: 编译 chmod +x filename 这样才能用..../filename 来运行(如:chmod +x 123.sh,./123.sh) 二、注释 进行shell编程时,以#开头的句子表示注释,直到这一行的结束。...三、变量 shell编程,所有的变量都由字符串组成,并且不需要对变量进行声明。...1,自动执行jar项目运行的脚本 a,创建脚本文件(test-a.sh) [root@docker_t tools]# touch test-a.sh b,编辑文件 [root@docker_t

    7.8K10

    dotnet 执行 docker 容器 error MSB4018 CreateAppHost 任务意外失败可能原因

    使用 ASP.NET Core 的 docker 调试的时候,在生成的这一步提示 C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\.../bin/sh -c "if PID=$(pidof dotnet); then kill $PID; fi" 1>/bin/sh: pidof: command not found 1>C:\Users...microsoft.visualstudio.azure.containers.tools.targets\1.10.8\build\Container.targets(138,5): warning CTP1006: 未能在容器停止应用程序.../sh: pidof: command not found 此时 VS 的错误提示内容如下 11>C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk...kill 命令杀掉正在运行的实例,重新 VS 按下 F5 开始调试就可以 关于 docker 命令请看 docker常用命令-docker kill_OneZeroTwoFour-CSDN博客 VisualStudio

    1.6K30

    Linux的binfmt-misc原理分析

    _64系统运行arm64应用 先准备一个arm64架构的程序(可以使用go跨平台编译生成一个),执行后发现有报错: bash: ..../go-test:无法执行二进制文件: 可执行文件格式错误 现在,我们执行一下apt install qemu-user-binfmt命令,然后再运行上面的arm64程序,发现能正常运行了。...这对于某些程序运行时需要知道它们自己的名称(即argv[0])的情况很有用 O: 表示offset,这意味着启动模拟器之前,需要从二进制文件读取一个偏移量。...:echo -1 > /proc/sys/fs/binfmt_misc/binfmt-test 0x04 x86_64系统运行arm64架构的Docker镜像 现在我们用docker命令运行一个arm64...0x07 总结 binfmt-misc提供了灵活的文件关联机制,使得部分无法直接执行的程序可以像普通Linux程序一样直接运行起来(如:跨架构程序、Windows exe等)。

    89210

    【升职加薪秘籍】我服务监控方面的实践(2)-监控组件配置

    .├── ReadMe.md├── build.sh // 对webhookserver 以及 webapp 项目进行编译 ,然后放到program文件夹里├── docker-compose.yaml..., 自研的报警服务(项目代码里是alerterserver)可以看到,实际的生产环境,应用服务和filebeat,node exporter是同一台主机上,共享了linux命名空间,直接用docker-compose...为了让node exporter 容器镜像启动时也会运行webapp程序,我修改了其启动容器时的entrypoint配置,因为node exporter本来的entrypoint是要去运行node exporter...然后是ubuntu这个容器,映射了项目代码里的program 目录,program这个目录下放置了alerterserver报警服务的二进制程序,ubuntu容器就是前台启动这个程序,16060端口就是报警服务监听的端口...你也可以用prometheus关键字替换ip地址,变成http://prometheus:9090 ,因为docker-compose启动的进程默认可以用配置文件的容器名代替ip地址进行访问。

    21420

    三个技巧 大幅减少 Docker 镜像体积

    以下是 distroless 存储库的描述: “distroless”镜像只包含应用程序及其运行时依赖项,不包含程序包管理器、shell 以及标准 Linux 发行版可以找到的任何其他程序。...你可以运行的唯一的二进制文件是 Node.js: $ docker exec -ti docker_id_here node 说它是个好消息,是因为如果攻击者利用你的应用程序获得对容器的访问权限将无法像访问...你可以使用以下命令 attach 到运行的容器: $ docker exec -ti 9d8e97e307d7 bash OCI runtime exec failed: exec failed: container_linux.go...如果你是在生产环境运行容器,并且更关心安全性,那么可能 distroless 镜像更合适。添加到 Docker 镜像的每个二进制文件都会给整个应用程序增加一定的风险。...只容器安装一个二进制文件可以降低总体风险。 例如,如果攻击者能够利用运行在 distroless 上的应用程序的漏洞,他们将无法容器中使用 shell,因为那里根本就没有 shell!

    1.5K20

    如何优雅的编写Dockerfile

    3.然后可以基本的平台镜像之上构建业务镜像,业务镜像是可以直接启动应用程序的,也就是需要启动服务进程的。该层镜像就是直接和业务代码融合的镜像,随着业务的更新,镜像也会频繁的改动上线。...可以基本镜像层进行构建supervisord镜像,然后在上层业务层通过配置supervisord.conf来管理对个进程,实现一个容器启动多个服务进程。...##一、构建无需启动服务的pass层镜像(提供基本的软件运行环境,业务通过bash登录去启动业务程序) ###1.首先使用base镜像构建一层sshd的基本镜像** FROM centos6.8-base...admin.admin -R /export/ /home/admin/ ---- 构建一个基于python27的基本环境,环境本身已经安装各种第三方程序库: FROM centos6.8-sshd...-s /usr/local/redis-2.8.9/redisd.sh /usr/local/bin/redisd.sh EXPOSE 3679 ADD supervisord.conf /etc/

    3K80
    领券