如何连接到 Docker 容器

2023-11-02

当您想查看容器内发生的情况时,连接到正在运行的 Docker 容器会很有帮助。如果 Docker 容器未按预期工作,您可以附加到容器或为容器获取 shell 并运行以下命令:ps or top。还可以进入容器,安装新的包,构建一个新的 Docker 镜像从中。

在本教程中,我们将解释如何附加到容器的主要运行进程以及如何为正在运行的容器获取 shell。

附加到容器#

尽管可以在容器中运行多个进程,但大多数 docker 容器只运行单个进程。启动容器时执行的命令使用ENTRYPOINT and/or RUN操作说明。

The docker附加命令允许您将终端附加到正在运行的容器。当您想要实时查看标准输出中写入的内容或以交互方式控制过程时,这非常有用。

为了更好地理解如何attach命令可以工作了run使用官方 Nginx 镜像的新分离 Nginx 容器。

docker container run --name my_nginx -d -p 8080:80 nginx

The -p 8080:80选项告诉 Docker 将容器中的端口 80 映射到主机上的端口 8080。

列出容器确保“my_nginx”容器正在运行:

docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
8e1c4974a8d8        nginx               "nginx -g 'daemon of…"   3 minutes ago       Up 2 seconds        0.0.0.0:8080->80/tcp   my_nginx

使用容器的 ID 或名称附加到容器:

docker container attach my_nginx

运行容器时执行的 nginx 镜像的默认命令设置为CMD ["nginx", "-g", "daemon off;"]。当你运行attach命令您的终端附加到nginx过程。

Open 127.0.0.1:8080在你的browser并且可以实时观察nginx进程的输出。

192.168.33.1 - - [04/Oct/2019:21:12:28 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-"
192.168.33.1 - - [04/Oct/2019:21:12:28 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.33.71:8080/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-"

要访问容器日志,您应该更喜欢使用docker logs命令。

要在不停止容器的情况下与容器分离,请使用CTRL-p CTRL-q组合键。紧迫CTRL-c停止容器。

如果您附加的正在运行的进程接受输入,您可以向其发送指令。

获取容器的外壳#

The docker 执行命令允许您在正在运行的容器内运行命令。

看看如何exec命令的工作原理以及如何使用它进入容器 shell,首先启动一个新容器。我们将使用官方 MySQL 镜像:

docker container run --name my_mysql -d mysql

这将创建一个名为“my_mysql”的容器。

要在容器内执行命令,请运行以下命令:

docker container exec -it my_mysql ls /var

The -i选项代表交互式,并且-t告诉 Docker 分配一个伪 TTY 设备。这ls命令将列出容器内的所有文件和目录/var目录:

backups  cache	lib  local  lock  log  mail  opt  run  spool  tmp

要获得容器的 shell,即进入容器内部,请通过执行 shell 二进制文件来启动新的 shell 会话。您可以使用sh, bash,或图像中包含的任何其他外壳。

下面的命令将在容器内创建一个新的 Bash 会话:

docker container exec -it my_mysql /bin/bash

您的命令提示符将会更改,表明您现在正在使用容器 shell。

从这里,您可以像在任何其他 Linux 服务器上一样运行命令。例如,要获取当前的列表环境变量 type env:

env

输出将如下所示:

HOSTNAME=e0214d97e0fe
MYSQL_ROOT_PASSWORD=my-secret-pw
PWD=/
HOME=/root
MYSQL_MAJOR=8.0
GOSU_VERSION=1.7
MYSQL_VERSION=8.0.17-1debian9
TERM=xterm
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env

结论#

The docker exec and docker attach命令允许您连接到正在运行的容器。要获得容器的交互式 shell,请使用exec命令启动新的 shell 会话。这attach命令将您的终端附加到正在运行的容器。

如果您有任何疑问,请在下面留言。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何连接到 Docker 容器 的相关文章

随机推荐

  • Docker exec:在 Docker 容器中运行命令

    Docker 是一个流行的容器化平台 允许您在容器中打包 部署和运行应用程序 这 docker exec command 允许您在正在运行的 Docker 容器中运行命令 这对于调试 测试和管理容器非常有用 在本文中 我们将介绍如何使用 d
  • Windows 中哪个进程正在侦听端口

    如果您是系统管理员 您就会知道密切关注 Windows 系统上运行的进程有多么重要 有时 您可能需要找出哪个进程正在侦听特定端口 在本文中 我们将向您展示如何使用 CMD 和 PowerShell 来执行此操作 通过学习如何识别正在侦听端口
  • 如何安装和构建您的第一个 React Native 应用程序(快速入门)

    React 是 Facebook 维护的跨平台 JavaScript 库 它用于创建用户界面 使用 React Native 您可以轻松构建移动应用程序 React Native 提供应用程序的热重载 这样您就可以更快地构建您的应用程序 您
  • 如何在 Ubuntu 桌面上安装 NetBeans IDE 8.2 (PHP)

    NetBeans is the most popular IDE for development on Linux systems NetBeans editor provides many pre configured code temp
  • ChatGPT:AI语言模型的演变及其对社会的影响

    人工智能 AI 近年来已经取得了长足的进步 像这样的语言模型OpenAI 的 ChatGPT在自然语言处理和理解方面取得了长足的进步 本文将探讨 AI 语言模型的演变 重点关注 ChatGPT 其前身以及日益复杂的语言模型的社会影响 人工智
  • 如何在 Vim 中保存并退出

    VIM 是 Vi 改进版的缩写形式 它是一个免费的开源文本编辑器 可以安装在任何操作系统上 无论是 Windows 还是 Linux 操作系统 它可以在 CMD 命令行 模式以及 GUI 图形用户界面 模式下使用 它使用起来非常灵活和可靠
  • 如何在 Windows 上安装 Maven

    Apache Maven 是适用于任何软件项目的优秀构建工具 它可以帮助您管理项目代码及其构建过程 以便您的软件项目保持井井有条并保持其重点 Windows 并不是最受开发人员欢迎的操作系统 但企业和最终用户仍然广泛使用它 幸运的是 有多种
  • 如何在 Ubuntu 18.04 和 16.04 上使用 Nginx 安装多个 PHP 版本

    通常 网络托管管理器为每个 PHP 版本应用程序部署使用单独的服务器 这增加了托管成本 或者 您可以运行多个Docker多个 PHP 版本的容器 本教程帮助您在具有不同 PHP 版本的 Nginx Web 服务器上安装和配置两个 Virtu
  • 如何在 Python 中获取和更改当前工作目录

    在 Python 中处理目录中的文件时 使用绝对路径始终是一个好主意 但是 如果您使用相对路径 则需要了解当前工作目录的概念以及如何查找或更改当前工作目录 绝对路径指定从根目录开始的文件或目录位置 而相对路径从当前工作目录开始 当您运行 P
  • Grep 中的正则表达式 (Regex)

    grep是 Linux 中用于文本处理的最有用和最强大的命令之一 grep在一个或多个输入文件中搜索与正则表达式匹配的行 并将每个匹配行写入标准输出 在本文中 我们将探讨如何在 GNU 版本中使用正则表达式的基础知识grep 在大多数 Li
  • 如何在 Ubuntu 18.04 上安装和使用 Curl

    您正在学习使用以下命令下载文件的教程curl公用事业 您运行该命令并收到以下错误消息curl command not found 没有什么可担心的 这只是意味着curl您的 Ubuntu 计算机上未安装软件包 Curl 是一个命令行工具 允
  • 如何在 CentOS 上创建 sudo 用户

    The sudo命令旨在允许用户以另一个用户 默认为 root 用户 的安全权限运行程序 在本指南中 我们将向您展示如何在 CentOS 上创建具有 sudo 权限的新用户 您可以使用 sudo 用户在 CentOS 计算机上执行管理任务
  • 如何在 Linux 中挂载 NFS 共享

    网络文件系统 NFS 是一种分布式文件系统协议 允许您通过网络共享远程目录 使用 NFS 您可以在系统上安装远程目录并像使用本地文件一样使用远程文件 在 Linux 和 UNIX 操作系统上 您可以使用mount命令将共享 NFS 目录挂载
  • 如何使用 Rsync 排除文件和目录

    Rsync 是一种快速且多功能的命令行实用程序 可通过远程 shell 在两个位置之间同步文件和文件夹 使用 Rsync 您可以镜像数据 创建增量备份以及在系统之间复制文件 复制数据时 您可能需要根据名称或位置排除一个或多个文件或目录 在本
  • 如何在 CentOS 8 上安装 Slack

    Slack是世界上最受欢迎的协作平台之一 它将您的所有通信汇集在一起 Slack 中的对话按频道组织 您可以为您的团队 项目 主题或任何其他目的创建频道 您可以搜索频道或消息中发布的所有内容 Slack 还允许您通过音频或视频通话与队友交谈
  • 如何在 Debian 10 上安装 R

    R 是一种开源编程语言和免费环境 专门从事统计计算和图形表示 它由 R 统计计算基金会支持 主要供统计学家和数据挖掘人员用于开发统计软件和执行数据分析 本文提供有关如何在 Debian 10 上安装 R 的信息 先决条件 在继续本教程之前
  • 如何在 Ubuntu 20.04 上安装 MariaDB

    MariaDB 是一个开源关系数据库管理系统 它最初被设计为向后兼容的 二进制的 MySQL 直接替代品 MariaDB由MySQL的原始开发人员和开源社区开发和维护 本指南介绍了如何在 Ubuntu 20 04 上安装 MariaDB 先
  • 如何在 CentOS 8 上配置和管理防火墙

    防火墙是一种监视和过滤传入和传出网络流量的方法 它的工作原理是定义一组安全规则来确定是允许还是阻止特定流量 正确配置的防火墙是整个系统安全最重要的方面之一 CentOS 8 附带一个名为防火墙 它是一个带有 D Bus 接口的完整解决方案
  • 如何在 Debian 10 Linux 上安装 Jenkins

    Jenkins是一个开源自动化服务器 提供了一种设置持续集成和持续交付 CI CD 管道的简单方法 持续集成 CI 是一种 DevOps 实践 团队成员定期将代码更改提交到版本控制存储库 然后运行自动化构建和测试 持续交付 CD 是自动构建
  • 如何连接到 Docker 容器

    当您想查看容器内发生的情况时 连接到正在运行的 Docker 容器会很有帮助 如果 Docker 容器未按预期工作 您可以附加到容器或为容器获取 shell 并运行以下命令 ps or top 还可以进入容器 安装新的包 构建一个新的 Do