使用 Docker 进入容器并运行命令的详细指南

news/2024/10/4 8:30:58/文章来源:https://blog.csdn.net/qq_64272546/article/details/142258368

Docker 是一款开源的容器化平台,它可以将应用程序和依赖环境打包到一个可移植的“容器”中,以保证应用不受运行环境的影响。使用 Docker 容器化应用后,有时需要进入容器内部执行一些命令进行调试或管理。

一、Docker 基础命令

在开始进入容器之前,确保你的机器上已安装 Docker 并启动服务。基本的 Docker 命令包括:

 

bash

# 启动 Docker 服务 sudo systemctl start docker # 检查 Docker 服务状态 sudo systemctl status docker # 查看 Docker 版本 docker --version

二、查看 Docker 容器

在进入容器之前,首先要确保容器已经在运行。以下命令可以查看当前正在运行的容器:

 

bash

# 查看正在运行的容器 docker ps # 查看所有容器(包括停止的) docker ps -a

执行 docker ps 命令后,会输出类似以下的信息:

 

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e5b524115303 nginx:latest "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp nginx-container

三、进入 Docker 容器

3.1 使用 docker exec 命令

docker exec 命令可以在运行的容器中执行命令,并启动一个新的交互式 Shell 会话。

 

bash

# 语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...] # 交互式进入容器 docker exec -it CONTAINER_ID /bin/bash

例如,进入名称为 nginx-container 的容器:

 

bash

docker exec -it nginx-container /bin/bash

3.2 使用 docker attach 命令

docker attach 命令将连接到运行中容器的标准输入、输出和错误流。

 

bash

# 连接到容器的 Bash 会话 docker attach CONTAINER_ID

需要注意的是,如果退出 docker attach 会话,可能会导致容器停止。使用 Ctrl + PCtrl + Q 组合键可以安全地退出会话并保持容器运行。

3.3 使用 docker run 命令

对于尚未运行的容器,可以使用 docker run 命令启动并进入容器。这个命令将创建一个新的容器并启动一个交互式 Shell。

 

bash

# 语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...] # 创建并启动一个交互式容器 docker run -it IMAGE_NAME /bin/bash

例如,从 Ubuntu 镜像创建并启动一个新容器:

 

bash

docker run -it ubuntu /bin/bash

四、常用命令示例

4.1 查看容器内部文件系统

 

bash

# 查看当前目录 ls # 切换到另一个目录 cd /var/log # 查看文件内容 cat /var/log/nginx/access.log

4.2 安装软件包

在容器内,通过包管理工具(如 aptyum 等)安装软件包。例如,在 Ubuntu 容器中:

 

bash

# 更新软件包列表 apt-get update # 安装软件包 apt-get install -y vim

4.3 查看进程和系统信息

 

bash

# 查看运行的进程 ps aux # 查看容器的系统资源使用情况 top # 查看磁盘使用情况 df -h # 查看网络接口信息 ifconfig

4.4 运行和管理服务

在容器中可以直接启动或管理服务。例如,启动 Nginx 服务:

 

bash

# 启动 Nginx 服务 service nginx start # 查看 Nginx 服务状态 service nginx status

4.5 退出容器

当完成在容器内的操作后,可以使用 exit 命令退出容器的 Shell。

 

bash

# 退出容器 exit

如果使用 docker exec 启动的交互式会话,退出后容器将继续运行。如果使用 docker run 创建并启动的新容器,退出会话后容器将停止。

五、高级操作

5.1 复制文件到和从容器

有时需要在宿主机和容器之间复制文件,docker cp 命令可以实现这一功能。

 

bash

# 从宿主机复制文件到容器 docker cp /path/on/host CONTAINER_ID:/path/in/container # 从容器复制文件到宿主机 docker cp CONTAINER_ID:/path/in/container /path/on/host

例如,将宿主机上的文件 nginx.conf 复制到容器的 /etc/nginx/nginx.conf

 

bash

docker cp nginx.conf nginx-container:/etc/nginx/nginx.conf

5.2 重启容器

在某些情况下,可能需要重启容器以应用更改。

 

bash

# 重启容器 docker restart CONTAINER_ID

5.3 停止和删除容器

 

bash

# 停止容器 docker stop CONTAINER_ID # 删除容器 docker rm CONTAINER_ID

六、常见问题和解决方法

6.1 进程无法退出

如果在 docker attach 会话中进程无法退出,使用 Ctrl + PCtrl + Q 组合键可以安全地退出会话并保持容器运行。

6.2 挂载卷问题

若出现数据卷挂载的问题,可以检查宿主机路径和容器路径是否正确。

 

bash

docker run -it -v /host/path:/container/path IMAGE /bin/bash

6.3 权限问题

进入容器时可能遇到权限不足的情况,通过 sudo 提升权限解决。

 

bash

# 使用 sudo 运行命令 sudo docker exec -it CONTAINER_ID /bin/bash

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

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

相关文章

每日OJ题_牛客_数组中两个字符串的最小距离

目录 牛客_数组中两个字符串的最小距离 解析代码 牛客_数组中两个字符串的最小距离 数组中两个字符串的最小距离__牛客网 给定一个字符串数组strs,再给定两个字符串str1和str2,返回在strs中str1和str2的最小距离,如果str1或str2为null&…

加密

一、加密 加密运算需要两个输入:密钥和明文 解密运算也需要两个输入:密钥和密文 密文通常看起来都是晦涩难懂、毫无逻辑的,所以我们一般会通过传输或者存储密文来保护私密数据,当然,这建立在一个基础上,…

Rust练手项目,写个有趣的小工具定时从一言网获取一段有趣的话并推送通知

Rust练手项目,写个有趣的小工具 代码 继续练习Rust, 写个小工具定时从一言网获取一段有趣的话并提示,如下 练习以下Rust点 并发编程 Mutex, Arc指针使用HTTP请求Windows Gui 代码 Cargo.toml [package] name "funny_word" edition "20…

MATLAB 可视化基础:绘图命令与应用

目录 1. 绘制子图1.1基本绘图命令1.2. 使用 subplot 函数1.3. 绘图类型 2.MATLAB 可视化进阶(以下代码均居于以上代码的数据定义上实现)2.1. 极坐标图2.3. 隐函数的绘制 3.总结 在数据分析和科学计算中,数据可视化是理解和解释结果的关键工具。今天,我将…

CefSharp_Vue交互(Element UI)_WinFormWeb应用(2)---置顶和取消置顶(含示例代码)

一、预览 获取winform的置顶参数,和设置置顶参数 1.1 置顶(默认不置顶) 1.2 示例代码

vscode中如何配置c/c++环境

“批判他人总是想的太简单 剖析自己总是想的太困难” 文章目录 前言文章有误敬请斧正 不胜感恩!一、准备工作二、安装 VSCode 插件三、配置 VSCode1. 配置编译任务(tasks.json)2. 配置调试器(launch.json) 四、运行和调…

Layout 布局组件快速搭建

文章目录 设置主题样式变量封装公共布局组件封装 Logo 组件封装 Menu 菜单组件封装 Breadcrumb 面包屑组件封装 TabBar 标签栏组件封装 Main 内容区组件封装 Footer 底部组件封装 Theme 主题组件 经典布局水平布局响应式布局搭建 Layout 布局组件添加 Layout 路由配置启动项目 …

蓝桥杯-基于STM32G432RBT6的LCD进阶(LCD界面切换以及高亮显示界面)

目录 一、页面切换内容详解 1.逻辑解释 2.代码详解 code.c(内含详细讲解) code.h main.c 3.效果图片展示 ​编辑 二、页面选项高亮内容详解 1.逻辑解释 2.读入数据 FIRST.第一种高亮类型 code.c(内含代码详解) code.…

54.【C语言】 字符函数和字符串函数(strncpy,strncat,strncmp函数)

和strcpy,strcat,strcmp函数对应的是strncpy,strncat,strncmp函数 8.strncpy函数 *简单使用 cplusplus的介绍 点我跳转 翻译: 函数 strncpy char * strncpy ( char * destination, const char * source, size_t num ); 从字符串中复制一些字符 复制源(source)字符串的前num个…

根文件夹下文件重复检测

功能介绍:在传入Windows路径后(例如“D:\小米云服务下载”),遍历文件夹下所视频有文件(包括子文件夹下的视频文件,其他类型不做判断),判断视频文件是否重复(由于视频文件…

[Linux]:进程间通信(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. system V通信 前面我们所探究的通信方式都是基于管道文件的,而…

如何在 Ubuntu 系统上部署 Laravel 项目 ?

到目前为止,Laravel 是 PHP 开发人员构建 api 和 web 应用程序的首选。如果你是新手的话,将 Laravel 应用程序部署到线上服务器上可能有点棘手。 在本指南中,我们将向您展示在 Ubuntu 系统中部署 Laravel 应用程序的全过程。 Step 1: Updat…

从登录到免登录:JSP与Servlet结合Cookie的基本实现

前言 JSP中应用Cookie解析: 用户登录成功后,将用户信息保存到Cookie中,在页面读取Cookie并显示,不需要再次登录可以直接进入页面 第一步:创建JavaWeb项目,配置pom.xml文件 创建maven项目,项目名…

浅谈住房城乡建设部科技创新平台布局重点方向

最近住房建设部组织开展住房城乡建设部科技创新平台(以下简称部科技创新平台)申报工作。详细内容见住房城乡建设部科技创新平台开始申报了 (qq.com)。在这里有4大方向共15个课题。内容见下图: 虽然我是做技术的,但是如何体现创新还…

2022高教社杯全国大学生数学建模竞赛C题 问题一(1) Python代码演示

目录 问题 11.1 对这些玻璃文物的表面风化与其玻璃类型、纹饰和颜色的关系进行分析数据探索 -- 单个分类变量的绘图树形图条形图扇形图雷达图Cramer’s V 相关分析统计检验列联表分析卡方检验Fisher检验绘图堆积条形图分组条形图分类模型Logistic回归随机森林import matplotlib…

STM32(十五):I2C通信

I2C通信 I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线,实现单片机读写外部模块寄存器的功能。 两根通信线:SCL(Serial Clock)、SDA(Serial Data) 同步,半双工…

【MySQL】MySQL中JDBC编程——MySQL驱动包安装——(超详解)

前言: 🌟🌟本期讲解Java中JDBC编程,希望能帮到屏幕前的你。 🌈上期博客在这里:【MySQL】MySQL索引与事务的透析——(超详解)-CSDN博客 🌈感兴趣的小伙伴看一看小编主页&a…

C语言-数据结构 弗洛伊德算法(Floyd)邻接矩阵存储

弗洛伊德算法相比迪杰斯特拉相似的地方都是遍历邻接矩阵不断调整最短路径的信息,并且两种算法面对多源最短路径的时间复杂度都是O(n^3),Floyd采用的是动态规划而Dijkstra是采用贪心的思想。在Floyd中我们将创建两个数组进行辅助,一个path二维…

mysql Field ‘ssl_cipher‘ doesn‘t have a default value的解决

1、执行sql的时候报错: 16:48:00 INSERT INTO mysql.user (Host,User,authentication_string) VALUES(%,root, PASSWORD(12323)) Error Code: 1364. Field ssl_cipher doesnt have a default value 0.000 sec 1、解决,执行命令: my…

秒懂C++之智能指针

目录 前言 智能指针的使用及原理 RAII RAII弊端 std::auto_ptr std::unique_ptr std::shared_ptr shared_ptr弊端 std::weak_ptr 扩展(删除器) 前言 为了解决抛异常所造成的内存泄漏等问题~秒懂C之异常-CSDN博客~我们来学习智能指针的相关用法…