使用Docker exec命令在Linux终端创建别名

11

我有一个正在运行且已分离的容器。在附加到该容器之前,我想在其中创建一个命令别名。

当我附加到容器并键入以下命令时:

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命令一起使用吗?

3个回答

9
在你的bashrc文件中,别名不直接接受参数。尽管在你的情况下,你需要创建一个函数和别名。
你可以在~/.bashrc中添加以下内容。
dexec() {
    docker exec -it "$1" /bin/bash
    echo "$1"
}

你也可以使用/bin/sh代替/bin/bash

不要忘记执行

source ~/.bashrc

理想情况下,您可以像这样做。
dexec <container_id/container_name>

4
`alias` 内置命令可以在当前 shell 中创建别名。与环境变量一样,别名不会被保存,只有加载时才有效。你需要更新你的 .bashrc 或容器中的其他文件,以便拥有所需的别名,并在每次启动 bash 时加载它。

2

在你的Dockerfile中添加如下内容:
RUN echo 别名 bar='foo' >> ~/.bashrc
实际上,如果你在非root用户下运行容器,则需要将此命令放入正确的.bashrc文件中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接