docker进入容器运行命令详细讲解

在这里插## 标题入图片描述

大家好,我是程序员小羊!

前言:

在 Docker 中,进入容器并运行命令是常见的操作,尤其是当你想要调试、检查日志或手动运行某些程序时。Docker 提供了几种方式来进入容器和执行命令。

前提条件

确保你的 Docker 容器是正在运行的。你可以通过以下命令查看所有正在运行的容器:

docker ps

1. 使用 docker exec 进入容器并运行命令

docker exec 是最常用的进入容器并执行命令的方式。

步骤:
  • 找到正在运行的容器的 CONTAINER IDNAME
  • 使用 docker exec 命令进入容器并执行命令。
示例:

假设容器的 CONTAINER ID123abc456defNAMEmy_container

进入容器的交互式 Bash shell:
docker exec -it 123abc456def /bin/bash

或者:

docker exec -it my_container /bin/bash
  • -i:保持标准输入打开。
  • -t:分配一个伪终端。
  • /bin/bash:表示启动一个 bash shell(如果容器中没有 bash,可以尝试 /bin/sh)。
进入容器的交互式 Shell 之后:

一旦进入容器的 shell,你就可以像在普通 Linux 服务器中一样运行命令。例如:

ls
cd /path/to/directory
cat /etc/hostname
在容器内直接执行命令:

如果你不想进入容器的 shell,而是只想执行某个命令并返回结果,你可以直接执行以下命令:

docker exec -it 123abc456def ls /var/log

这将在容器中运行 ls /var/log 命令并显示结果。

2. 使用 docker attach 连接到容器

docker attach 用于连接到一个正在运行的容器的主进程(通常是容器启动时运行的进程)。但是,这种方式并不像 docker exec 那样启动一个新的 shell,而是附加到容器启动时的主进程,通常用来查看容器的输出日志。

示例:
docker attach 123abc456def

或:

docker attach my_container

注意:如果你使用 docker attach 并尝试退出,你可能会终止容器的主进程。因此,如果只是想查看输出而不关闭容器,请谨慎使用。

3. 使用 docker run 启动并进入容器

如果你希望启动一个新容器并在启动时进入 shell,可以使用 docker run 命令。

示例:
docker run -it ubuntu /bin/bash

这将启动一个 Ubuntu 容器并进入交互式 bash shell。

4. 使用 docker exec 连接到容器的 sh Shell

某些精简的 Docker 容器(例如 alpine)不包含 bash,而是使用更轻量的 sh shell。你可以使用以下命令连接到 sh

示例:
docker exec -it 123abc456def /bin/sh

5. 使用 docker exec 运行后台任务

有时你可能想在容器中运行某些命令,而不保持交互式 shell 打开。可以在容器中运行后台任务。

示例:
docker exec 123abc456def some_command &

这将在容器中后台执行 some_command

6. 退出容器

如果你正在交互式 shell(如 bashsh)中:

你可以使用 exit 命令退出:

exit
如果你使用的是 docker attach

你可以使用 Ctrl + P,然后按 Ctrl + Q 来分离(detach)而不停止容器。

7. 常见问题

Q1: docker exec 提示 “command not found”?

可能容器内没有安装你尝试使用的 shell 或命令。可以尝试 /bin/sh,或者确保容器内有你需要的命令。

Q2: 如何进入已经停止的容器?

你无法直接进入一个已经停止的容器,但可以重新启动它:

docker start 123abc456def
docker exec -it 123abc456def /bin/bash

总结

  • docker exec 是最常用的进入容器并执行命令的方法。
  • docker attach 适用于连接到容器的主进程,适合查看输出日志。
  • 使用 docker run 可以启动并直接进入容器。
  • 熟悉容器中常用的 shell (bash, sh) 会帮助你更好地与容器交互。

结尾

今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/141490.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Vulnhub:BlueSky

靶机下载地址 信息收集 主机发现 nmap扫描攻击机同网段存活主机。 nmap 192.168.31.0/24 -Pn -T4 靶机ip:192.168.31.171。 端口扫描 nmap 192.168.31.171 -A -p- -T4 开放端口22,8080。 目录扫描 访问8080端口,如图,是tomcat管理页面…

unity3d入门教程七

unity3d入门教程七 17.1物理系统17.2静态刚体17.3刚体的碰撞17.4刚体的反弹18.1运动学刚体18.2碰撞检测18.3碰撞事件回调18.4目标的识别18.5碰撞的规避 17.1物理系统 在物理系统中的物体具有质量和速度的是刚体 不用写代码就会自由落体运动了 17.2静态刚体 给 ‘地面’ 添…

学习笔记JVM篇(四)

垃圾回收器 说完垃圾回收算法接下来就需要对应的垃圾回收器去回垃圾回收器。接下来介绍几种垃圾回收器 1、Serial 串行回收器,是单线程版本,暂停所有的应用。在单CPU的情况下效率是很高的,因为不涉及线程的上下文切换。适用于小型程序和客…

【C语言】分支和循环(下)

分支和循环(下) 5、练习:判断年份是否为闰年6、短路7、switch语句7.1 if语句和switch语句的对比7.2switch语句中的break语句7.3switch语句中的default7.4 switch语句中的case和default的顺序问题 8、while循环8.1 if和while的对比8.2 while语…

C++_20_多态

多继承会造成 菱形继承** 使用虚继承来解决 不是给爷爷类加 也不是给子类加 是给父类加 虚基指针和虚基表 多态 概念: 概念: 一个事物的多种形态,简称多态 如: 对象的多态 ​ 张三 ​ 在对象面前 怂 ​ 在朋友面前 谄媚 ​ 在父…

搜索二叉树BSTree的原理及实现

目录 一、简介 二、功能的实现 节点的实现 这里为什么模板参数采用的是K而不是T呢? 树体的实现 非递归版本 Insert函数 Find函数 Erase函数 递归版本 中序遍历 FindR InsertR EraseR 构造函数 析构函数 拷贝构造 赋值重载 一、简介 BSTree&#x…

【CS110L】Rust语言 Lecture3-4 笔记

文章目录 第三讲 所有权:移动与借用&例1例2例3 错误处理(开头)为什么空指针如此危险,我们能做什么以应对?— 引出Optionis_none()函数unwrap_or()函数常见用法 第四讲 代码实践:链表Box节点和链表的定义节点和链表的构造函数判…

Hack the 21LTR: Scene 1 靶机

靶机配置 kali配置 虚拟网络适配器配置 不行的时候关闭虚拟机,多点几次生成 主机发现和端口扫描 主机发现 arp-scan -l 端口扫描 端口扫描发现21,22,80端口开放 nmap -sV -A -T4 192.168.2.120 访问80端口 http://192.168.2.120/ 查看页…

SOMEIP_ETS_108: SD_Deregister_from_Eventgroup

测试目的: 验证DUT在接收到StopSubscribeEventgroup消息并取消订阅后,不会响应TestEventUINT8触发的事件。 描述 本测试用例旨在确保DUT在取消对事件组的订阅后,不会对随后的事件触发做出响应。 测试拓扑: 具体步骤&#xff1…

.NET内网实战:通过命令行解密Web.config

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,对内网和后渗透感兴趣的朋友们可以订阅该电子报刊,解锁更多的报刊内容。 02基本介绍 本文内容部分节选自小报童…

Spring Boot集成Akka Cluster快速入门Demo

1.什么是Akka Cluster? Akka Cluster将多个JVM连接整合在一起,实现消息地址的透明化和统一化使用管理,集成一体化的消息驱动系统。最终目的是将一个大型程序分割成若干子程序,部署到很多JVM上去实现程序的分布式并行运算&#xf…

编译原理之预处理

目录 生成预处理文件的的命令 预处理做了什么 实验 --------------------------------------------------------------------------------------------------------------------------------- 本篇文章主要是带着大家一起看看预处理阶段编译器都做了些什么 --------------…

十四,在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明

十四,在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明 文章目录 十四,在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明1. 基本介绍2. 准备工作:3. 内置 Tomcat 的配置3.1 第…

Git项目管理工具

分布式版本控制系统

62. 不同路径、64. 最小路径和

思路 dp:代表到达当前位置的总方式 初始化:第一行的位置dp[0][j]:当前位置只能由左边的位置向右移动得到 所以只有1种方式 d[0][j]1, d[0][0]1 第一列的位置 dp[i][0]:当前位置只能由上一个位置向下移动得到 除此之外的位置可以由…

【Python】基本使用

目录 变量的类型 整数 int 浮点数 float 字符串 str 字符串长度 格式化字符串 布尔类型 动态类型 注释 获取输入 浮点数比较 多元赋值 for循环 函数的定义和调用 创建函数/定义函数 调用函数/使用函数 列表 创建列表 切片操作 遍历列表 新增元素 判断元…

2024最全网络安全工程师面试题(附答案),金九银十找工作必看!

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

[matlab]matlab调用python的各种方法

前言 在MATLAB中,可以使用 py 函数来调用Python模块和函数。在此基础上,我们可以很轻易的调用python中的各种模块,方便我们在神经网络上的应用仿真。 以下是使用MATLAB调用Python模块的基本步骤: 确保你的系统已经正确安装了Py…

文心一言 VS 讯飞星火 VS chatgpt (347)-- 算法导论23.2 6题

六、假定一个图中所有的边权重均匀分布在半开区间[0,1)内。Prim算法和Kruskal算法哪一个可以运行得更快?如果要写代码,请用go语言。 文心一言: 在比较Prim算法和Kruskal算法在特定条件下的性能时,我们需要考虑几个因素&#xff…

复杂情感识别系统

复杂情感识别系统(CERS)是一种先进的技术平台,旨在通过分析情感的组合、相互关系及其动态变化来解读和识别复杂的情感状态。这种系统通常采用以下技术和方法: 机器学习与深度学习: 通过训练算法识别和解释大量情感数据…