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

简介: 作为一名使用 Docker 办公的程序员来说,我每天需要使用到大量的 docker 命令。通过在 PowerShell 中将这些命令处理成别名的形式,我节省了大量打字的时间以及处理拼写错误和修复拼写错误的时间。

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 终端。

相关文章
|
2月前
|
Oracle 关系型数据库 数据库
|
2月前
|
关系型数据库 MySQL Java
Docker Compose详细教程(从入门到放弃)
Docker Compose详细教程(从入门到放弃)
395 0
|
28天前
|
Docker 容器
尚硅谷2024新版3小时速通Docker教程
尚硅谷2024新版3小时速通Docker教程
17 1
尚硅谷2024新版3小时速通Docker教程
|
9天前
|
网络协议 安全 Docker
windows环境下的设置docker远程访问(开放2375端口)
windows环境下的设置docker远程访问(开放2375端口)
14 0
|
2月前
|
存储 JSON 安全
Docker 的 overlay2 扩容教程
Docker 的 overlay2 扩容教程
124 3
|
1月前
|
存储 Docker 容器
记录Docker搭建私有仓库的步骤教程
记录Docker搭建私有仓库的步骤教程
67 0
|
2月前
|
关系型数据库 MySQL 数据库
docker 安装mysql(踩坑踩得想哭 详细解决教程)ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using pa
docker 安装mysql(踩坑踩得想哭 详细解决教程)ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using pa
138 1
|
2月前
|
jenkins Java 持续交付
Docker搭建持续集成平台Jenkins最简教程
Jenkins 是一个广泛使用的开源持续集成工具,它能够自动化构建、测试和部署软件项目。在本文中,我们将使用 Docker 搭建一个基于 Jenkins 的持续集成平台。
209 2
|
2月前
|
Ubuntu Docker 索引
ubuntu 20.04 安装docker教程和安装中遇到的问题解决方案(超详细 附加图文教程)
ubuntu 20.04 安装docker教程和安装中遇到的问题解决方案(超详细 附加图文教程)
355 0
|
2月前
|
负载均衡 应用服务中间件 nginx