如何为 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
}
我目前遇到一个问题。
我刚刚拉了一个 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
}