容器化 sql server 时间修改
docker sqlserver时间修改
问题背景
为了方便直接使用官方sqlserver镜像启动的数据库,出现了时间不对的问题,中午吃饭午休的时间对问题进行对问题的一顿分析并进行了相关搜索
解决方法1
#删除容器重新指定变量启动
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' \
-p 1433:1433 --name sql1 \
-e 'TZ=Asia/Shanghai'\
-d mcr.microsoft.com/mssql/server:2017-latest
解决方法2
#进入容器
docker exec -it sqlserver bash
#修改时间
apt update #为了安装tzdata
apt install tzdata #为了获取/usr/share/zoneinfo
rm /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date #显示为当前时区时间
#注:有些应用从TZ中获取时区,所以还要加上 ENV
TZ="Asia/Shanghai"
#tzselect 命令找到正确的时区值
tzselect
#如果选择中国上海 分别输入 4 9 1 1
root@0fd41ac5858e:/# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
1) Africa
2) Americas
3) Antarctica
4) Asia
5) Atlantic Ocean
6) Australia
7) Europe
8) Indian Ocean
9) Pacific Ocean
10) coord - I want to use geographical coordinates.
11) TZ - I want to specify the time zone using the Posix TZ format.
#? 4
Please select a country whose clocks agree with yours.
1) Afghanistan 18) Israel 35) Palestine
2) Armenia 19) Japan 36) Philippines
3) Azerbaijan 20) Jordan 37) Qatar
4) Bahrain 21) Kazakhstan 38) Russia
5) Bangladesh 22) Korea (North) 39) Saudi Arabia
6) Bhutan 23) Korea (South) 40) Singapore
7) Brunei 24) Kuwait 41) Sri Lanka
8) Cambodia 25) Kyrgyzstan 42) Syria
9) China 26) Laos 43) Taiwan
10) Cyprus 27) Lebanon 44) Tajikistan
11) East Timor 28) Macau 45) Thailand
12) Georgia 29) Malaysia 46) Turkmenistan
13) Hong Kong 30) Mongolia 47) United Arab Emirates
14) India 31) Myanmar (Burma) 48) Uzbekistan
15) Indonesia 32) Nepal 49) Vietnam
16) Iran 33) Oman 50) Yemen
17) Iraq 34) Pakistan
#? 9
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time
#? 1
The following information has been given:
China
Beijing Time
Therefore TZ='Asia/Shanghai' will be used.
Local time is now: Fri Aug 21 14:35:26 CST 2020.
Universal Time is now: Fri Aug 21 06:35:26 UTC 2020.
Is the above information OK?
1) Yes
2) No
#? 1
You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai
#最后重启容器 在重新检查日志时间
docker restart sqlserver
docker logs -f sqlserver
#重新检查sqlserver时间
select SysDateTime()
补充
Linux 修改本机时区
echo 'Asia/Shanghai' >/etc/timezone
参考文档
官方操作手册
ubuntu16.04 docker 时区设置问题
docker ubuntu16.04 设置时区
SQL Server 的本地时间和UTC时间
/etc/localtime和/etc/timezone区别