【Docker】Docker 容器的使用指南:如何进入容器并运行命令

目录

  • 1. 什么是 Docker 容器?
  • 2. 进入 Docker 容器的方法
    • 2.1 使用 `docker exec`
    • 2.2 使用 `docker attach`
    • 2.3 使用 `docker run`
  • 3. 常见选项与参数
  • 4. 退出容器
  • 5. 进入容器的实际操作步骤
    • 步骤 1:查看正在运行的容器
    • 步骤 2:进入容器
    • 步骤 3:在容器中运行命令
    • 步骤 4:退出容器
  • 6. 连接到已经存在的服务
  • 7. 访问容器的文件系统
  • 8. 图示说明
  • 9. 常见问题解答
  • 结论
  • 参考资料

Docker 是一个开源的应用容器引擎,能轻松创建、部署和运行分布式应用。本文将介绍如何进入 Docker 容器并在其中运行命令,包括常用命令示例与说明。

1. 什么是 Docker 容器?

Docker 容器是一个轻量级、可移植的自给自足的软件包,包含运行某个软件所需的一切,如代码、运行时、系统工具、库和设置。通过 Docker,开发者可以确保应用在任何环境中以相同的方式运行。

2. 进入 Docker 容器的方法

2.1 使用 docker exec

docker exec 是最常用的方法,可以在已运行的容器中执行命令。除了 bash,你还可以使用其他 shell 或命令。

基本语法:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

示例:

docker exec -it my_container sh
  • -i:保持标准输入打开。
  • -t:分配一个伪终端。
  • my_container:容器名称或 ID。
  • sh:要执行的命令(这里为 sh,部分轻量级镜像如 Alpine 可能没有 bash)。

2.2 使用 docker attach

docker attach 命令用于连接到正在运行的容器的标准输入输出,但不如 exec 灵活。注意,这种方式会让你直接与容器交互,可能会导致容器意外停止。

基本语法:

docker attach CONTAINER

示例:

docker attach my_container

注意: 使用 attach 时,无法直接退出容器。使用 Ctrl + CCtrl + D 会结束容器,而不是仅仅退出。要安全退出而不停止容器,可以使用 Ctrl + P 然后 Ctrl + Q

2.3 使用 docker run

如果想以交互模式启动一个新的容器并立即进入,可以使用 docker run 命令:

docker run -it --name my_new_container ubuntu bash

这将基于 Ubuntu 镜像创建并启动一个新容器,然后进入 bash shell。

3. 常见选项与参数

选项描述
-d后台运行容器
-it交互模式,分配终端
--rm容器停止后自动删除
-e VAR=VALUE设置环境变量

4. 退出容器

如果使用 exec 进入容器,可以通过输入 exit 或使用 Ctrl + D 来退出。如果使用 attach,则需注意 Ctrl + CCtrl + D 的区别,以免意外停止容器。

5. 进入容器的实际操作步骤

步骤 1:查看正在运行的容器

首先,确认你要进入的容器正在运行:

docker ps

步骤 2:进入容器

使用 docker exec 进入容器:

docker exec -it <container_id_or_name> bash

步骤 3:在容器中运行命令

一旦进入,你可以在容器内部运行任何命令。例如:

ls /app

步骤 4:退出容器

完成操作后,输入 exit 或使用 Ctrl + D 退出容器。

6. 连接到已经存在的服务

如果容器内的应用(如数据库、Web 服务)需要访问,你可以通过 docker exec 连接到这些服务。例如,连接到 MySQL 容器:

docker exec -it mysql_container mysql -u root -p

这将允许你在 MySQL 提示符下执行 SQL 查询。

7. 访问容器的文件系统

一旦进入容器,你可以导航其文件系统,查看和修改文件。常用命令包括:

  • ls:列出目录内容。
  • cd:切换目录。
  • cat:查看文件内容。
  • vimnano:编辑文件(需确保容器中安装了这些编辑器)。

8. 图示说明

以下是进入 Docker 容器的流程图:

CSDN @ 2136
查看运行中的容器
执行 docker exec -it
进入容器
运行命令
退出容器
CSDN @ 2136

9. 常见问题解答

  1. 如何找到容器 ID 或名称?
    使用 docker ps 列出所有正在运行的容器及其 ID 和名称。

  2. 我可以进入没有运行的容器吗?
    不可以。你必须先启动容器才能使用 exec 进入。

  3. 如何运行其他命令?
    可以替换 bash 为其他命令,例如 shpython 等。

结论

通过本文,我们详细了解了如何使用 Docker 进入容器并运行命令。掌握这些基本操作,对开发和调试 Docker 应用至关重要。希望这篇文章能为你的 Docker 使用提供帮助!

参考资料

  • Docker 官方文档
  • Docker CLI 文档

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录一次病毒启动脚本

在第一次下载软件时&#xff0c;目录中配了一个使用说明&#xff0c;说是需要通过start.bat 这个文件来启动程序&#xff0c;而这个 start.bat 就是始作俑者&#xff1a; 病毒作者比较狡猾&#xff0c;其中start.bat 用记事本打开是乱码&#xff0c;但是可以通过将这个批处理…

OpenMV与STM32通信全面指南

目录 引言 一、OpenMV和STM32简介 1.1 OpenMV简介 1.2 STM32简介 二、通信协议概述 三、硬件连接 3.1 硬件准备 3.2 引脚连接 四、软件环境搭建 4.1 OpenMV IDE安装 4.2 STM32开发环境 五、UART通信实现 5.1 OpenMV端编程 5.2 STM32端编程 六、SPI通信实现 6.1 …

查缺补漏----I/O中断处理过程

中断优先级包括响应优先级和处理优先级&#xff0c;响应优先级由硬件线路或查询程序的查询顺序决定&#xff0c;不可动态改变。处理优先级可利用中断屏蔽技术动态调整&#xff0c;以实现多重中断。下面来看他们如何运用在中断处理过程中&#xff1a; 中断控制器位于CPU和外设之…

动态规划最长上升子序列问题讲解和【题解】——最长上升子序列

动态规划最长上升子序列讲解和题解——最长上升子序列 最长上升子序列问题讲解1.概念解析2.举例了解3.示例程序 最长上升子序列题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示思路解析 最长上升子序列问题讲解 1.概念解析 最长上升子序列 &#xff08; L o n g e s…

微服务sentinel解析部署使用全流程

sentinel源码地址&#xff1a; 介绍 alibaba/Sentinel Wiki GitHub sentinel官方文档&#xff1a; https://sentinelguard.io/zh-cn/docs/introduction.html Sprong Cloud alibaba Sentinel文档【小例子】 : Sentinel alibaba/spring-cloud-alibaba Wiki GitHub 目录 1、…

C# + SQLiteExpert 进行(cipher)加密数据库开发+Costura.Fody 清爽发布

一&#xff1a;让 SQLiteExpert 支持&#xff08;cipher&#xff09;加密数据库 SQLiteExpert 作为SQlite 的管理工具&#xff0c;默认不支持加密数据库的&#xff0c;使其成为支持&#xff08;cipher&#xff09;加密数据库的管理工具&#xff0c;需要添加e_sqlcipher.dll &…

Android-Handle消息传递和线程通信

本文为作者学习笔记&#xff0c;如有误&#xff0c;请各位大佬指点 目录 一、同步异步 二、Java多线程通信 三、Handler是什么 四、Handler相关的类 五、Handler常用方法 1. 发送消息 2. 接收处理消息 3. 切换线程 六、使用Handler 使用Handler更新UI 使用Handler延…

蓝桥杯【物联网】零基础到国奖之路:十八. 扩展模块之光敏和AS312

蓝桥杯【物联网】零基础到国奖之路:十八.扩展模块之光敏和AS312 第一节 硬件解读第二节 CubeMX配置第二节 代码 第一节 硬件解读 光敏和AS312如下图&#xff1a; 光敏电阻接到了扩展模块的5号引脚&#xff0c;5号引脚接了2个电阻&#xff0c;R8和光敏电阻。我们通过ADC读取这…

Python 从入门到实战33(使用MySQL)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了数据库编程接口操作的相关知识。今天我们将学习…

ASP.NET Zero 多租户介绍

ASP.NET Zero 是一个基于 ASP.NET Core 的应用程序框架&#xff0c;它提供了多租户支持&#xff0c;以下是关于 ASP.NET Zero 多租户的介绍&#xff1a; 一、多租户概念 多租户是一种软件架构模式&#xff0c;允许多个客户&#xff08;租户&#xff09;共享同一套软件应用程序…

探索TOGAF理论的实践应用:企业数字化转型的深度指南

数字化转型的迫切性与路径选择 随着全球化进程和技术革命的加速&#xff0c;企业正面临前所未有的挑战和机遇。数字化转型已成为企业保持竞争力、创新业务模式、优化客户体验的核心手段。然而&#xff0c;企业在实施数字化转型时&#xff0c;往往面临路径不清、技术与业务脱节…

《Linux从小白到高手》理论篇(七):Linux的时间管理运行级别启动过程原理详解

List item 本篇将介绍Linux的时间管理&运行级别相关知识&#xff0c;并将深入介绍Linux的启动过程及原理。 Linux的时间管理 Linux 时钟分为系统时钟&#xff08;System Clock&#xff09;和硬件&#xff08;Real Time Clock&#xff0c;简称 RTC&#xff09;时钟。系统时…

Linux驱动开发(速记版)--设备树插件

第六十八章 设备树插件介绍 Linux 4.4之后引入了动态设备树&#xff0c;其中的设备树插件&#xff08;Device Tree Overlay&#xff09;是一种扩展机制&#xff0c;允许在运行时动态添加、修改或删除设备节点和属性。 设备树插件机制通过DTS&#xff08;设备树源文件&#xff0…

protobuf 讲解

一、序列化概念回顾 二、什么是PB 将结构化数据进行序列化的一种方式 三、PB的特点 语言无关、平台无关&#xff1a;即PB支持Java&#xff0c;C、Python等多种语言。支持多个平台 高效&#xff1a;即比XML更小&#xff0c;更快&#xff0c;更为简单。 扩展性、兼容性好&am…

WPF之UI进阶--控件样式与样式模板及词典

WPF的优势之一就是能够更加容易快捷的对窗体和控件的外面进行改造&#xff0c;换句话说&#xff0c;那就是UI设计个性化更加容易。主要是借助了样式、模板及词典来实现的。那么本篇博文就一一对他们进行介绍。 文章目录 一、样式1: 定义样式2: 使用Setter设置属性关于Property和…

C或C++判断指针是否指向同一块内存

有时需要判断指针是否指同一块内存&#xff0c;例如设计字符串时&#xff1a; &#xff08;1&#xff09;insert函数 &#xff08;2) replace函数 &#xff08;3&#xff09;assign函数 难点是迭代器&#xff0c;判断是否同一个迭代器时&#xff0c;需要你在设计迭代器时加…

Kubernetes-环境篇-01-mac开发环境搭建

1、brew安装 参考知乎文章&#xff1a;https://zhuanlan.zhihu.com/p/111014448 苹果电脑 常规安装脚本&#xff08;推荐 完全体 几分钟安装完成&#xff09; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"苹果电脑 极…

Rstudio:强大的R语言集成开发环境(IDE)

Rstudio 应该是 R 语言使用的标配&#xff0c;尽管 Rstudio 的母公司 Posit 推出了新一代的集成开发环境 Positron&#xff0c;但其还处于开发阶段。作为用户不妨让其成熟后再使用&#xff0c;现阶段还是 Rstudio 更稳定。 如果你在生物信息学或统计学领域工作&#xff0c;R语言…

Python | Leetcode Python题解之第455题分发饼干

题目&#xff1a; 题解&#xff1a; class Solution:def findContentChildren(self, g: List[int], s: List[int]) -> int:g.sort()s.sort()m, n len(g), len(s)i j count 0while i < m and j < n:while j < n and g[i] > s[j]:j 1if j < n:count 1i …

uni-app - - - - -vue3使用i18n配置国际化语言

uni-app - - - - -使用i18n配置国际化语言 1. 安装vue-i18n2. 配置文件2.1 创建如下文件2.2 文件配置2.3 main文件导入i18n 3. 页面内使用3.1 template内直接使用3.2 变量接收使用 1. 安装vue-i18n npm install vue-i18n --save2. 配置文件 2.1 创建如下文件 locales文件夹里…