Docker--Docker Container(容器) 之 操作实例

容器的基本操作

容器的操作步骤其实很简单,根据拉取的镜像,进行启动,后可以查看容器,不用时停止容器,删除容器

下面简单演示操作步骤

1.创建并运行容器

例如,创建一个名为"my-nginx"的交互式Nginx容器,并将容器端口80映射到主机端口8080,可以使用以下命令:

docker run -it --name my-nginx -p 8080:80 nginx

2.查看容器

  • docker ps:列出当前正在运行的容器。
  • docker ps -a:列出所有容器,包括已经停止的。

按照我们在linux执行的命令,通常是使用ls来进行查看对应的目录,而容器其实也是可以这样操作的:
在这里插入图片描述

docker container ls 等价于 docker ps

只不过是我们习惯用docker ps 的命令了;

3.停止容器

使用docker stop命令可以停止一个正在运行的容器。例如,停止名为"my-nginx"的容器:

docker stop my-nginx

另外,docker kill命令也可以用来停止容器,但它会立即发送SIGKILL信号给容器,可能会导致数据丢失或状态不一致,因此通常不建议使用。

对于容器ID,能直接通过ID前三位直接进行操作:
在这里插入图片描述

4.删除容器

使用docker rm命令可以删除一个已经停止的容器。例如,删除名为"my-nginx"的容器:

docker rm my-nginx

如果需要一次性删除所有已经停止的容器,可以使用以下命令:

docker rm $(docker ps -a -q)

容器的批量处理技巧

docker ps + 选项

  • -a 所有容器
  • -f 根据给定条件进行过滤
  • -q 静默获取容器id

注:docker ps 等价于 docker container ls

例如:根据名称过滤得到一个容器编号:
在这里插入图片描述

根据状态信息获取对应的容器:
在这里插入图片描述
获取停止运行状态的容器:
在这里插入图片描述
获取容器的全部id:
在这里插入图片描述

容器的运行方式

attached模式

在这种模式下,容器在前台运行,并且容器的日志会实时地展现到宿主机的命令行窗口中。

  • 定义:attached模式是指Docker容器在前台运行,并且与宿主机的命令行窗口保持连接的状态。
  • 特点:
  1. 实时日志输出:容器的日志会实时地输出到宿主机的命令行窗口中,方便用户进行实时监控和调试。
  2. 交互性强:用户可以在宿主机的命令行窗口中直接对容器进行操作,如输入命令、查看文件等。
  3. 占用端口:attached模式会占用宿主机的命令行窗口,直到用户手动停止容器或关闭窗口。

使用场景
attached模式更适用于容器和程序的调试阶段。在调试过程中,开发人员需要实时监控容器的日志输出,以便及时发现和解决问题。同时,开发人员还需要在容器中执行一些命令来查看文件、修改配置等,attached模式提供了这样的交互环境。

例子:
在启动Docker容器时,如果不加-d或–detach参数,则容器会以attached模式运行。例如,使用以下命令启动一个Nginx容器:

docker container run -p 80:80 nginx

在这里插入图片描述

detached模式

detach模式是指Docker容器在后台运行,并且与当前的命令行窗口或终端分离的状态。

特点:

  • 后台运行:容器在detach模式下会在后台运行,不会占用当前的命令行窗口或终端。
  • 日志输出:虽然容器在后台运行,但其日志仍然会输出到Docker的日志系统中,可以通过docker logs命令查看。
  • 资源占用:detach模式下的容器会占用系统资源,如CPU、内存和磁盘等,但不会影响当前命令行窗口或终端的使用。

使用场景
detach模式更适用于需要长时间运行的服务或应用程序,如Web服务器、数据库等。这些服务或应用程序通常不需要频繁的用户交互,因此可以在后台运行,并释放当前的命令行窗口或终端资源。

例如
在启动Docker容器时,使用-d或–detach参数可以使容器以detach模式运行。例如,使用以下命令启动一个Nginx容器:

docker run -p 8080:80 --name mynginx3 -d nginx:1.23.4

在这里插入图片描述

根据命令查看日志信息:

docker logs 8e7

在这里插入图片描述

可以将其转化为attach模式,一旦访问服务器地址就有日志信息:

docker attach 8e7

在这里插入图片描述

interative模式

interactive模式是指Docker容器在运行时,用户可以通过命令行与容器内部进行实时交互的状态。

特点:

  • 实时交互:用户可以在命令行中直接输入命令,并实时查看容器的响应和输出。
  • 灵活性强:用户可以根据需要随时调整容器的配置、查看文件、安装软件等。
  • 适用于开发和调试:interactive模式特别适用于需要频繁与容器内部进行交互的场景,如开发、测试和调试等。

在启动Docker容器时,使用-it参数可以使容器以interactive模式运行。其中,-i表示保持标准输入流打开,-t表示分配一个伪终端。例如,使用以下命令启动一个基于Ubuntu镜像的容器,并进入其内部的bash命令行环境:

docker run -it ubuntu bash

这条命令会启动一个基于Ubuntu镜像的容器,并为用户分配一个伪终端,用户可以在其中执行Linux命令,与容器进行交互。

容器自动重启

容器可以通过配置选项参数来让其自动重启:
docker run --restart=no [容器名] :默认值不自动重启
docker run --restart=always [容器名] :always 容器退出时总是重启
docker run --restart=on-failure:3 [容器名] : on-failure 若容器的退出状态非 0,则docker 自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃;

下面演示自动重启的例子:
先运行一个容器,并将docker run --restart=always [容器名] :always 选项加上:

docker run --name mynginx5 -d -p 8080:80 --restart always nginx:1.23.4

此时,容器在后台运行:
在这里插入图片描述
容器被kill之后仍然在运行:
在这里插入图片描述
最后释放空间:

docker stop mynginx5
docker rm mynginx5

设置容器的环境变量

在运行容器时,可以使用docker run命令的-e参数来设置环境变量。这种方式允许在创建和启动容器时动态地传递环境变量

下面来演示一下:

启动一个 nginx 容器,配置环境变量,TEST=1:

docker run--name mynginx5 -d -p 8080:80 -e TEST=1 nginx:1.23.4

进入容器并查看:

root@VM-8-12-ubuntu:~# docker exec -it mynginx5 bash 
root@34b076bc51da:/# env 丨 grep TEST 
TEST=1
root@34b076bc51da:/# exit
exit

释放空间:

root@VM-8-12-ubuntu:~# docker stop mynginx5 
mynginx5
root@VM-8-12-ubuntu:~# docker rm mynginx5
mynginx5

注意:

  • 环境变量的命名:环境变量的命名应遵循一定的规范,避免使用与操作系统或应用程序保留的环境变量名相冲突的名称。
  • 环境变量的值:环境变量的值应避免包含敏感信息,如密码、密钥等。如果必须包含敏感信息,应确保这些信息的安全存储和传输。
  • 环境变量的作用范围:设置的环境变量只在容器内部生效,不会影响到宿主机或其他容器。如果需要在多个容器之间共享环境变量,可以考虑使用Docker网络、Docker Configs或Docker Secrets等功能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型WebUI:Gradio全解系列8——Additional Features:补充特性(上)

大模型WebUI:Gradio全解系列8——Additional Features:补充特性(上) 前言本篇摘要8. Additional Features:补充特性8.1 队列8.1.1 使用方法8.1.2 配置队列演示 8.2 输入输出流8.2.1 输出流1. 生成器yield2. 流媒体 8.2…

leetcode 2658. 网格图中鱼的最大数目

题目如下 数据范围 使用并查集来做这道题。 其实按照题目的意思就是让我们求每一个联通的水域可以捞到的最大权值。 我们可以从前往后遍历这个二维数组只需要判断前一个水域和上一个水域是否和当前的(i, j)联通如果有则合并水域,同时用一个weight数组保存每一个联…

【go每日一题】golang异常、错误 {源码、实践、总结}

错误与异常在golang中区分 Go 的错误处理设计与其他语言的异常不同。Go 中的 error 就是一个普通的值对象,而其他语言如 Java 中的 Exception 将会造成程序控制流的终止和其他行为,Exception 与普通的值不同。虽然 Go 也有类似的异常机制 —— panic&am…

大模型 Fine-Tuning 技术解析

引言 在大型语言模型(LLMs, Large Language Models)的发展历程中,预训练模型和微调(Fine-tuning)技术起到了至关重要的作用。这些技术使得模型不仅能够学习到丰富的语言特征,还能根据具体任务进行优化调整…

LabVIEW开发中常见硬件通讯接口快速识别

在 LabVIEW 开发中,与硬件进行通讯是实现数据采集与控制的重要环节。准确判断通讯接口类型和协议,可以提高开发效率,减少调试时间。本文结合 LabVIEW 的实际应用,详细介绍如何识别和判断常见硬件通讯接口的定义,并提供…

抖音短视频矩阵系统源码开发全流程解析

在项目开发过程中,调整配置文件至关重要,这些文件包括数据库连接、API密钥及全局参数等。通过正确配置这些信息,可确保应用程序的稳定性和安全性。灵活调整配置以适应具体需求有助于短视频矩阵系统项目的顺利推进。 在开发环境中&#xff0c…

Unity功能模块一对话系统(4)实现个性文本标签

本期我们将了解如何在TMPro中自定义我们的标签样式&#xff0c;并实现两种有趣的效果。 一.需求描述 1.定义<float>格式的标签&#xff0c;实现标签处延迟打印功能 2.定义<r" "></r>格式的标签&#xff0c;实现标签区间内文本片段的注释显示功能…

深度学习实战自动驾驶目标识别

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对BDD100K自动驾驶目标数据集进行训练和优化&#xff0c;该数据集包含丰富的自动驾…

广西大数据局:数聚政府、利企惠民(广西数字政府建设内容、管理机制、应用场景)

2023年数字政府评估大会上&#xff0c;广西大数据局党委书记、主任周飞发表了题为“数聚政府、利企惠民”的主旨演讲。主要介绍了广西壮族自治区“数字政府的建设内容、数字政府的管理机制以及数字政府有哪些应用场景来实现惠企利民”。 篇幅限制&#xff0c;部分内容如下&…

AI 助力游戏开发中的常用算法实现

在当今的游戏开发领域&#xff0c;人工智能&#xff08;AI&#xff09;技术的应用已经成为推动行业发展的关键力量。AI不仅能够提升游戏的智能化水平&#xff0c;还能够增强玩家的沉浸感和游戏体验。随着技术的进步&#xff0c;AI在游戏设计、开发和测试中的应用越来越广泛&…

行业商机信息付费小程序系统开发方案

行业商机信息付费小程序系统&#xff0c;主要是整合优质行业资源&#xff0c;实时更新的商机信息。在当今信息爆炸的时代&#xff0c;精准、高效地获取行业商机信息对于企业和个人创业者而言至关重要。 一、使用场景 日常浏览&#xff1a;用户在工作间隙或闲暇时间&#xff0c…

LabVIEW 中 NI Vision 模块的IMAQ Create VI

IMAQ Create VI 是 LabVIEW 中 NI Vision 模块&#xff08;NI Vision Development Module&#xff09;的一个常用 VI&#xff0c;用于创建一个图像变量。该图像变量可以存储和操作图像数据&#xff0c;是图像处理任务的基础。 ​ 通过以上操作&#xff0c;IMAQ Create VI 是构建…

[AI] 深度学习的“黑箱”探索:从解释性到透明性

目录 1. 深度学习的“黑箱”问题&#xff1a;何为不可解释&#xff1f; 1.1 为什么“黑箱”问题存在&#xff1f; 2. 可解释性研究的现状 2.1 模型解释的方法 2.1.1 后置可解释性方法&#xff08;Post-hoc Explanations&#xff09; 2.1.2 内在可解释性方法&#xff08;I…

UnityRenderStreaming使用记录(四)

测试把UnityRenderStreaming部署在docker&#xff0c;剧透一下&#xff0c;嘎了…… 当然webserver运行的妥妥的 那么打包出的程序运行log Mono path[0] /home/unity/Broadcast/Broadcast_Data/Managed Mono config path /home/unity/Broadcast/Broadcast_Data/MonoBleedingE…

javaEE-文件操作和IO-文件

目录 一.什么是文件 1.文件就是硬盘(磁盘)上的文件。 2.计算机中存储数据的设备&#xff1a; 3.硬盘的物理特征 4.树型结构组织和⽬录 5.文件路径 文件路径有两种表示方式&#xff1a; 6.文件的分类 二、java中文件系统的操作 1.File类中的属性&#xff1a; 2.构造方…

SqlSession的线程安全问题源码分析

&#x1f3ae; 作者主页&#xff1a;点击 &#x1f381; 完整专栏和代码&#xff1a;点击 &#x1f3e1; 博客主页&#xff1a;点击 文章目录 SqlSession 是线程安全的吗&#xff1f;为什么说是线程不安全的&#xff1f;事务管理问题 数据库连接的共享问题 一级缓存线程安全问题…

拆解 Web3:探寻去中心化网络的核心密码

近年来&#xff0c;Web3频繁出现在技术讨论中&#xff0c;被视为互联网发展的下一阶段。那么&#xff0c;Web3究竟是什么&#xff1f;它如何区别于传统互联网&#xff0c;又将为未来的网络带来哪些新的可能&#xff1f;本文将从科普的角度拆解Web3的核心密码&#xff0c;揭开它…

《Vue3实战教程》37:Vue3生产部署

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 生产部署​ 开发环境 vs. 生产环境​ 在开发过程中&#xff0c;Vue 提供了许多功能来提升开发体验&#xff1a; 对常见错误和隐患的警告对组件 props / 自定义事件的校验响应性调试钩子开发工具集成 然而&#xff…

Ruby自动化:用Watir库获取YouTube视频链接

引言 Watir&#xff08;Web Application Testing in Ruby&#xff09;是一个强大的工具&#xff0c;它允许开发者使用Ruby语言来自动化控制浏览器。Watir最初被设计用于自动化Web应用测试&#xff0c;但其功能远不止于此。通过Watir&#xff0c;我们可以模拟用户行为&#xff…

[CTF/网络安全] 攻防世界 warmup 解题详析

查看页面源代码&#xff0c;发现source.php 得到一串代码&#xff0c;进行代码审计&#xff1a; <?phpclass emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php"];…