服务器重启后如何重新连接docker

本文介绍了Azure云服务出现异常重启的情况及应对措施。通过使用docker检查并重启受影响的容器,确保服务恢复正常运行。文中还提供了设置容器永久自启动的方法。

azure云服务今天莫名断了(自动重启了),吓出一身冷汗,还好docker有存储。

查看一下因重启而关闭的容器
docker ps -a

这里写图片描述

可以看到13min之前有两个容器被关闭了

重启容器
docker restart 1236a
如果重启失败了看看显卡驱动是否正常,如不正常
sudo nvidia-persistenced --persistence-mode

检查下容器是否重启
docker ps

看看pycharm能否更新代码,一般重启了就可以更新了

设置一下永久性重启自启动
sudo docker update --restart=always 1236a

这个重启自启动操作可以在docker run中一步到位
docker run 
--restart=always
<think>好的,用户想通过PowerShell连接到远程服务器,然后查找指定的Docker镜像并重启容器。我需要一步步分解这个问题,确保每个环节都正确。 首先,连接到远程服务器。PowerShell通常使用Enter-PSSession命令或者Invoke-Command来远程执行指令。这里可能需要配置远程连接的权限,比如启用WinRM服务,设置TrustedHosts等。用户可能没有开启这些设置,可能需要指导他们如何配置。 然后是查找Docker镜像。在远程服务器上执行docker images命令,可能需要通过PowerShell传递命令。例如使用Invoke-Command -ScriptBlock { docker images }。用户可能需要过滤特定镜像,比如用grep或者Select-String来查找关键字。 接下来是重启容器。找到镜像后,需要找到对应的容器,停止并启动。可能需要先用docker ps -a来查找运行中的容器,然后执行docker stop和docker start。如果用户想直接根据镜像名重启,可能需要先获取容器ID。 需要注意的是,PowerShell远程执行命令时可能需要管理员权限,特别是操作Docker服务的时候。用户可能需要以管理员身份运行PowerShell或者配置相应的权限。 另外,用户提供的引用中有关于Docker安装和使用的信息,但问题主要集中在PowerShell远程操作。需要确保Docker服务在远程服务器上已经正确安装并运行,否则命令会失败。 最后,安全性问题,比如远程连接的安全组设置,防火墙端口是否开放,尤其是WinRM的端口5985/5986是否允许。用户可能遇到连接拒绝的问题,需要检查这些配置。 可能还需要考虑错误处理,比如镜像不存在的情况,或者多个容器使用同一个镜像时的处理方式。建议用户先测试查找和重启命令在本地是否有效,再尝试远程执行。 总结步骤应该是:配置远程连接权限→远程执行查找镜像→获取容器ID→停止并启动容器。同时需要处理权限、网络和命令正确性的问题。</think>### 通过PowerShell远程操作Docker镜像与容器的步骤 #### 1. **配置远程服务器连接权限** - 确保远程服务器已启用WinRM服务(Windows远程管理): ```powershell # 在远程服务器上以管理员身份运行 Enable-PSRemoting -Force ``` - 若跨域连接,需配置TrustedHosts(在本地计算机运行): ```powershell Set-Item WSMan:\localhost\Client\TrustedHosts -Value "远程服务器IP" -Force ``` - 重启WinRM服务: ```powershell Restart-Service WinRM ``` #### 2. **远程连接服务器** - 使用`Enter-PSSession`或`Invoke-Command`: ```powershell # 交互式连接 Enter-PSSession -ComputerName 远程服务器IP -Credential 用户名 # 或直接执行命令(非交互) $cred = Get-Credential Invoke-Command -ComputerName 远程服务器IP -Credential $cred -ScriptBlock { # 此处编写远程执行的命令 } ``` #### 3. **查找Docker镜像** - 通过PowerShell远程执行`docker images`并过滤结果: ```powershell Invoke-Command -ComputerName 远程服务器IP -Credential $cred -ScriptBlock { docker images | Select-String "镜像名称关键字" } ``` #### 4. **重启指定镜像的容器** - 假设镜像名为`my-app:latest`,操作流程: ```powershell Invoke-Command -ComputerName 远程服务器IP -Credential $cred -ScriptBlock { # 查找运行中的容器ID $containerId = docker ps --filter "ancestor=my-app:latest" -q if ($containerId) { docker stop $containerId docker start $containerId Write-Host "容器已重启: $containerId" } else { Write-Host "未找到运行中的容器" } } ``` #### 5. **完整示例脚本** ```powershell $serverIp = "192.168.1.100" $cred = Get-Credential $imageName = "my-app:latest" Invoke-Command -ComputerName $serverIp -Credential $cred -ScriptBlock { param($imageName) Write-Host "正在查找镜像: $imageName" $imageExists = docker images -q $imageName if ($imageExists) { $containerId = docker ps --filter "ancestor=$imageName" -q if ($containerId) { docker stop $containerId docker start $containerId Write-Host "容器 $containerId 已重启" } else { Write-Host "镜像存在,但无运行中的容器" } } else { Write-Host "镜像不存在" } } -ArgumentList $imageName ``` --- ### 关键注意事项 1. **权限问题**: - 远程服务器需开放WinRM端口(默认5985/HTTP或5986/HTTPS)[^1] - Docker命令可能需要管理员权限,建议以管理员身份运行PowerShell 2. **容器状态处理**: - 若容器未运行,可通过`docker run -d 镜像名`启动新容器 - 使用`docker ps -a`查看所有容器(包括已停止的) 3. **安全性建议**: - 使用HTTPS加密WinRM通信(需配置证书) - 避免在脚本中硬编码密码,推荐使用SSH密钥或Windows凭证管理器[^2] ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值