【问题】
- 使用ServiceMonitor.exe作为前台进程运行起来的容器无法attach。
- 无法远程连接到运行中的容器中进行管理。
【解决方法】
在container中新建管理员用户,通过SSH实现远程连接。
- 新建本地用户
1 $Password = Read-Host -AsSecureString 2 New-LocalUser "root" -Password $Password -FullName "Root User" -Description "For remote management"
- 添加用户到Administrators组中
1 Add-LocalGroupMember -Group "Administrators" -Member "root"
- 设置用户密码永不过期(重要!)
Set-LocalUser -Name "root" -AccountNeverExpires
- 下载OpenSSH
https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH
- 解压,执行install-sshd.ps1
- 安装完毕后,即可启动sshd服务
1 Start-Service sshd
- 设置sshd为默认开启的服务
1 Set-Service sshd -StartupType Automatic
- 添加防火墙规则,允许默认的ssh端口(22)通过*
1 New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
不过在nano server中貌似把防火墙的功能精简了。使用New-NetFirewallRule命令报错,找不到这个命令。所有的端口只要暴露了皆可访问,上面一步就可以省去了。
- 最后,在启动container时暴露22端口。
1 docker run --name mysqltest --hostname mysqltest1 --expose=3306 --expose=22 --network=mysqltest-transparent-network --ip="192.168.1.50" -d zwang3/mysql:v3 c:ServiceMonitor.exe mysql
- 在远程通过ssh访问,需要指定 command为cmd或者powershell。
1 ssh -l root 192.168.1.50 powershell