docker服务设置时区(两种方案)

发布时间 2023-11-19 00:50:34作者: 不忘初心2021

在开始之前先介绍docker的概念,docker可以理解为我们现在见过的应用商店,docker中的各种镜像可以理解为应用商店的各种软件

docker是建立在系统上的,但是docker是美国商店,所以他的时间会比我们现在的时间少了8小时

一般在安装docker后,docker里面的时区会和北京时间差8小时,如果是使用docker内的时间,或者docker里面安装了mysql服务,mysql的now()拿到的时间会比当前时间少了8小时

今天来操作修改为北京时间

当针对对那个容器时,可以这样做

 打印容器中显示的当前时间

docker exec -it dcab341440a0 date

 进入mysql容器

docker exec -it dcab341440a0 /bin/sh

时间校对

ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone

  

 

 再次查看mysql的时间

 

 以上介绍针对了单个的docker服务设置时区

下面来对开始使用的镜像开始制作

Dockerfile 中创建时区文件

在构建基础镜像或在基础镜像的基础上制作自定义镜像时,在 Dockerfile 中创建时区文件即可解决单一容器内时区不一致问题,且后续使用该镜像时,将不再受时区问题困扰

 

执行以下命令,新建 Dockerfile.txt 文件
vim Dockerfile.txt

  

按 i 切换至编辑模式,写入以下内容,配置时区文件
FROM mysql
RUN rm -f /etc/localtime \
    && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone \
    && echo "[mysqld]" > /etc/my.cnf \
    && echo "default-time-zone=+08:00" >> /etc/my.cnf

  请务必检查/etc/my.cnf文件存在

Esc,输入 :wq,保存文件并返回

执行以下命令,构建容器镜像
docker build -t mysql-test:5.7 -f Dockerfile.txt .

  

 

mysql-test是定义的镜像的名字,5.7代表mysql的版本,记得最后面的点不要去了

使用docker  run 用于运行 Docker 镜像并创建容器实例
docker run --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql-test:5.7

  

 

打印镜像中的时间
docker exec -it mysql-test date

  

 本教程到此结束