巧用linux版powershell,管理linux下的docker
大家好,我把用powershell的docker马甲命令的好处,放在了页面下方,从第五章开始。
powershell 传教士 原创文章 始于 2017-09-07 允许转载,但必须保留名字和出处,否则追究法律责任
powershell,docker,cli,命令,docker ps,docker image
====================【第一章 在linux中搭建docker环境】====================
目的:
在任意版本的linux(物理机,虚拟机,节点机)中,安装docker服务。
动作:
教程=略,不是本文主要目的。请参考官网。
ubuntu
https://docs.docker.com/install/linux/docker-ce/ubuntu/
centos
https://docs.docker.com/install/linux/docker-ce/centos/
====================【第二章 安装linux版powershell】====================
目的:
在linux发行版上,安装powershell。
动作:
教程=略,不是本文主要目的。请参考官网。
https://github.com/PowerShell/PowerShell/blob/master/docs/installation/linux.md
系统需求:
问:目前哪些版本linux能安装上powershell?
答:
◦Windows 10 IoT Core(arm32的cpu,本质上是win,树莓派硬件上的win10)
◦Raspbian Stretch(arm32的cpu,树莓派官方操作系统Raspbian,基于大便,所以叫树莓便。)
◦MAC OS X 10.11
◦Ubuntu 14.04/16.04/17.10
◦Debian8.x/9.x
◦CentOS 7.x/RHEL 7.x/Fedora25/Fedora26/Fedora27
◦open SUSE 42及以上/SUSE Linux Enterprise Server 12 SP2
◦Docker。LINUX发行版中,安装容器dockerd,docker中运行powershell。
◦Arch Linux (archl inux 没有版本号)
◦Linux AppImage 容器(portable application single binary) https://github.com/probonopd/AppImageKit
◦Kali Linux
====================【第三章 升级psreadline(此步骤非必要)】====================
目的:
升级powershell的psreadline模块。
动作:
1 请把终端软件的键盘,的BACKSPACE,设置成 ascii127(ctrl + ?)
2 pwsh
3 Install-Module -Name PSReadLine -AllowPrerelease -Force -SkipPublisherCheck
====================【第四章 安装powershell的,docker命令模块】====================
目的:
给linux版powershell,安装docker模块。完成后,就有了马甲docker命令。
官网在:
https://github.com/Microsoft/Docker-PowerShell/
动作:
pwsh
Register-PSRepository -Name DockerPS-Dev -SourceLocation https://ci.appveyor.com/nuget/docker-powershell-dev
Install-Module Docker -Repository DockerPS-Dev
查看有哪些马甲docker命令:
get-command -module docker
CommandType Name Version Source
-------------------------------------------------------------------------------------
Alias Attach-Container 0.1.0.111 Docker
Alias Build-ContainerImage 0.1.0.111 Docker
Alias Commit-Container 0.1.0.111 Docker
Alias Exec-Container 0.1.0.111 Docker
Alias Load-ContainerImage 0.1.0.111 Docker
Alias Pull-ContainerImage 0.1.0.111 Docker
Alias Push-ContainerImage 0.1.0.111 Docker
Alias Run-ContainerImage 0.1.0.111 Docker
Alias Save-ContainerImage 0.1.0.111 Docker
Alias Tag-ContainerImage 0.1.0.111 Docker
Cmdlet Add-ContainerImageTag 0.1.0.111 Docker
Cmdlet ConvertTo-ContainerImage 0.1.0.111 Docker
Cmdlet Copy-ContainerFile 0.1.0.111 Docker
Cmdlet Enter-ContainerSession 0.1.0.111 Docker
Cmdlet Export-ContainerImage 0.1.0.111 Docker
Cmdlet Get-Container 0.1.0.111 Docker
Cmdlet Get-ContainerDetail 0.1.0.111 Docker
Cmdlet Get-ContainerImage 0.1.0.111 Docker
Cmdlet Get-ContainerNet 0.1.0.111 Docker
Cmdlet Get-ContainerNetDetail 0.1.0.111 Docker
Cmdlet Import-ContainerImage 0.1.0.111 Docker
Cmdlet Invoke-ContainerImage 0.1.0.111 Docker
Cmdlet New-Container 0.1.0.111 Docker
Cmdlet New-ContainerImage 0.1.0.111 Docker
Cmdlet New-ContainerNet 0.1.0.111 Docker
Cmdlet Remove-Container 0.1.0.111 Docker
Cmdlet Remove-ContainerImage 0.1.0.111 Docker
Cmdlet Remove-ContainerNet 0.1.0.111 Docker
Cmdlet Request-ContainerImage 0.1.0.111 Docker
Cmdlet Start-Container 0.1.0.111 Docker
Cmdlet Start-ContainerProcess 0.1.0.111 Docker
Cmdlet Stop-Container 0.1.0.111 Docker
Cmdlet Submit-ContainerImage 0.1.0.111 Docker
Cmdlet Wait-Container 0.1.0.111 Docker
其中:
Request-ContainerImage===Request-ContainerImage
Start-ContainerProcess===Exec-Container
Invoke-ContainerImage===Run-ContainerImage
Enter-ContainerSession===Attach-Container
Export-ContainerImage===Save-ContainerImage
简单使用:
Import-Module Docker
Get-Container #这个命令就是 docker ps的马甲
====================【第五章 正式讲解powershell,在管理docker方面的好处】====================
目的1:
使用镜像名,或镜像名内包含的【字符串】来匹配容器,
动作1:
Get-Container | Where-Object {$_.Image -eq 'nginx'} |Stop-Container #Get-Container相当于docker ps
讲解:
Get-Container,相当于docker ps。但是Get-Container返回的是对象。
【|】是管道。powershell的管道,是世界上唯一可以传输对象的。
Where-Object {} 是过滤语法。
$_.Image 是镜像名属性,其他属性是
$_.ID 字符串
$_.Command 字符串
$_.Created 日期型
$_.Status 字符串
$_.Names 字符串
-eq是表达式。可以有如下表达式:
$_.Image -eq '字符串' #不区分大小写相等。 'abc' -eq 'Abc'
$_.Image -match '字符串' #正则匹配。 'abc' -match '^a.c$'
$_.Image -like '*字符串*' # 'abc' -like '*bc*'
$_.数值型 -gt 123 # 456 -gt 123
$a = [datetime]'2018-03-17'
$_.日期型 -gt $a #
|Stop-Container,过滤完成后,输出一个或n个对象,然后用Stop-Container停止它。
------------------------------------------------------------
目的2:
powershell命令行中,tab自动补全,(容器命令相关的)参数名,参数值
动作2-1:
Get-Container -c,然后打tab,
结果2-1:
命令行出现:
Get-Container -ContainerIdOrName
-----------------
动作2-2:
Get-Container -ContainerIdOrName,然后打空格,然后依次打n次tab。
结果2-2:
命令行出现:
Get-Container -ContainerIdOrName 【docker ps 中列出的容器名】
依次打n次shift + tab则从后向前,列出容器名
-----------------
动作2-3:
Get-ContainerImage -,然后打tab。Get-ContainerImage相当于docker image ls
结果2-3:
命令行出现:
Get-ContainerImage -ImageIdOrName
再打空格,再打tab 出现【docker image ls 中列出的容器名】
------------------------------------------------------------
场景:
同一个镜像,我运行了很多个,
ID Image Command Created Status Names
-- ----- ------- ------- ------ -----
034c78b5e4e18b772... hello-world /hello 18-3-19 下午5:20:03 Exited (0) 12 min... ecstatic_khorana
8ced2c429e5ba0790... hello-world /hello 18-3-17 下午9:05:00 Exited (0) 44 hou... objective_villani
18cc9a6e1ea14ae8d... hello-world /hello 18-3-9 下午5:03:08 Exited (0) 10 day... priceless_ardingh...
目的3-1:
编写脚本,匹配镜像名,状态码
powershell脚本代码3-1:
$状态码字串1 = Get-Container | Where-Object {$_.Image -eq 'hello-world'} | Select-Object Status
#$状态码
#Exited (143) 24 hours ago
if ($状态码字串1 -like '*Exited (0)*')
{echo '正常'}
else
{这里做点什么}
-----------------
目的3-2:
1匹配镜像名。
2排序,并输出
3取状态码
powershell脚本代码3-2:
$状态码字串2 = Get-Container | Where-Object {$_.Image -eq 'hello-world'} |Sort-Object -Property Created |Select-Object Status -Last 1
$状态码 = $状态码字串2.status.split('(')[1].split(')')[0]
------------------------------------------------------------
docker ps命令有输出对不齐的烦恼,实际上所有linux命令都有输出对不齐的情况,而powershell永远没有这种情况。
目的4:
只输出docker ps的,names command
动作4:
Get-Container |Select-Object names,command
#或Get-Container |Select-Object names,image
输出:
Names Command
----- -------
{/priceless_ardinghelli} /hello
{/zabbix} /config/bootstrap.sh
{/zabbix-db, /zabbix/zabbix.db} /run.sh
{/zabbix-db-storage} sh
{/pedantic_bose} /hello
====================【第六章 结论】====================
powershell的马甲版docker命令,比docker原生命令,有如下优点:
1 输出的显示数据,永远没有对不齐的问题。
2 powershell马甲版docker命令,是面向对象的。通过属性匹配docker的名字和参数,表达式支持正则,更强大。比用grep简单,严谨。
3 powershell的管道,支持对象。用起来强大简单。
4 powershell马甲版docker命令的,参数名,参数值,支持tab自动补全,用起来十分方便。
5 ps的马甲命令Get-Container,相当于docker ps。
它的输出,分行,分列。如下:用起来比docker ps输出的字符串要好。
ID Image Command Created Status Names
-- ----- ------- ------ ------ -----
需要说明的是,这些优点,本质上和docker命令无关。这是powershell命令行,比linux命令行的优点。
从前,有一头“青翼蝠王”韦瞎笑,在z呼发贴说:“管道中传对象,是没必要的”。是这样么?
我的这篇帖子,很好地说明了这一点。
-----------------------------谢谢看贴,完。-------------------------------
巧用linux版powershell,管理linux下的docker的更多相关文章
- linux版powershell安装教程(.net core版)
powershell 传教士 原创文章 始于2016-12-20,2017-03-15改.文章版本目前博客园为最新版. 允许转载,但必须保留名字和出处,否则追究法律责任 问:powershell二进制 ...
- Linux程序包管理rpm与yum
Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...
- Linux版 乐影音下载器(视频下载器) 使用方法
如果你不知道Linux为何物,那么请回去选择前两种下载方式之一. 只提供Linux 64位的乐影音下载器(点击下载),在Linux Mint 19.1 64位.Python 3.6环境下测试能正常运 ...
- Linux堆内存管理深入分析(下)
Linux堆内存管理深入分析 (下半部) 作者@走位,阿里聚安全 0 前言回顾 在上一篇文章中(链接见文章底部),详细介绍了堆内存管理中涉及到的基本概念以及相互关系,同时也着重介绍了堆中chunk分 ...
- 在docker容器中安装和使用,linux版的powershell
powershell 传教士 原创文章.始于 2016-09-18 ,2016-10-27修改powershell docker官网.允许转载,但必须保留名字和出处,否则追究法律责任 1 在任意版本的 ...
- windows下运行的linux服务器批量管理工具(带UI界面)
产生背景: 由于做服务器运维方面的工作,需要一人对近千台LINUX服务器进行统一集中的管理,如同时批量对LINUX服务器执行相关的指令.同时批量对LINUX服务器upload程序包.同时批量对LINU ...
- linux下内网端口转发工具:linux版lcx [实现远程内网维护]
这个工具以前使用的初衷是内网渗透,需要将内网ssh端口转发到外网服务器上.但这个工具同样适用于运维工程师进行远程内网维护. 当然这一切的前提是内网可以访问外网,检测方法当然就是直接ping 一个外网I ...
- CENTOS6 下MATLAB2014b的安装和破解(Matlab_R2014b linux版 安装笔记)
参考:http://www.jianshu.com/p/f0cefc737dda ①在下载matlab linux版.iso, ②在windows下用ULTRAISO软件提取 ③用crack中的ins ...
- Linux的虚拟内存管理-如何分配和释放内存,以提高服务器在高并发情况下的性能,从而降低了系统的负载
Linux的虚拟内存管理有几个关键概念: Linux 虚拟地址空间如何分布?malloc和free是如何分配和释放内存?如何查看堆内内存的碎片情况?既然堆内内存brk和sbrk不能直接释放,为什么不全 ...
随机推荐
- java代码调用使用cxf搭建的webService服务传递对象
前边成功创建好一个cxf的webServcie服务,并带了一个无参数的方法.现在进一步尝试了使用带参数的方法,分别测了用String为参数和用自定义的对象为参数. 其中,使用String为参数时和不带 ...
- Ubutu Chrome 出现adobe flash is out of date的解决方法
我们需要到官网下载flash player,网址:https://get.adobe.com/flashplayer/ 不过这里要说明一下: 一般的浏览器使用的是npapi,即adobe flash ...
- 动手制作属于你自己的WIN PE3.0
最近想要更新公司的网Ghost系统,所以小研究一下win pe ,在网上看见一个很不错的教程,在这里分享给大家! 并非原创,纯属转载!!O(∩_∩)O~天缘的作品,很是佩服这个哥们啊..... 一.W ...
- 错误代码: 1582 Incorrect parameter count in the call to native function 'str_to_date'
1. 错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:SELECT t.`name`, DATE_FORMAT(str_to_d ...
- freemarker报错之二
1.错误描述 五月 27, 2014 12:07:05 上午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...
- 微信小程序之上传下载交互api
wx.request(OBJECT) OBJECT参数说明: 参数名 类型 必填 说明 url String 是 开发者服务器接口地址 data Object.String 否 请求的参数 heade ...
- 关于省市联动的bug
一,问题描述 1.1,原来的思路 1.1.1,初始化加载省份 $.ajax({ 'type' : 'POST', 'dataType' : 'json', 'url' : '${rc.contextP ...
- android小程序之幸运菜谱
android小程序之幸运菜谱 前言:刚刚结束短短5天的android公开课程,收获不少,写下来记录一下吧!(因为学校校企公开课的缘故才偶然接触的android,所以只学了这几天,不喜勿喷) 一开始得 ...
- [CF932E]Team Work & [BZOJ5093]图的价值
CF题面 题意:求\(\sum_{i=0}^{n}\binom{n}{i}i^k\) \(n\le10^9,k\le5000\) 模\(10^9+7\) BZOJ题面 题意:求\(n*2^{\frac ...
- NOIWC2018滚粗记
Day0 \(THUWC\)刚刚结束..顺利的滚粗了 Day1 整理一下自己咸鱼的心 下午到学校坐车出发 这次队伍浩大THUWC只有4个 又到了雅礼洋湖这个地方 路上突然多了许多有关\(NOI\)的标 ...