在 Docker 中设置时区
Docker Hub 中的官方镜像,一般都默认设置为 UTC 时间。而我们位于东八区,在启动容器或构建自己的镜像时,往往需要对时区进行设置。根据基础镜像的不同,设置时区的方法也有所区别。
基于 Debian 镜像
由于 Debian 镜像中已经包含了 tzdata,因此设置时区的方法比较简单,只需添加环境变量 TZ 即可。我们可以通过启动一个 Debian 容器,运行其中的 date 命令来验证。
root@677e5c1c1e19:/# date
Sat Jan 12 10:25:27 UTC 2019
root@677e5c1c1e19:/# export TZ=Asia/Shanghai
root@677e5c1c1e19:/# date
Sat Jan 12 18:25:44 CST 2019
当需要在容器中使用本地时间的时候,只需在启动容器时,添加参数-e TZ=Asia/Shanghai即可。
如果是构建 Docker 镜像,可以这样写:
FROM debian:stretchENV TZ=Asia/Shanghai
基于 Alpine 镜像
与 Debian 镜像不同,Alpine 镜像中并没有包含 tzdata,所以只设置 TZ 环境变量并不能达到我们想要的效果,因此需要安装 tzdata。
/ # date
Sat Jan 12 10:37:07 UTC 2019
/ # export TZ=Asia/Shanghai
/ # date
Sat Jan 12 10:37:34 UTC 2019
/ # apk add tzdata
......
......
/ # date
Sat Jan 12 18:38:18 CST 2019
由于无法直接通过环境变量设置时区,因此需要在容器中使用本地时间时,只能先基于原有的镜像构建自己的镜像,在启动容器时使用自己构建的镜像即可。
FROM alpine:3.9ENV TZ=Asia/ShanghaiRUN apk update \&& apk add tzdata \&& echo "${TZ}" > /etc/timezone \&& ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \&& rm /var/cache/apk/*
基于 Ubuntu 镜像
Ubuntu 镜像中也没有包含 tzdata,设置时区的方法与 Alpine 镜像相似。
root@2a33fc02c099:/# date
Wed Mar 6 13:12:44 UTC 2019
root@2a33fc02c099:/# export TZ=Asia/Shanghai
root@2a33fc02c099:/# date
Wed Mar 6 13:13:08 Asia 2019
root@2a33fc02c099:/# echo "${TZ}" > /etc/timezone
root@2a33fc02c099:/# ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime
root@2a33fc02c099:/# apt update
......
......
root@2a33fc02c099:/# apt install -y tzdata
......
......
root@2a33fc02c099:/# date
Wed Mar 6 21:15:52 CST 2019
写成 Dockerfile 如下:
FROM ubuntu:bionicENV TZ=Asia/ShanghaiRUN echo "${TZ}" > /etc/timezone \&& ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \&& apt update \&& apt install -y tzdata \&& rm -rf /var/lib/apt/lists/*
在 Docker 中设置时区相关推荐
- PHP设定美国东部时区,PHP中设置时区方法总结
方法一,在php页面设置时区 在页面最前面加上下面应用一种都是可以的 date_default_timezone_set用法如下 date_default_timezone_set (PHP 5 &g ...
- 解决自己在docker中设置redis密码不生效的问题
解决自己在docker中设置redis密码不生效的问题 配置文件官网下载 下载解压后得到redis.conf文件 我的redis.conf文件 网盘 提取码:1szk 正确的在redis启动redis ...
- php中date设置北京时区,PHP中设置时区方法小结
PHP代码中的时间判断语句出了点问题,问题出在PHP的时区设置上,PHP所取的时间默认是格林威治标准时间,所以和北京时间相差8小时.找到原因后,在网上搜索到了一些关于PHP的时区设置方法:1.修改ph ...
- mysql中设置时区
首先,查看下mysql中使用的时区 show variables like '%time_zone%'; 测试查看下时间 select now(); 2018-10-24 15:49:17 这个应该是 ...
- 【linux】 redhat中设置时区
前提 redhat7.0 设置时区:Asia/Shanghai. 查看时区 # timedatectl status ---------------------------Local time: We ...
- MySql中设置时区为东八区
在mysqld下新增配置 default-time-zone = '+8:00' 然后重启mysql服务:windows下管理员身份启动cmd ,net stop mysql : net star ...
- php 配置文件设置时区_PHP中设置时区方法
一直以来,发现iProber.php探针显示的服务器时区有问题,尽管已经将服务器时区设置为Asia/Shanghai,仍然无法解决这个问题.经过参阅网络上的相关文章,才发现问题出在PHP的时区设置上, ...
- springcloud+fastdfs在docker中设置防盗链
docker容器中启动fastdfs tracker服务和storage服务 这里下载的是 delron/fastdfs 其中内置了nginx设置 进入storage容器里 /etc/fdfs/ht ...
- 在 docker 中设置容器自动启动
1.使用 docker run 命令运行时 增加 --restart=always 参数即可 2.使用 docker-compose 命令运行时 在 yml 文件中,需要自启动的 service 下 ...
最新文章
- java·环境变量、基本数据类型
- 微信小程序之设置不同的顶部导航栏名称
- Poisson Image Editing 泊松融合 matlab代码完整
- [转]android 获取手机GSM/CDMA信号信息
- S​D​I​与​A​S​I 接口详解介绍
- ubuntu中pycharm无法输入汉字
- 我是怎么定义微服务平台?
- Zen coding
- TIA博途_如何更新程序中的指令版本和CPU固件版本?
- 后台管理进程GameMaster
- Unable to create tempDir. java.io.tmpdir is set to C:\Users\ADMINI~1\AppData
- REASON: Ambari Server java process has stopped. Please check the logs for more information.
- 手机怎么打开f12_如何使用浏览器的F12调试页面?
- 知识点滴 - X射线和伽马射线有什么区别?
- Ubuntu出现device not managed 如何解决?
- 统计学 计算机论文发表,数学科学学院博士生史册在统计学顶级期刊
《Annals of Statistics》上发表论文...
- Axure 9元件使用
- nvme固态硬盘安装win10填坑记
- QQ2011多开的实现
- 抖音账号和视频都没问题,为什么投放不了DOU+呢?丨国仁网络资讯