使用 Docker 进入容器并运行命令的详细指南
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 + P 和 Ctrl + 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 安装软件包
在容器内,通过包管理工具(如 apt、yum 等)安装软件包。例如,在 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 + P 和 Ctrl + 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
相关文章:
使用 Docker 进入容器并运行命令的详细指南
Docker 是一款开源的容器化平台,它可以将应用程序和依赖环境打包到一个可移植的“容器”中,以保证应用不受运行环境的影响。使用 Docker 容器化应用后,有时需要进入容器内部执行一些命令进行调试或管理。 一、Docker 基础命令 在开始进入容…...
【人工智能】OpenAI最新发布的o1-preview模型,和GPT-4o到底哪个更强?最新分析结果就在这里!
在人工智能的快速发展中,OpenAI的每一次新模型发布都引发了广泛的关注与讨论。2023年9月13日,OpenAI正式推出了名为o1的新模型,这一模型不仅是其系列“推理”模型中的首个代表,更是朝着类人人工智能迈进的重要一步。本文将综合分析…...
Spring Boot-版本兼容性问题
Spring Boot 版本兼容性问题探讨 Spring Boot 是一个用于构建微服务和现代 Java 应用的流行框架,随着 Spring Boot 版本的更新和发展,它在功能、性能和安全性上不断提升。但与此同时,Spring Boot 的版本兼容性问题也逐渐成为开发者必须关注的…...
Java原生HttpURLConnection实现Get、Post、Put和Delete请求完整工具类分享
这里博主纯手写了一个完整的 HTTP 请求工具类,该工具类支持多种请求方法,包括 GET、POST、PUT 和 DELETE,并且可以选择性地使用身份验证 token。亲测可用,大家可以直接复制并使用这段代码,以便在自己的项目中快速实现 HTTP 请求的功能。 目录 一、完整代码 二、调用示例…...
如何微调(Fine-tuning)大语言模型?
本文介绍了微调的基本概念,以及如何对语言模型进行微调。 从 GPT3 到 ChatGPT、从GPT4 到 GitHub copilot的过程,微调在其中扮演了重要角色。什么是微调(fine-tuning)?微调能解决什么问题?什么是 LoRA&…...
wopop靶场漏洞挖掘练习
1、SQL注入漏洞 1、在搜索框输入-1 union select 1,2,3# 2、输入-1 union select 1,2,database()# ,可以得出数据库名 3、输入-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schematest#,可以得出数据库中…...
探索Python的隐秘角落:Keylogger库的神秘面纱
文章目录 探索Python的隐秘角落:Keylogger库的神秘面纱背景:为何需要Keylogger?库简介:什么是Keylogger?安装指南:如何将Keylogger纳入你的项目?函数使用:5个简单函数的介绍与代码示…...
JAVA开源项目 校园管理系统 计算机毕业设计
本文项目编号 T 026 ,文末自助获取源码 \color{red}{T026,文末自助获取源码} T026,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 管…...
Java--常见的接口--Comparable
String类型的compareTo方法: 在String引用中,有一个方法可以比较两个字符串的大小: 和C语言中是一样的,两个字符串一个字符一个去比较。 那么这个方法是怎么实现的呢? 其实就是一个接口:Comparable接口里…...
luogu基础课题单 入门 上
【深基2.例5】苹果采购 题目描述 现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果? 输入格式 输入两个不超过 1 0 9 10^9 109 正整数,分别表示每人分到…...
物理设计-物理数据模型优化策略
物理数据模型优化策略 1. 引言:物理设计的重要性 在数据库设计的生命周期中,物理设计是将逻辑模型转化为实际可执行的数据库架构的关键步骤。它直接关系到系统的性能、可扩展性和维护成本。一个优化的物理数据模型能够显著提升数据访问速度ÿ…...
产学研合作赋能产业升级新动能
在当今快速发展的时代,产业升级已成为经济持续增长的关键。而产学研合作模式正以其独特的优势,为产业升级注入新动能。 产学研合作,即将产业、学校与科研机构紧密结合起来。产业提供实际的需求和应用场景,学校培养专业的人才&…...
uniapp tabBar不显示
开发中发现某个页面不显示tabbar,而有的页面显示 需要在tabBar配置中添加需要展示的页面 刚开始我发现登录页面不展示tabbar,把登录页面的路径配置进去就会展示了...
论文阅读《Robust Steganography for High Quality Images》高质量因子图片的鲁棒隐写
TCSVT 2023 中国科学技术大学 Kai Zeng, Kejiang Chen*, Weiming Zhang, Yaofei Wang, Nenghai Yu, "Robust Steganography for High Quality Images," in IEEE Transactions on Circuits and Systems for Video Technology, doi: 10.1109/TCSVT.2023.3250750. 一、…...
node前端开发基本设置
加快下载源速度 要将 npm 切换到淘宝的源镜像,你可以按照以下步骤操作: 查看当前 npm 源: npm config get registry这个命令会显示当前使用的 npm 源地址,默认情况下它会是 https://registry.npmjs.org/。 切换到淘宝镜像&#…...
深入掌握:如何进入Docker容器并运行命令
感谢浪浪云支持发布 浪浪云活动链接 :https://langlangy.cn/?i8afa52 文章目录 查看正在运行的容器使用 docker exec 命令进入容器进入容器的交互式 shell在容器中运行命令 使用 docker attach 命令附加到容器检查容器日志退出容器从 docker exec 方式退出从 docke…...
把设计模式用起来(3)用不好的原因之时机不对
上一篇:《把设计模式用起来(3)——用不好的原因 之 实践不足》https://blog.csdn.net/nanyu/article/details/141939342 本篇继续讲设计模式用不好的常见原因,这是第二个:使用设计模式的时机不对。 二、时机不对 这里…...
【机器学习随笔】基于kmeans的车牌类型分类注意点
kmeans是无监督的聚类算法,可用于数据的分类。本文尝试用kmeans对车牌类型进行分类,记录使用过程中的注意点。 kmeans使用过程中涉及两个大部分,模型与分析。模型部分包括训练模型和使用模型,分析部分主要为可视化分析。两部分的主…...
matlab处理函数3
1. 直方图均衡化的 Matlab 实现 1.1 imhist 函数 功能:计算和显示数字数字图像的色彩直方图 格式:imhist(I,n) imhist(X,map) 说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省值为256;imhist(X…...
跨系统环境下LabVIEW程序稳定运行
在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下&a…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
