docker容器启动报错

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: docker容器启动报错解决

启动容器报错:

standard_init_linux.go:178: exec user process caused "no such file or directory"
  • 报错背景
    我需要启动一个golang项目的容器,然后在我的centos7环境下将golang源码build成了一个可执行文件,写了一个Dockerfile,生成了一个容器。但是容器报错,以下是我的dockerdile
FROM alpine
ADD server /usr/bin/
WORKDIR /data
CMD ["server"]

生成一个镜像没问题,生成容器的时候报了上面的错误
后来查到是因为系统的问题,我在centos下build的项目可执行文件,但是在Dockerfile里面,我用的是alpine镜像,这个镜像时ubuntu系统的,所以导致报了上面的错误

  • 解决方法:
    解决方法就是让源码在build成一个可执行文件和执行这个可执行文件时,都使用同样的系统,以下是两种解决方法:

    方法一:如果你已经在centos环境build了可执行文件,那么你的Dockerfile应该这样写:

    FROM centos:7
    ADD server /usr/bin/
    WORKDIR /data
    CMD ["server"]
    

    即在可执行文件执行的环境也使用centos的环境

方法二:我使用一个ubuntu的镜像来将源码build成一个可执行文件,同时也在ubuntu中执行这个可执行文件
以下是Dockerfile

FROM golang:1.11-alpine

ENV SERVER=/go/src/git.phjr.com/server

COPY . $server/

RUN cd /go/src/git.phjr.com/server \
&& go build

FROM alpine

ENV SACC=/go/src/git.phjr.com/server
COPY --from=0  $SACC/server /usr/bin
WORKDIR /data

CMD ["server"]

可以通过以上Dockerfile看到,我在将源码build为一个可执行文件时,使用的是golang:1.11-alpine,此镜像中带有需要的golang环境,同时也是一个ubuntu镜像,刚好和我执行环境是一样的系统

推荐使用第二种方法,这种方法可以将源码一键build成一个镜像,方便快捷,同时,alpine镜像体积非常小,性能当然会更好,其次就是docker的底层存储使用的是ubuntu系统,所以,在构建docker镜像时,最好采用ubuntu系统

相关文章
|
9天前
|
前端开发 安全 数据库
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
|
1天前
|
jenkins 持续交付 开发者
利用Docker容器化部署应用的实战指南
【6月更文挑战第27天】本文详述Docker应用部署,涵盖Docker基本概念、安装、镜像制作及运行。通过编写Dockerfile构建镜像,使用`docker build`、`run`、`push`及`stop`命令管理。集成CI/CD工具如Jenkins,实现自动化构建、测试和部署,提升开发效率与部署质量。Docker助力轻量级、可移植的微服务架构。
|
6天前
|
NoSQL Redis Docker
使用 Docker Compose 接管现有容器的文档
使用 Docker Compose 接管现有容器的文档
21 2
|
8天前
|
Cloud Native 安全 Docker
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
|
6天前
|
存储 关系型数据库 MySQL
解读 MySQL 容器信息:`docker inspect` 字段详解
解读 MySQL 容器信息:`docker inspect` 字段详解
23 1
|
9天前
|
Linux Docker 容器
蓝易云 - net.ipv4.ip_forward=0导致docker容器无法与外部通信
完成以上步骤后,Docker容器应该能够正常与外部通信了。
14 2
|
2天前
|
Docker 容器
Docker镜像、容器操作
Docker镜像、容器操作
20 0
|
7天前
|
网络协议 Linux Docker
宿主机的容器是如何通过docker0通信的?
宿主机的容器是如何通过docker0通信的?
|
21天前
|
Shell Docker 容器
深入探索Docker容器管理:常用命令一览(1)
深入探索Docker容器管理:常用命令一览(1)
|
1月前
|
Linux 开发者 Docker
如何构建在 Docker 容器中运行命令?
【1月更文挑战第6天】
74 0