np2*_*p20 53 unix bash alias docker dockerfile
我是码头工人的新手.我发现我们可以使用Dockerfile中的ENV指令设置环境变量.但是如何在Dockerfile中为长命令设置bash别名呢?
Eri*_*erg 103
基本上就像你经常做的那样,将它添加到用户的.bashrc:
FROM foo
RUN echo 'alias hi="echo hello"' >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
像往常一样,这只适用于交互式shell:
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 Code Online (Sandbox Code Playgroud)
对于非交互式shell,您应该创建一个小脚本并将其放在路径中,即:
RUN echo -e '#!/bin/bash\necho hello' > /usr/bin/hi && \
chmod +x /usr/bin/hi
Run Code Online (Sandbox Code Playgroud)
如果您的别名使用参数(即.hi Jim- > hello Jim),只需添加"$@":
RUN echo -e '#!/bin/bash\necho hello "$@"' > /usr/bin/hi && \
chmod +x /usr/bin/hi
Run Code Online (Sandbox Code Playgroud)
小智 14
要创建现有命令的别名,还可以使用ln -s:
ln -s $(which <existing_command>) /usr/bin/<my_command>
如果您想仅在 Dockerfile 中使用别名,而不是在容器内使用别名,那么最短的方法是ENV声明:
ENV update='apt-get update -qq'
ENV install='apt-get install -qq'
RUN $update && $install apt-utils \
curl \
gnupg \
python3.6
Run Code Online (Sandbox Code Playgroud)
并按照已经描述的方式在容器中使用:
RUN printf '#!/bin/bash \n $(which apt-get) install -qq $@' > /usr/bin/install
RUN chmod +x /usr/bin/install
Run Code Online (Sandbox Code Playgroud)
大多数时候,我只是在构建阶段使用别名,而不是进入容器内部,因此第一个示例对于日常使用来说更快、更清晰、更简单。
我认为最简单的方法是将文件安装到包含别名的容器中,然后指定 Bash 应该在哪里找到它:
docker run \
-it \
--rm \
-v ~/.bash_aliases:/tmp/.bash_aliases \
[image] \
/bin/bash --init-file /tmp/.bash_aliases
Run Code Online (Sandbox Code Playgroud)
使用示例:
docker run \
-it \
--rm \
-v ~/.bash_aliases:/tmp/.bash_aliases \
[image] \
/bin/bash --init-file /tmp/.bash_aliases
Run Code Online (Sandbox Code Playgroud)
输出:
echo 'alias what="echo it works"' > my_aliases
docker run -it --rm -v ~/my_aliases:/tmp/my_aliases ubuntu:18.04 /bin/bash --init-file /tmp/my_aliases
alias
Run Code Online (Sandbox Code Playgroud)
alias what='echo it works'
Run Code Online (Sandbox Code Playgroud)
输出:
it works
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40916 次 |
| 最近记录: |