如何为 Docker 命令编写参数化 Bash 别名

How to write parameterized Bash alias for Docker command

我目前遇到一个问题。

我刚刚拉了一个 Vim 容器在 CoreOs 系统上使用它。 我尝试创建一个别名来启动 Vim 容器而不是已经存在的容器(主要是因为在这个容器上我可以安装不同的插件)

但目前它不起作用,我不知道为什么。
容器在 /home/dev

上安装了卷

我的别名:

alias dockervim="docker run -ti --rm -v \"$(pwd)\":/home/dev vimpadawan bash -c "vim \"$1\"""

但是当我编写 dockervim file_name 时它会启动 Vim 但不会与文件一起启动。

有人有什么想法吗?

Docker版本

Client version: 1.6.2 
Client API version: 1.18 
Go version (client): go1.4.2 
Git commit (client): 7c8fca2-dirty 
OS/Arch (client): linux/amd64 Server version: 1.6.2 Server 
API version: 1.18 
Go version (server): go1.4.2 
Git commit (server): 7c8fca2-dirty 
OS/Arch (server): linux/amd64

谢谢!

编辑 1:

有了这个命令和一个 start.sh 脚本,我就可以做我想做的事了:

docker run --rm -ti -v $(pwd):/root/src -e FILENAME=Dockerfile vimpada

但是当我尝试为它创建别名时,它显示了这个错误:

exec: "Dockerfile": executable file not found in $PATH FATA[0000] Error response from daemon: Cannot start container f579e5cd5bc61ee5da3b5cbeaf2a645c6183914739464cc4bf605202417467d9:
[8] System error: exec: "Dockerfile": executable file not found in $PATH

编辑 2:

刚看到你的回答 helmbert,但它实际上显示了与我的第一个函数相同的错误:

[8] System error: exec: ".bashrc": executable file not found in $PATH

但是你的第二个效果很好! 非常感谢:)

Bash aliases do not take arguments。不过,您可以尝试声明一个 bash 函数:

function dockervim() {
    docker run -ti --rm -v "${PWD}":/home/dev vimpadawan vim ""
}

然后用 dockervim <filename>.

简单地调用

请注意,此解决方案仅适用于当前工作目录中的文件。您应该能够使用以下函数使其防弹:

function dockervim() {
    filename=$(readlink -f )
    docker run -ti --rm -v "${filename}":/tmp/file-to-edit vimpadawan vim /tmp/file-to-edit
}