我是Docker的新手。我发现我们可以使用Dockerfile中的ENV指令设置环境变量。但是,如何在Dockerfile中为长命令设置bash别名?
基本上就像您经常做的那样,将其添加到用户的.bashrc
:
FROM foo
RUN echo 'alias hi="echo hello"' >> ~/.bashrc
和往常一样,这仅适用于交互式外壳:
docker build -t test .
docker run -it --rm --entrypoint /bin/bash test hi
/bin/bash: hi: No such file or directory
docker run -it --rm test bash
$ hi
hello
对于非交互式外壳,您应该创建一个小脚本并将其放在路径中,即:
RUN echo -e '#!/bin/bash\necho hello' > /usr/bin/hi && \
chmod +x /usr/bin/hi
如果您的别名使用参数(即hi Jim
-> hello Jim
),则只需添加"$@"
:
RUN echo -e '#!/bin/bash\necho hello "$@"' > /usr/bin/hi && \
chmod +x /usr/bin/hi
问题内容: 每当我运行docker容器时,我都会看到它使用随机MAC地址: 如何为容器运行设置特定的MAC地址? 我可以使用相同的MAC地址同时运行多个容器吗?这些容器不需要访问外部网络,也不需要互相交谈。 问题答案: 使用LXC配置选项设置MAC地址。这是一个如何使用Docker 0.6.1设置MAC地址的示例: 在输出中,您将看到已设置的HWaddr: 更新: 先前的开关(带1个破折号)已被弃
Dockerfile构建镜像,同时需要python和rust环境,求助 这个项目是其他人做的,他在python里面使用了一个包名叫“ploygons”,这个包好像是处理图像时比pandas还是什么快很多,但是这个包需要rust环境 cargo ,才能正常运行,在开发环境里安装rust环境还是比较轻松的。 但是我现在需要测试放在docker环境运行,然后打包发送给别人。
问题内容: 我的目录仅包含两个文件,并且: 在读 并且仅包含 在成功生成: 但是,如果尝试这样做,则会出现错误: 是什么原因造成的?(我记得以类似的方式在基于图像的脚本中运行脚本,所以也许它是Alpine特有的)? 问题答案: Alpine附带ash作为默认外壳,而不是。 所以你可以 有一个shebang将/ bin / bash定义为sayhello.sh的第一行,因此您的文件sayhello.
我在用“docker外面的docker”和jenkins运行一个容器。我的docker是: 所以所有从“jenkins容器”启动的容器都在主机中运行。 但是,当我试图在需要卷的作业中运行“jenkins容器”中的docker compose时,它采用的是来自主机的路径,而不是jenkins的路径。我是说,当我和docker合作时 它安装在主机的/var/jenkins_home/workspace
问题内容: 这个问题的答案不起作用。 在我可以接受或不接受该标志之前,docker容器始终会退出。我可以列出所有尝试过的命令,但这是 各种标志和的组合。 如何将现有的容器启动到bash中?为什么这么难?这是对Docker的“不当”使用吗? 编辑:我用创建了容器。有关容器的信息: 问题答案: 首先,容器不是虚拟机。容器是用于运行进程的隔离环境。容器的生命周期与内部运行的进程绑定在一起。当进程退出时,
问题内容: 在提出这个问题时,Docker看起来已经足够新了,无法在网络上找到该问题的答案。我发现的唯一地方是这篇文章,作者说这很困难,仅此而已。 问题答案: 我同意这取决于您使用的容器。如果您使用的是官方的Tomcat映像,看起来很简单,则需要将环境变量与堆设置一起传递: 请参阅如何设置JVM参数?