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

Docker 必备的 PowerShell 别名设置教程,轻松应对日常办公_第1张图片

出品丨Docker公司(ID:docker-cn)

编译丨小东

每周一、三、五晚6点10分  与您不见不散!


说在前面


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

&


别名和 PowerShell 配置文件


Docker 必备的 PowerShell 别名设置教程,轻松应对日常办公_第2张图片


别名就是您可以为常用的命令指定一个简短的名称。您可以使用 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 的配置文件中,以便每次启动会话时都能使用它们。


Docker 必备的 PowerShell 别名设置教程,轻松应对日常办公_第3张图片


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


640?wx_fmt=png


Docker PowerShell 别名1:“drm”


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


function Remove-StoppedContainers { 

    docker container rm $(docker container ls -q)

}

Set-Alias drm  Remove-StoppedContainers 

640?wx_fmt=png


Docker PowerShell 别名2:“drmf”


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

function Remove-AllContainers { 

    docker container rm -f $(docker container ls -aq)

}

Set-Alias drmf  Remove-AllContainers 

注意:请谨慎使用该别名。


640?wx_fmt=png


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 


640?wx_fmt=png


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 文件的顶部即可。


640?wx_fmt=png


所有的别名


Docker 必备的 PowerShell 别名设置教程,轻松应对日常办公_第4张图片


我已经将我的 PowerShell 配置文件保存在 GitHub Gist 中,您可以点击文尾处“阅读原文”,将整个文档复制到 $ profile 文件中,然后在 PowerShell 中运行它。 $ profile 会用新别名更新当前会话。 GitHub Gist 还具有自定义提示功能,使 PowerShell 的提示更像 Linux 终端。

640?wx_fmt=png


点击下列标题,阅读更多干货


  • Docker 联手合作伙伴 MuleSoft,助力旧版应用程序容器化改造

  • Docker Engine 18.09 版本上线,全新特性抢先体验!

  • Docker Windows Server 应用迁移计划上线,让您轻松处理旧版应用程序!

  • Windows Server 2019 的6处变化,提升您的 Windows 容器体验(二)


如果本文对你有帮助,欢迎分享到朋友圈!获取更多Docker实用技巧,扫描下图二维码!

   Docker 必备的 PowerShell 别名设置教程,轻松应对日常办公_第5张图片

你可能感兴趣的:(Docker 必备的 PowerShell 别名设置教程,轻松应对日常办公)