首页
学习
活动
专区
工具
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等)。

    89610

    【升职加薪秘籍】我服务监控方面的实践(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

    如何优雅的编写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
    领券