Docker(四)容器相关操作及问题处理

news2025/1/12 18:46:54

目录

一、进入、退出容器操作

二、查看Docker 容器的配置文件

方法一:进入docker容器内进行查看

方法二:通过数据卷挂载方式查看配置文件

方法三:使用Docker可视化工具查看配置文件

三、容器与宿主机时间同步

方法一:创建启动容器时共享宿主机的localtime

方法二:复制宿主机的localtime

1、宿主机直接执行命令:将时间同步给指定容器

2、登录容器同步时区timezone

方法三:创建DockerFile文件的时候,自定义该镜像的时间格式及时区


一、进入、退出容器操作

1、进入容器

  1. 首先,通过docker ps命令查看正在运行的容器列表,找到目标容器的 CONTAINER ID 或 NAMES 
  2. 使用以下命令进入到容器内部:
docker exec -it <container_id_or_name> /bin/bash

2、退出容器

操作方式描述
exit使用 exit 命令退出容器
Ctrl+D使用 Ctrl+d 快捷键退出容器

二、查看Docker 容器的配置文件

方法一:进入docker容器内进行查看

  1. 通过 docker exec 命令进入容器内 
  2. 进入容器后,使用ls命令查看容器内的文件和目录结构。
  3. 根据项目的具体目录结构和配置文件位置,使用catvi等命令查看和编辑配置文件
进入容器
docker exec -it <container_id_or_name> /bin/bash

查询目录
ls -l

方法二:通过数据卷挂载方式查看配置文件

  1. 如果配置文件是通过数据卷挂载到容器中的,可以直接通过本地文件系统查看配置文件。
  2. 使用以下命令查看数据卷挂载情况:
docker inspect <container_id_or_name>

在输出结果中找到Mounts字段,查看挂载的数据卷信息。根据挂载路径,在本地文件系统中找到对应的配置文件。

使用文本编辑器或终端命令查看和编辑配置文件。

方法三:使用Docker可视化工具查看配置文件

除了命令行方式外,也可以使用一些Docker可视化工具来方便地查看Docker项目的配置文件和其他信息。常见的Docker可视化工具有 Portainer、Kitematic 等,通过这些工具可以直观地查看容器中的文件和配置信息。 通过以上方法,我们可以方便地查看Docker项目中的配置文件,以便进行必要的调试和修改操作。

三、容器与宿主机时间同步

问题:如果在启动Docker容器的过程中没有单独配置 localtime,很可能造成 Docker 容器时间与主机时间不一致的情况,比如 UTC 和 CST 相差8小时

通过 date 命令:发现两者之间的时间相差了八个小时!
宿主机采用了CST时区,CST是指(China Shanghai Time,东八区时间)
容器采用了UTC时区,UTC是指(Coordinated Universal Time,标准时间) 

宿主机查询时间
[root@VM-4-14-centos ~]# date
Tue May 21 11:32:36 CST 2024


进入容器查询时间
[root@VM-4-14-centos ~]# docker exec -it f77618fa6e0c /bin/bash
root@f77618fa6e0c:/data# date
Tue May 21 03:33:20 UTC 2024

方法一:创建启动容器时共享宿主机的localtime

创建容器时,挂载localtime文件到容器内

创建容器命令 run 时增加相关参数:-v /etc/localtime:/etc/localtime

创建容器的时候指定启动参数,挂载localtime文件到容器内,保证两者所采用的时区是一致的

docker run -d --name <容器ID或者NAME> \
-v /etc/localtime:/etc/localtime \
-p <主机(宿主)端口>:<容器端口> \
<本地镜像仓库下载的镜像名-REPOSITORY>:<需要的版本号-TAG>

 例如:下面redis的启动命令

docker run -d --name redis-5.0.14 -p 6379:6379 -v /etc/localtime:/etc/localtime redis:5.0.14

方法二:复制宿主机的localtime

1、宿主机直接执行命令:将时间同步给指定容器

docker cp:用于容器与主机之间的数据拷贝 

执行命令(作用相同):

docker cp /etc/localtime <容器ID或者NAME>:/etc/

docker cp /usr/share/zoneinfo/Asia/Shanghai <容器ID或者NAME>:/etc/localtime

执行命令
[root@VM-4-14-centos ~]# docker cp /etc/localtime <容器ID或者NAME>:/etc/
 
然后再登陆容器,查看时间,发现已经跟宿主机时间同步了
[root@VM-4-14-centos ~]# docker exec -it <容器ID或者NAME> /bin/bash
root@f3a11c61d13f:/# date                                                                                                                    
Tue May 21 17:16:46 CST 2024

如果遇到问题:出现下面报错信息

Error response from daemon: Error processing tar file(exit status 1): invalid symlink "/etc/localtime" -> "../usr/share/zoneinfo/Asia/Shanghai"

就更换命令

执行命令
[root@VM-4-14-centos ~]# docker cp /usr/share/zoneinfo/Asia/Shanghai <容器ID或者NAME>:/etc/localtime

然后再登陆容器,查看时间,发现已经跟宿主机时间同步了
[root@VM-4-14-centos ~]# docker exec -it <容器ID或者NAME> /bin/bash
root@f3a11c61d13f:/# date                                                                                                                    
Tue May 21 17:16:46 CST 2024

2、登录容器同步时区timezone

注:这种在容器中运行程序的方式,时间不一定能更新过来,有时需重启容器 docker restart  <容器ID或者NAME>

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

方法三:创建DockerFile文件的时候,自定义该镜像的时间格式及时区

在dockerfile文件里添加下面内容

......
FROM tomcat
ENV CATALINA_HOME /usr/local/tomcat
.......
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

保存后,利用 docker build 命令生成镜像使用即可,使用dockerfile创建的镜像的容器改变了容器的时区,
这样不仅保证了容器时间与宿主机时间一致(假如宿主机也是CST),并且像上面使用tomcat作为父镜像的话,JVM的时区也是CST,
这样tomcat的日志信息的时间也是和宿主机一致的,像上面那两种方式只是保证了宿主机时间与容器时间一致,JVM的时区并没有改变,tomcat日志的打印时间依旧是UTC

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

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

相关文章

Windows 7 SP1 安装VMtools -- 安装失败的解决方法

VMware安装Win7 SP1可以参考这篇文章&#xff1a;https://blog.csdn.net/2301_77225571/article/details/139121179?spm1001.2014.3001.5501 1.下载补丁 https://www.catalog.update.microsoft.com/search.aspx?qkb4474419 2.本机远控Win7 【Win】【R】&#xff0c;输入cmd…

同旺科技 FLUKE ADPT 隔离版发布 ---- 3

所需设备&#xff1a; 1、FLUKE ADPT 隔离版 内附链接&#xff1b; 应用于&#xff1a;福禄克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 应用于&#xff1a;福禄克Fluke 15B / 17B / 18B 总体连接&#xff1a; 连接线&#xff0c;根据自己实际需求而定&#xff1b; …

Leetcode刷题笔记4:链表基础2

导语 leetcode刷题笔记记录&#xff0c;本篇博客记录链表基础2部分的题目&#xff0c;主要题目包括&#xff1a; 24 两两交换链表中的节点19 删除链表的倒数第N个节点160 链表相交142 环形链表II 链表的定义 Python中&#xff0c;对于一个链表的节点定义非常简单&#xff0…

容器中的单例集合——List接口的实现类之LinkedList

LinkedList容器类简介 LinkedList容器类也是List接口的一个实现类&#xff0c;但是和之前介绍的ArrayList类、Vector类和Stack类不同&#xff0c;它的底层是通过双向链表结构来实现的。双向链表结构是链表结构的一种&#xff0c;链表结构最大的好处就是大大提高了容器中元素的增…

【Linux】中的常见的重要指令(中)

目录 一、man指令 二、cp指令 三、cat指令 四、mv指令 五、more指令 六、less指令 七、head指令 八、tail指令 一、man指令 Linux的命令有很多参数&#xff0c;我们不可能全记住&#xff0c;我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是 man 语法: m…

吴恩达2022机器学习专项课程C2W2实验:Relu激活函数

目录 代码修改1.Activation2.Dense3.代码顺序 新的内容1.总结上节课内容2.展示ReLU激活函数的好处3.结论 代码案例一代码案例二1.构建数据集2.构建模型 2D1.构建数据集2.模型预测3.扩展 代码修改 1.Activation &#xff08;1&#xff09;需要添加代码from tensorflow.keras i…

webman使用summernote富文本编辑器

前言 Summernote富文本编辑器功能强大&#xff0c;可以直接从word直接复制内容过来而不破坏原有的文档格式&#xff0c;非常适合做商品详情等内容的编辑工具。本文将展示如何在php高性能框架webman中使用summernote编辑器。 下载 去Bootstrap 中文网、Summernote、jQuery官网…

小程序视频怎么保存到本地相册

在快节奏的生活中&#xff0c;小程序已成为我们获取信息和娱乐的重要渠道。但当您遇到那些精彩绝伦的小程序视频&#xff0c;是否曾想过如何将它们保存到本地相册&#xff0c;以便随时回味&#xff1f;无论您是安卓用户还是iPhone用户&#xff0c;本文将为您揭秘如何轻松实现这…

SpringBoot3.x 整合 Spring AI

Spring AI 已经发布了一段时间&#xff0c;虽然推出的时候就被人说只是一个套了 API 的壳&#xff0c;但是作为 Spring 生态的一个开源项目&#xff0c;用它来结合到现有业务系统中还是一个比较好的方案&#xff0c;毕竟像笔者当初为了接入 OpenAI 的 API&#xff0c;还专门学了…

计算机考研|408开始的晚,怎么入手复习?六个月保姆级规划

万事开头难&#xff0c;特别是408 大家在第一遍复习408的时候&#xff0c;基本上都有这个问题&#xff0c;就是复习速度慢&#xff0c;理解成本高&#xff0c;因为数据结构&#xff0c;计算机组成原理这些都是大一大二开始学的内容&#xff0c;等到自己准备考研的时候&#xf…

挖掘抖快销售榜TOP500,这些单品正在引爆夏日市场!

凉鞋、短裤、草席、风扇……一个个夏日“限定”品类在4月就开始冲上抖音、快手两大电商的品类销售榜时&#xff0c;预示着夏日营销在春季已悄悄打响。 在炎炎夏日来临之前&#xff0c;品牌方们都会迎接一次夏日营销“大考”&#xff0c;铆足了劲调动消费者的积极性&#xff0c;…

ASP+ACCESS基于WEB网上留言板

摘要 本文概述了ACCESS数据库及其相关的一些知识&#xff0c;着重论述ACCESS数据库和ASP的中间技术&#xff0c;构建一个简单的留言板。具体的实现是构造一个留言板系统&#xff0c;能很方便的和同学沟通和交流。留言板具有功能强大、使用方便的特点。用户以个人的身份进入&am…

【话题】AIGC行业现在适合进入吗

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 引言AIGC的发展阶段市场需求时机是否合适优势挑战 文章推荐 引言 在撰写关于当前是否适合进入AIGC&#xff08;人工智能生成内容&#xff09;行业的文章之前&#xff0…

LeetCode HOT 100:3. 无重复字符的最长字串

1. 链接 . - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 3. 题解 方法一&#xff1a;滑动窗口 哈希表 根据题意&#xff1a; 1. 遍历所有可能的子串——利用滑动窗口表示子串&#xff1b; 2. 保证滑动窗口内不包含重复字符——需要哈希表map记录字符出现的下标。…

模型评价指标笔记:混淆矩阵+F1+PR曲线+mAP

评价指标 二分类评价指标 混淆矩阵 TP: 正确预测为了正样本&#xff0c;原来也是正样本 FN: 错误的预测为负样本&#xff0c;原来是正样本 (漏报&#xff0c;没有找到正确匹配的数目) FP: 错误的预测为正样本&#xff0c;原来是负样本 (误报&#xff0c;没有的匹配不正确) TN…

解决ModuleNotFoundError: No module named ‘dnnlib‘问题

复现论文采用了大佬的库&#xff0c;这时候运行报错&#xff1a; 尝试采用&#xff1a;pip install dnnlib解决&#xff0c;但下载源中并不包含该依赖。 解决方法&#xff1a; pip install https://github.com/podgorskiy/dnnlib/releases/download/0.0.1/dnnlib-0.0.1-py3-n…

带你看懂认沽期权交易是什么意思?

今天期权懂带你了解带你看懂认沽期权交易是什么意思&#xff1f;认沽期权是期权交易中的一种方向性策略&#xff0c;也被称为“看跌期权”。 认沽期权交易是什么意思&#xff1f; 认沽期权&#xff0c;亦称为看跌期权&#xff0c;是期权交易中的一种类型&#xff0c;它提供给买…

【NVM】持久内存的架构

1 内存数据持久化 1.1 数据持久化 持久内存系统包含如下关键组件&#xff1a;微处理器、连接微处理器内存总线上的持久内存模组&#xff08;Persistent MemoryModule&#xff0c;PMM&#xff09;及持久内存上的非易失性存储介质。 使用持久内存来实现数据的持久化&#xff0c…

基于 Java 的浏览器——JxBrowser使用分享

软件介绍 JxBrowser 是一个基于 Java 的浏览器&#xff0c;它使用 Chromium 引擎来提供高性能的网页渲染和丰富的功能。它支持多种 GUI 框架&#xff0c;如 Swing、JavaFX 和 SWT&#xff0c;使得在 Java 应用程序中嵌入浏览器组件变得简单。 JxBrowser 是一个适用于多种用途…

linux常用软件源码安装-2

jdk、tomcat、Apache、nginx、mysql、redis、maven、nexus安装文档&#xff1a;linux常用软件源码安装 9.sonarqube安装 前置条件&#xff1a;mysql5.6和jdk8 1.下载 官网 2.安装unzip并解压sonarqube&#xff0c;然后移动到/usr/local yum install -y unzip unzip sonarq…