设置 Docker 容器时间与宿主机的一致

通过在创建Docker容器时添加"-v /etc/localtime:/etc/localtime:ro"参数,可以实现容器时间与宿主机的同步。如果不使用此参数,容器将使用默认时区,可以通过备份并替换容器内的/etc/localtime文件来手动同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设置 Docker 容器时间与宿主机的一致

在创建 Docker 容器时,加上 “-v /etc/localtime:/etc/localtime:ro” 参数,让容器使用宿主机的时间,容器时间与宿主机时间同步。比如创建一个 Tomcat 容器:
# docker run --name tomcat8080 -v /etc/localtime:/etc/localtime:ro -d -p 8686:8686 tomcat
054f35167ec52b14952bcddeb8d1ae3f2ed508569d1e79095687a211115f5149
其中 “-v /etc/localtime:/etc/localtime:ro” 表示让容器使用宿主机的时间时区。
-v 标签为容器添加 volume,后面的 :ro 指定该 volume 为只读。
注意:如果容器中指定的挂载目录存在相同的文件时,会被宿主机覆盖掉。

如果没加 “-v /etc/localtime:/etc/localtime:ro” 参数,容器就使用了默认的时区,时间就可能与宿主机的不一致,这种情况不需重建容器也是有解决办法的。

查看宿主机日期:
# date 
Tue Apr  9 15:26:53 CST 2019

查看宿主机 /etc/localtime 文件:
# more /etc/localtime 
TZif2
CST-8

进入容器:
# docker  exec -it  <容器ID或者容器NAME>  /bin/bash

查看容器的日期:
# date
Tue Apr  9 7:27:30 CST 2019
比宿主机晚了8小时。

备份容器的 /etc/localtime 文件:
# cp /etc/localtime  /etc/localtime.bak0
然后退出容器。

拷贝宿主机的 /etc/localtime 文件到容器的 /etc 目录下:
# docker cp /etc/localtime <容器ID或者容器NAME>:/etc/
然后重新启动容器。

再进入容器:
# docker  exec -it  <容器ID或者容器NAME>  /bin/bash

查看容器的日期:
# date
Tue Apr  9 15:28:35 CST 2019
时间已与宿主机同步。

顺便查看一下容器的 localtime 文件:
# ls /etc/localtime*
/etc/localtime  /etc/localtime.bak0
localtime.bak0 是事先备份的 localtime 文件。
localtime文件内容:
# more   /etc/localtime
TZif2
CST-8
容器的 localtime 文件内容与宿主机的 localtime 文件一致,说明拷贝成功。

Ok,完毕!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值