docker服务设置时区(两种方案)
在开始之前先介绍docker的概念,docker可以理解为我们现在见过的应用商店,docker中的各种镜像可以理解为应用商店的各种软件
docker是建立在系统上的,但是docker是美国商店,所以他的时间会比我们现在的时间少了8小时
一般在安装docker后,docker里面的时区会和北京时间差8小时,如果是使用docker内的时间,或者docker里面安装了mysql服务,mysql的now()拿到的时间会比当前时间少了8小时
今天来操作修改为北京时间
当针对对那个容器时,可以这样做
打印容器中显示的当前时间
docker exec -it dcab341440a0 date
进入mysql容器
1 | docker exec -it dcab341440a0 /bin/sh |
时间校对
1 | ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone |
再次查看mysql的时间
以上介绍针对了单个的docker服务设置时区,请记得重启mysql镜像,其中mysql-test为我的镜像名称
使用镜像id操作也是可以的
停止mysql镜像
docker stop mysql-test
启动mysql镜像
docker start mysql-test
下面来对开始使用的镜像开始制作
Dockerfile 中创建时区文件
在构建基础镜像或在基础镜像的基础上制作自定义镜像时,在 Dockerfile 中创建时区文件即可解决单一容器内时区不一致问题,且后续使用该镜像时,将不再受时区问题困扰
1 2 | 执行以下命令,新建 Dockerfile.txt 文件 vim Dockerfile.txt |
1 2 3 4 5 6 7 | 按 i 切换至编辑模式,写入以下内容,配置时区文件 FROM mysql: 5.7 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,保存文件并返回
1 2 | 执行以下命令,构建容器镜像 docker build -t mysql-test: 5.7 -f Dockerfile.txt . |
mysql-test是定义的镜像的名字,5.7代表mysql的版本,记得最后面的点不要去了
1 2 | 使用docker run 用于运行 Docker 镜像并创建容器实例 docker run --name mysql-test -p 3306 : 3306 -e MYSQL_ROOT_PASSWORD= 123456 -d mysql-test: 5.7 |
1 2 | 打印镜像中的时间 docker exec -it mysql-test date |
如果看不懂文字,可以b站搜索"喵星人2070"查看对应的视频
标签:
docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)