DockerFile遇到的坑

CMD 命令的坑

dockerfile 中的 CMD 命令在docker run -it 不会执行 CMD 命令。

go 复制代码
FROM golang
WORKDIR /
COPY . ./All-in-one
CMD ["/bin/sh","-c","touch /kkk.txt && ls -la"]
RUN echo 'alias ll="ls -la"' > ~/.bashrc
  • (不会执行CMD)docker run -it 不会生成kkk.txt文件
  • (会执行CMD)执行docker run -d imageName,会直接结束,通过docker ps -a 查看CMD是已经执行了。
  • (会执行CMD)执行docker run imageName,再启动新终端执行docker exec -it查看CMD命令执行结构

使用 docker run -it 命令启动容器时,默认情况下会覆盖 Dockerfile 中定义的 CMD 指令。

当您在运行 docker run 命令时提供了额外的命令,Docker 不会执行 Dockerfile 中的 CMD 指令,而是执行您提供的命令

docker run,golang程序在宿主机上可以运行,在容器中不可以运行

在尝试用docker的alpine镜像运行从golang镜像中编译出来的可执行文件时出现如下的错误

go 复制代码
... "no such file or directory"

在 Go 1.5 版本之后,Go 默认开启了 CGo。CGo 是 Go 语言的一个特性,它允许你在 Go 代码中调用 C 语言的函数。CGo 允许 Go 代码与 C 语言代码直接交互,这为使用 C 语言编写的库提供了良好的兼容性。

禁用CGO_ENABLED=0,重新编译即可

go 复制代码
export CGO_ENABLED=0

原理参考:https://blog.csdn.net/tianyi520jx/article/details/127164636

相关推荐
笃行3504 小时前
向量数据库单独建一套,这笔账划不划算
后端
weixin_431600445 小时前
Agent Workflow 学习向:Code 节点,比模板更强的变量加工
后端·python·学习·ai·
Rain的Java大神之路5 小时前
短信接口被狂刷怎么处理
java·运维·后端·web安全·面试·架构·xss
Lost of 程序猿6 小时前
AOP 实战:面向切面编程从理论到落地
后端·asp.net·aop·面向切片变成
Lost of 程序猿6 小时前
ASP.NET Core 认证授权实战:从 JWT 到 Policy,设计一套企业级 RBAC 权限系统
后端·asp.net
Lost of 程序猿6 小时前
ASP.NET Core 后台任务全景:从 BackgroundService 到 Channel 队列,再到分布式调度
后端·asp.net·.netcore
倾颜7 小时前
NestJS 核心概念梳理:从 Module、Controller 到 Guard、Interceptor
后端·node.js·nestjs
东风破_7 小时前
JWT 1:从一个登录请求开始,理解 React 项目里的 API 层与 Mock
前端·后端
东风破_7 小时前
JWT 3:为什么 Token 要放进 Authorization?Axios 拦截器到底解决了什么?
前端·后端
东风破_7 小时前
JWT 5:路由守卫是什么?把整个 JWT 登录鉴权流程串起来
前端·后端