0


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

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

在这里插入图片描述


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

gylzbk

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

在这里插入图片描述

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

概述

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

1. 使用

docker exec

进入运行中的容器

docker exec

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

进入容器

基本用法

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

示例

进入容器并打开Bash Shell:

dockerexec-it my_container /bin/bash

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

dockerexec-it my_container /bin/sh

执行单个命令

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

dockerexec-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+P

Ctrl+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 start

docker 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

sudoapt-getinstall-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 -t1234-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-p2222:22 my_sshd_container
  1. 通过SSH连接容器:
ssh root@localhost -p2222

安全退出

  • 退出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 exec

docker attach

docker run

docker start

nsenter

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

标签: docker 容器 运维

本文转载自: https://blog.csdn.net/g310773517/article/details/140320810
版权归原作者 I'mAlex 所有, 如有侵权,请联系我们删除。

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

还没有评论