如何通过SSH连接到正在运行的Docker容器并运行命令?

2021年11月21日03:54:56 发表评论 1,514 次浏览

SSH Docker容器运行命令教程介绍

Docker是一个实用程序,可让你创建用于运行应用程序的 容器。Docker 容器是一个完全包含的虚拟机。

SSH如何在Docker容器运行命令?本指南将向你展示通过 SSH 进入 Docker 容器并运行命令的三种方法。

如何通过SSH连接到正在运行的Docker容器并运行命令?

先决条件

  • 一个运行 Docker的 Linux 系统
  • 预配置的容器加载并运行
  • 访问终端窗口/命令提示符(Ctrl + Alt + TCtrl + Alt + F2
  • 具有sudo 权限的用户帐户 

方法一:在Docker容器中使用docker exec运行命令

SSH如何连接到Docker容器并运行命令?该docker exec命令在已经运行的容器中运行指定的命令。你可以通过创建bash shell(可以在其中键入命令的 shell)使用它通过 SSH 连接到 Docker 容器。

用于docker exec在容器中运行命令的基本语法是:

docker exec [options] [container] [command]

SSH如何在Docker容器运行命令?如果你还没有,请先拉取一个Docker 镜像。例如,你可以加载Nginx

sudo docker pull nginx
如何通过SSH连接到正在运行的Docker容器并运行命令?

然后,运行镜像:

sudo docker run ––name nginx–test –d nginx
如何通过SSH连接到正在运行的Docker容器并运行命令?

列出所有正在运行的容器以进行验证:

sudo docker ps

你现在应该看到你的 nginx-test 镜像已加载。

如何通过SSH连接到正在运行的Docker容器并运行命令?

要访问并运行该 Docker 容器中的命令,请键入以下内容:

sudo docker exec –it nginx-test /bin/bash

现在,你已登录到nginx-test容器。因此,你输入的任何命令都将在该容器中执行。该–i选项指定交互,并–t启用终端输入界面。

如何通过SSH连接到正在运行的Docker容器并运行命令?

方法二:使用docker attach命令连接正在运行的容器

docker attach命令将本地输入、输出和错误流链接到容器。默认情况下,它在bash shell 中启动。要连接到正在运行的容器,请输入以下内容:

sudo docker attach container_Name

SSH如何在Docker容器运行命令?在下面的示例中,系统将连接到nginx-test 容器:

sudo docker attach nginx-test
如何通过SSH连接到正在运行的Docker容器并运行命令?

执行命令后,你将在容器中工作。你运行的任何命令都会影响虚拟 Docker 环境。

方法三:使用SSH连接Docker容器

SSH如何连接到Docker容器并运行命令?你可以使用 SSH(安全外壳)连接到 Docker 容器。通常,SSH用于通过网络远程连接到服务器。当连接到系统上的虚拟 Docker 容器时,该技术的工作原理相同。

重要提示:我们不推荐这种方法,因为它会使镜像膨胀超出正常范围。你需要有一个已经配置 SSL 的镜像才能工作。

步骤 1:在系统上启用 SSH

SSH Docker容器运行命令教程 - 首先安装并启用 SSH 服务:

在 Ubuntu 18.04 上启用 SSH:

sudo apt-get install ssh

sudo systemctl ssh start

sudo systemctl ssh enable

service ssh status

在 CentOS 7 上启用 SSH:

yum –y install openssh-server openssh-clients

service sshd start

service sshd enable

service sshd status

第二步:获取容器的IP地址

SSH如何在Docker容器运行命令?使用docker inspect命令获取容器的IP地址并过滤结果。

对于现代 Docker 引擎,请使用以下命令:

sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" container_name

对于较旧的 Docker 引擎,请运行:

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
如何通过SSH连接到正在运行的Docker容器并运行命令?

系统将显示如上图所示的 IP 地址。

注意: 目标 docker 容器必须正在运行才能获取其 IP 地址。如果你需要启动现有的 docker 容器,请运行sudo docker start container_name.

第 3 步:SSH 进入 Docker 容器

Ping IP 地址以确保它可用:

ping –c 3 172.17.0.2
如何通过SSH连接到正在运行的Docker容器并运行命令?

使用 SSH 工具连接到镜像:

ssh root@172.17.0.2

系统应提示输入该容器的 root 用户密码。如果它显示Connection denied,则可能没有为 SSH 配置容器。如果提示发生变化,你现在已通过 SSH 连接,并且可以在容器中运行命令。

SSH Docker容器运行命令教程结论

SSH如何连接到Docker容器并运行命令?Docker 容器是轻量级和过渡性的,因此不推荐使用传统的 SSH 连接。在 Docker 容器中运行命令的推荐方法是docker execdocker attach

如果你要配置多个远程虚拟机,则可以使用该docker-machine ssh命令通过 Docker 连接到虚拟机。对于大多数用户,推荐使用前两种命令方法。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: