【Docker】7种进入和退出Docker容器的方法详解,看看你平时都用哪一种?

Docker容器的引入,为现代软件开发和部署带来了极大的便利。容器化应用程序不仅提供了开发环境的一致性,还使得应用程序在不同环境中的迁移变得更加容易。然而,有时我们需要进入容器进行调试、检查或修改配置文件等操作。本文将详细介绍进入Docker容器的各种方法,并讲解如何安全退出容器,帮助你根据不同需求选择最合适的方式。

在这里插入图片描述


🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

概述

Docker容器的引入,为现代软件开发和部署带来了极大的便利。容器化应用程序不仅提供了开发环境的一致性,还使得应用程序在不同环境中的迁移变得更加容易。然而,有时我们需要进入容器进行调试、检查或修改配置文件等操作。本文将详细介绍进入Docker容器的各种方法,并讲解如何安全退出容器,帮助你根据不同需求选择最合适的方式。

1. 使用docker exec进入运行中的容器

docker exec命令是进入运行中的Docker容器最常用的方法之一,它允许你在指定的容器中运行新的命令。

进入容器

基本用法

docker exec -it <container_id_or_name> <command>
  • -i:保持标准输入流(stdin)打开。
  • -t:分配一个伪终端(tty)。

示例

进入容器并打开Bash Shell:

docker exec -it my_container /bin/bash

进入容器并打开sh(适用于Alpine等轻量级Linux容器):

docker exec -it my_container /bin/sh

执行单个命令

在容器中执行单个命令,例如查看目录内容:

docker exec -it my_container ls

安全退出

在交互终端中,可以使用以下命令退出容器:

  • 退出终端:直接输入exit或按下Ctrl+D
exit

2. 使用docker attach附加到一个正在运行的容器

docker attach命令允许你附加到一个已经在运行的容器的主进程(一般为启动时配置的CMD或ENTRYPOINT)。它共享容器的标准输入、标准输出和标准错误输出。

进入容器

基本用法

docker attach <container_id_or_name>

示例

附加到容器:

docker attach my_container

安全退出

docker attach适用于与容器的直接交互,但退出方式有所不同:

  • 保持容器运行:按下 Ctrl+P 然后 Ctrl+Q 组合键。
  • 退出并停止容器:直接输入exit
exit

注意:Ctrl+PCtrl+Q 组合键只是将当前终端从容器上分离,而不是杀死容器;而输入exit则会真正关闭容器的主进程。

3. 使用docker run启动并进入一个新的容器

有时候你需要启动一个新容器并立即进入它进行操作。docker run命令可以在启动新的Docker容器时提供交互式终端。

进入容器

基本用法

docker run -it <image_name> <command>

示例

使用Ubuntu镜像启动新容器并进入Bash Shell:

docker run -it ubuntu /bin/bash

启动并进入Alpine镜像:

docker run -it alpine /bin/sh

安全退出

docker exec类似,在交互终端中,可以使用以下命令退出容器并停止:

  • 退出终端:直接输入exit或按下Ctrl+D
exit

4. 使用docker startdocker attach重新进入一个停止的容器

如果容器已经停止,但你需要重新启动并进入它,可以先使用docker start启动容器,然后使用docker attach进行连接。

进入容器

启动容器

docker start <container_id_or_name>

附加到容器

docker attach <container_id_or_name>

安全退出

  • 保持容器运行:按下 Ctrl+P 然后 Ctrl+Q 组合键。
  • 退出并停止容器:直接输入exit
exit

5. 使用nsenter进入容器

nsenter允许你进入已经运行的容器的命名空间。尽管nsenter不是Docker自带的工具,但在某些情况下非常有用。

进入容器

安装nsenter

可通过以下命令安装nsenter

sudo apt-get install -y util-linux

使用nsenter

首先找到容器的PID:

docker inspect --format '{{ .State.Pid }}' <container_id_or_name>

然后使用nsenter进入容器:

sudo nsenter -t <pid> -m -u -i -n -p /bin/bash

示例

假设容器的PID为1234:

sudo nsenter -t 1234 -m -u -i -n -p /bin/bash

安全退出

  • 退出终端:直接输入exit或按下Ctrl+D
exit

6. 使用SSH(需要容器内运行SSH服务)

在某些情况下,特别是调试或特定的生产环境配置时,你可能希望通过SSH进入容器。这需要容器内运行一个SSH服务,并且容器暴露相应的端口。

配置SSH

  1. Dockerfile中添加SSH安装和服务启动:
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:password' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
  1. 构建镜像并运行容器:
docker build -t my_sshd_container .
docker run -d -p 2222:22 my_sshd_container
  1. 通过SSH连接容器:
ssh root@localhost -p 2222

安全退出

  • 退出SSH会话:直接输入exit或按下Ctrl+D
exit

7. 使用kubectl exec在Kubernetes集群中进入容器

如果你在Kubernetes集群中运行容器,可以使用kubectl exec进入Pod内的容器。

进入容器

基本用法

kubectl exec -it <pod_name> -- <command>

示例

进入Pod并打开Bash Shell:

kubectl exec -it my_pod -- /bin/bash

执行单个命令:

kubectl exec -it my_pod -- ls

安全退出

  • 退出终端:直接输入exit或按下Ctrl+D
exit

结论

通过本文的介绍,你已经了解到多种进入Docker容器的方法,包括 docker execdocker attachdocker rundocker startnsenter 等工具和命令。每种方法都有其适用的场景和特点,通过选择合适的方式,可以有效进行容器内的调试、检查和管理。在退出容器时,注意选择合适的方法来保证容器的正常运行或停止。如果你对容器化技术有更多兴趣,欢迎继续探索Docker和Kubernetes的更多功能!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I'mAlex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值