Để thay đổi múi giờ của container Podman, bạn có thể làm theo các bước sau đây:
1. Sử dụng Tùy chọn -v
hoặc --volume
để Mount File timezone vào Container.
Bạn có thể mount file timezone từ host vào container bằng cách sử dụng tùy chọn -v
hoặc --volume
khi khởi động container. Ví dụ, để set múi giờ của container thành UTC+7, bạn có thể làm như sau:
podman run -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro <image-name>
2. Cài Đặt và Thiết Lập Timezone Bên Trong Container.
Nếu bạn không muốn mount trực tiếp, bạn cũng có thể thay đổi múi giờ bên trong container bằng cách cài đặt tzdata
và thiết lập timezone:
podman run -it <image-name> /bin/bash
Sau đó, trong container:
# Cài đặt tzdata
apt-get update && apt-get install -y tzdata
# Thiết lập múi giờ thành Asia/Ho_Chi_Minh (UTC+7)
ln -sf /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime
echo "Asia/Ho_Chi_Minh" > /etc/timezone
Nếu bạn găp lỗi dưới tức là bạn đang gặp vấn đề với các dependency không được thỏa mãn khi cài đặt tzdata
trong container. Để giải quyết vấn đề này, bạn cần chạy lệnh apt --fix-broken install
để tự động sửa các dependency bị thiếu.
apt-get shell> update && apt-get install -y tzdata
^C
root@SOC-CEPH-PUB-INFRAS-BACKUP-15:~# podman exec -it ceph-dailybackup_pubc06_1 bash
root@SOC-OPS-CEPH-PUB-C04-BACKUP-071:/# export http_proxy=http://10.10.16.199:3128
export https_proxy=http://10.10.16.199:3128
root@SOC-OPS-CEPH-PUB-C04-BACKUP-071:/# apt-get update && apt-get install -y tzdata
Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]
Hit:2 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]
Get:4 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1092 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [2542 kB]
Get:7 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [2469 kB]
Get:8 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1391 kB]
Get:9 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [1917 kB]
Get:10 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [2183 kB]
Get:11 http://security.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [44.7 kB]
Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [51.5 kB]
Get:13 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [31.8 kB]
Get:14 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [81.0 kB]
Fetched 12.2 MB in 11s (1113 kB/s)
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
dbus : Depends: libapparmor1 (>= 2.8.94) but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
Dưới đây là các bước cụ thể để khắc phục:
Trước tiên, hãy chạy lệnh sau để sửa các dependency bị thiếu:
apt-get update && apt-get --fix-broken install
Sau khi hoàn tất việc sửa các dependency, bạn có thể tiếp tục cài đặt tzdata
:
apt-get install -y tzdata
Ví dụ hoàn chỉnh từ đầu.
Dưới đây là ví dụ hoàn chỉnh từ việc vào container, thiết lập proxy và chạy các lệnh cần thiết:
shell> podman exec -it ceph-dailybackup_pubc06_1 bash
# Trong container nếu bạn có proxy thì hãy trỏ proxy như bình thường.
export http_proxy=http://10.10.16.199:3128
export https_proxy=http://10.10.16.199:3128
apt-get update && apt-get --fix-broken install
apt-get install -y tzdata
Sau khi tzdata
được cài đặt, bạn có thể thiết lập múi giờ thành Asia/Ho_Chi_Minh (UTC+7) bằng các lệnh sau:
ln -sf /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime
echo "Asia/Ho_Chi_Minh" > /etc/timezone
Cuối cùng, kiểm tra múi giờ để đảm bảo rằng nó đã được thay đổi chính xác:
shell> date
Tue Jun 18 12:29:38 AM +07 2024
Lưu ý, nếu trong quá trình cài đặt bạn nhận được lời nhắc chọn vùng mà múi giờ như dưới, thì bạn có thể bỏ qua bước ln -sf /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime
nhé.
shell> apt-get install -y tzdata
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
dbus gir1.2-glib-2.0 libapparmor1 libdbus-1-3 libgirepository-1.0-1 networkd-dispatcher python3-dbus python3-gi
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
tzdata
0 upgraded, 1 newly installed, 0 to remove and 89 not upgraded.
Need to get 348 kB of archives.
After this operation, 3994 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 tzdata all 2024a-0ubuntu0.22.04 [348 kB]
Fetched 348 kB in 0s (21.3 MB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package tzdata.
(Reading database ... 17517 files and directories currently installed.)
Preparing to unpack .../tzdata_2024a-0ubuntu0.22.04_all.deb ...
Unpacking tzdata (2024a-0ubuntu0.22.04) ...
Setting up tzdata (2024a-0ubuntu0.22.04) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78.)
debconf: falling back to frontend: Readline
Configuring tzdata
------------------
Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities, representing the time zones in which they are located.
1. Africa 2. America 3. Antarctica 4. Australia 5. Arctic 6. Asia 7. Atlantic 8. Europe 9. Indian 10. Pacific 11. US 12. Etc
Geographic area: 6
Please select the city or region corresponding to your time zone.
1. Aden 7. Ashgabat 13. Barnaul 19. Chongqing 25. Dushanbe 31. Hong_Kong 37. Jerusalem 43. Khandyga 49. Macau 55. Novokuznetsk 61. Pyongyang 67. Sakhalin 73. Taipei 79. Tokyo 85. Vientiane
2. Almaty 8. Atyrau 14. Beirut 20. Colombo 26. Famagusta 32. Hovd 38. Kabul 44. Kolkata 50. Magadan 56. Novosibirsk 62. Qatar 68. Samarkand 74. Tashkent 80. Tomsk 86. Vladivostok
3. Amman 9. Baghdad 15. Bishkek 21. Damascus 27. Gaza 33. Irkutsk 39. Kamchatka 45. Krasnoyarsk 51. Makassar 57. Omsk 63. Qostanay 69. Seoul 75. Tbilisi 81. Ujung_Pandang 87. Yakutsk
4. Anadyr 10. Bahrain 16. Brunei 22. Dhaka 28. Harbin 34. Istanbul 40. Karachi 46. Kuala_Lumpur 52. Manila 58. Oral 64. Qyzylorda 70. Shanghai 76. Tehran 82. Ulaanbaatar 88. Yangon
5. Aqtau 11. Baku 17. Chita 23. Dili 29. Hebron 35. Jakarta 41. Kashgar 47. Kuching 53. Muscat 59. Phnom_Penh 65. Rangoon 71. Singapore 77. Tel_Aviv 83. Urumqi 89. Yekaterinburg
6. Aqtobe 12. Bangkok 18. Choibalsan 24. Dubai 30. Ho_Chi_Minh 36. Jayapura 42. Kathmandu 48. Kuwait 54. Nicosia 60. Pontianak 66. Riyadh 72. Srednekolymsk 78. Thimphu 84. Ust-Nera 90. Yerevan
Time zone: 30
Current default time zone: 'Asia/Ho_Chi_Minh'
Local time is now: Tue Jun 18 00:21:47 +07 2024.
Universal Time is now: Mon Jun 17 17:21:47 UTC 2024.
Run 'dpkg-reconfigure tzdata' if you wish to change it.
3. Sử dụng Biến Môi Trường TZ
.
Một cách khác để thiết lập múi giờ là sử dụng biến môi trường TZ
khi khởi động container:
podman run -e TZ=Asia/Ho_Chi_Minh <image-name>
Tổng Kết.
- Mount file timezone từ host vào container: Cách này đơn giản và không cần thay đổi bên trong container.
- Cài đặt và thiết lập timezone bên trong container: Phù hợp nếu bạn muốn thay đổi cấu hình bên trong container.
- Sử dụng biến môi trường TZ: Dễ dàng thiết lập và thay đổi theo yêu cầu.
Hy vọng những cách trên sẽ giúp bạn thiết lập múi giờ cho container Podman của mình!