您现在的位置是:首页 > 文章详情

Docker 必备的 PowerShell 别名设置教程,轻松应对日常办公

日期:2018-11-27点击:539

screenshot

出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!


作为一名使用 Docker 办公的程序员来说,我每天需要使用到大量的 docker 命令。通过在 PowerShell 中将这些命令处理成别名的形式,我节省了大量打字的时间以及处理拼写错误和修复拼写错误的时间。例如:当我想删除所有容器时,我只需要输入 drmf 即可,当我想将容器的IP地址添加到我的主机文件时,我只需要输入 d2h 即可,这就是我对于别名的应用。


别名和 PowerShell 配置文件

screenshot

别名就是您可以为常用的命令指定一个简短的名称。您可以使用 Set-Alias 命令来为常用命令添加别名的指定名称,以及它应该运行的命令。所以,如果您无法忍受通过输入代码来启动 VS Code,那么您就可以将它的别名设置为“c”,如下所示:

Set-Alias -Name c -Value code 

如果要为更加复杂的命令添加别名时,您可以先创建一个函数,然后为该函数设置别名。所以,如果您早上上班的例行程序是从打开 Chrome、Firefox、VS Code 和 Slack 开始时,那么您就可以将其添加到一个函数中并将这个函数的别名设置为“am”,如下所示:

function Start-TheDay { start chrome; start firefox; start code; start slack; } Set-Alias -Name am -Value Start-TheDay 

需要注意的是,设置的别名仅存在于会话期间。要想使它们永久存在,您需要将它们保存在 PowerShell 的配置文件中,以便每次启动会话时都能使用它们。

screenshot

您可能已经拥有了一个由您或工具创建的配置文件,运行 notepad $profile 命令来找到它。如果可以打开 Notepad,那么您只需粘贴要在每个会话中使用的函数和别名即可。如果您收到错误消息,指出该文件或目录不存在,请先运行 New-Item -Path $ profile -ItemType file –force 命令,然后再次运行 notepad $profile 命令即可。


Docker PowerShell 别名1:“drm”

“drm” 别名可以删除所有已停止的容器。 当您想在一堆正在运行的容器中删除那些已停止运行的容器时,该别名很有用:

function Remove-StoppedContainers { docker container rm $(docker container ls -q) } Set-Alias drm Remove-StoppedContainers 

Docker PowerShell 别名2:“drmf”

“drmf” 别名可以删除所有容器,无论它们是否正在运行。 当您想要重置正在运行的容器并打算从零开始时,该别名很有用:

function Remove-AllContainers { docker container rm -f $(docker container ls -aq) } 

Set-Alias drmf Remove-AllContainers
注意:请谨慎使用该别名。


Docker PowerShell 别名3:“dip”

“dip” 别名可以获取容器的 IP 地址,并将容器名称或容器 ID 的一部分传递给它,例如 dip 02a 或 dip signup-db。当您想要直接连接到容器,而不是使用主机上已发布的端口时,该别名很有用:

function Get-ContainerIPAddress { param ( [string] $id ) & docker inspect --format '{{ .NetworkSettings.Networks.nat.IPAddress }}' $id } Set-Alias dip Get-ContainerIPAddress 

Docker PowerShell 别名4:“d2h”

“d2h” 别名可以将容器的 IP 地址添加到主机的 hosts 文件中,因此您可以在 Docker 主机上按名称引用容器,就像容器通过名称来相互访问一样。

举个例子:我有一个使用 SQL 数据库的 Web 应用程序。在开发和测试环境中,我将在数据库的容器中运行 SQL Server 服务。该容器称为“petshop-db”,并且 Web 配置中的所有连接字符串都使用“petshop-db”作为数据库服务器名称。如果我想在本地运行这个 Web 应用程序,但仍然使用上述数据库的容器,此时,我只需启动容器并运行“d2h petshop-db”命令即可。现在我的 Web 应用程序使用的是来自 hosts 文件的容器 IP,所以我可以使用 docker-compose up 命令来运行整个应用栈,而无需更改任何配置。

非常有用的别名,因此您可以使用容器的名称来打包默认配置的设置,从而在本地运行您的应用程序。

function Add-ContainerIpToHosts { param ( [string] $name ) $ip = docker inspect --format '{{ .NetworkSettings.Networks.nat.IPAddress }}' $name $newEntry = "$ip $name #added by d2h# `r`n" $path = 'C:\Windows\System32\drivers\etc\hosts' $newEntry + (Get-Content $path -Raw) | Set-Content $path } Set-Alias d2h Add-ContainerIpToHosts 

注意:该别名有可能弄乱您的 hosts 文件,它添加的行都带有“#added d2h#”样式的后缀,所以您可以编写一个清理命令(或别名)的脚本来处理它。

“d2h” 别名会在 hosts 文件顶部添加行,因此如果 hosts 文件顶部存在多行时(由“d2h” 别名添加的行),Windows 会优先采用第一行的内容。所以,每次启动新容器时,您都可以运行“d2h petshop-db”命令,只需将当前容器的 IP 地址置于 hosts 文件的顶部即可。


所有的别名

screenshot

我已经将我的 PowerShell 配置文件保存在 GitHub Gist 中,您浏览 https://gist.github.com/sixeyed/c3ae1fd8033b8208ad29458a56856e05 ,将整个文档复制到 $ profile 文件中,然后在 PowerShell 中运行它。 $ profile 会用新别名更新当前会话。 GitHub Gist 还具有自定义提示功能,使 PowerShell 的提示更像 Linux 终端。

原文链接:https://yq.aliyun.com/articles/673752
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章