我有一个正在运行的独立容器。我想在附加到该容器之前在其中创建命令别名。
当我连接到容器并输入:
alias bar='foo'
已创建别名,并且可以通过以下方式进行检查:
alias
命令。
但是如果我想通过 docker exec 命令(即这种方式)
docker exec -it <container-name> /bin/bash -c "alias bar='foo'"
它不起作用,可能是因为当我连接到容器并在其终端上键入
/bin/bash -c "alias bar='foo'"
它不能正常工作。
您知道如何修改alias bar='foo'
,使其与应用于独立容器的docker exec
命令一起工作吗?
答案 0 :(得分:1)
内置alias
会在当前shell中创建一个别名。别名(如环境变量)不会持久保存,只能加载。您需要更新.bashrc或容器内部的任何内容,以具有所需的别名,以便可以在bash的每次启动时将其加载。
答案 1 :(得分:1)
bashrc文件中的别名不直接接受参数。尽管在您的情况下,您将必须创建一个函数和别名。
您可以在〜/ .bashrc中添加以下内容
dexec() {
docker exec -it "$1" /bin/bash
echo "$1"
}
别忘了做
source ~/.bashrc
理想情况下,您可以执行以下操作
dexec <container_id>
答案 2 :(得分:0)
将类似
的内容添加到您的Dockerfile中
RUN echo alias bar='foo' >> ~/.bashrc
实际上,如果您以root
以外的用户身份运行容器,则需要将此命令放入正确的.bashrc