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

相关推荐
Rain的Java大神之路13 分钟前
北漂 13 年,我把 Java 家底钉成了这张知识图谱(全站免费)
java·后端·程序员
Amos_Web22 分钟前
通过 Rspack 源码学 Rust(一):`mod`、`pub` 与 `use crate`/`use super`
后端
张彦峰ZYF34 分钟前
拆得开不等于该拆开:微服务与模块化单体的边界判据、规模阈值、团队适配与一致性代价
后端·微服务·边界是否稳定·扩展天花板是否到顶·有无小组能独立值班·独立部署的自由会否被用上·这一刀是否切断不可降级的不变量
是江迪呀1 小时前
介绍一个开源项目 —— 烂笔头
前端·后端
captain3761 小时前
Spring Web MVC(2)
java·前端·spring boot·后端·spring·mvc
紧跟先前的步伐1 小时前
Go AI Agent 实战 17|模型适配层设计:让模型可替换
开发语言·人工智能·后端·ai·golang
IT_陈寒1 小时前
一文搞懂Java的核心概念
前端·人工智能·后端
铁皮饭盒1 小时前
workbuddy和codebuddy免费送1000积分, 10秒钟搞定
前端·后端
计算机就业还在扩大2 小时前
第2期-cmp.Ordered+类型推断+刻意未支持的特性
后端·面试·golang
王中阳Go10 小时前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节