You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

521 lines
16 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!doctype html>
<html class="no-js" lang="tw">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="Eric Chang">
<meta name="description" content="Whats the Worst That Could Happen?">
<meta name="keywords" content="linux,blog,responsive,search,font awesome,pages,posts,multilingual,highlight.js,syntax highlighting,premium,shortcuts">
<meta name="generator" content="Hugo 0.50" />
<title> [筆記] 修改 docker 容器內的時區 - Change Timezone in Docker | MCの飄狂山莊㊣</title>
<meta name="description" content="[筆記] 修改 docker 容器內的時區 - Change Timezone in Docker - Whats the Worst That Could Happen?">
<meta itemprop="name" content="[筆記] 修改 docker 容器內的時區 - Change Timezone in Docker">
<meta itemprop="description" content="[筆記] 修改 docker 容器內的時區 - Change Timezone in Docker - Whats the Worst That Could Happen?">
<meta property="og:title" content="[筆記] 修改 docker 容器內的時區 - Change Timezone in Docker">
<meta property="og:description" content="[筆記] 修改 docker 容器內的時區 - Change Timezone in Docker - Whats the Worst That Could Happen?">
<meta property="og:image" content="https://h.cowbay.org/images/post-default-3.jpg">
<meta property="og:url" content="https://h.cowbay.org/post/change-timezone-in-docker/">
<meta property="og:site_name" content="MCの飄狂山莊㊣">
<meta property="og:type" content="article">
<link rel="icon" type="image/png" href="https://h.cowbay.org/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://h.cowbay.org/favicon-16x16.png" sizes="16x16">
<link rel="stylesheet" href="https://h.cowbay.org/sass/combined.min.a89dfa577f701bffe9659f476ef61241cb2a3452b913e793463b0074a10c0a59.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body class="bilberry-hugo-theme">
<nav class="permanentTopNav">
<div class="container">
<ul class="topnav">
</ul>
<div id="search-box" class="search">
<i class="fa fa-search"></i>
<input id="search" type="text" placeholder="">
</div>
</div>
</nav>
<header>
<div class="container">
<div class="logo">
<a href="/" class="logo">
<img src="https://www.gravatar.com/avatar/e4eb1f8e016ffb73e9889f87d16e15f0?d=mm&size=200" alt="">
<span class="overlay"><i class="fa fa-home"></i></span>
</a>
</div>
<div class="titles">
<h3 class="title"><a href="/">MCの飄狂山莊㊣</a></h3>
<span class="subtitle">Whats the Worst That Could Happen?</span>
</div>
<div class="toggler permanentTopNav">
<i class="fa fa-bars" aria-hidden="true"></i>
</div>
</div>
</header>
<div class="main container">
<div class="article-wrapper u-cf single">
<a class="bubble" href="/post/change-timezone-in-docker/">
<i class="fa fa-fw fa-pencil"></i>
</a>
<article class="default article">
<div class="featured-image">
<a href="/post/change-timezone-in-docker/">
<img src="/images/post-default-3.jpg" alt="">
</a>
</div>
<div class="content">
<h3><a href="/post/change-timezone-in-docker/">[筆記] 修改 docker 容器內的時區 - Change Timezone in Docker</a></h3>
<div class="meta">
<span class="date moment">2019-05-21</span>
<span class="categories">
<a href="/categories/%E7%AD%86%E8%A8%98">筆記</a>
</span>
<span class="author"><a href="/author/eric-chang">Eric Chang</a></span>
</div>
<p>最近一直在玩一些docker不過老是會碰到歪果扔寫的東西時區都不一致</p>
<p>有的用 UTC有的用localtime就是沒碰到用 Asia/Taipei 的&hellip;.</p>
<p>
之前因為沒有要上線,所以這個問題可以當烏龜忽略過去</p>
<p>不過測試了一陣子的librenms 打算正式上線了</p>
<p>又不想重作一次,導致累積滿久的圖表資料都消失</p>
<p>所以開始找尋方法來面對這個問題</p>
<p>本來看了這篇 <a href="https://www.arthurtoday.com/2016/07/how-to-setup-docker-container-timezone-host.html">https://www.arthurtoday.com/2016/07/how-to-setup-docker-container-timezone-host.html</a></p>
<p>想說來試試看好了</p>
<p>不過呢一開始依照這篇的說明在docker-compose.yml 內加入</p>
<pre><code>web:
image: jarischaefer/docker-librenms
hostname: librenms
ports:
- &quot;8001:80&quot;
- &quot;44301:443&quot;
volumes:
- /etc/hosts:/etc/hosts
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=&quot;Asia/Taipei&quot;
</code></pre>
<p>重起之後沒作用 0rz</p>
<p>於是我又加入了</p>
<pre><code> volumes:
- /etc/hosts:/etc/hosts
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
</code></pre>
<p>結果啟動直接報錯誤了..</p>
<p>看一下 log</p>
<pre><code>May 21 09:09:12 bbs012 syslog-ng[12]: syslog-ng starting up; version='3.13.2'
*** Running /etc/my_init.d/librenms_100_cron...
*** Running /etc/my_init.d/librenms_101_ssl...
*** Running /etc/my_init.d/librenms_102_ipv6...
*** Running /etc/my_init.d/librenms_103_timezone...
/etc/my_init.d/librenms_103_timezone: line 4: /etc/timezone: Read-only file system
*** /etc/my_init.d/librenms_103_timezone failed with status 1
*** Killing all processes...
</code></pre>
<p>所以這個檔案不能改成 ro 不過如果不能唯獨那啟動docker的時候應該會被蓋掉吧</p>
<p>先來看一下那個 librenms_103_timezone 在幹什麼好了</p>
<pre><code>docker exec -it librenms_web_1 cat /etc/my_init.d/librenms_103_timezone
#!/bin/bash -e
if [ -n &quot;$TZ&quot; ]; then
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &amp;&amp; echo $TZ &gt; /etc/timezone
if [ ! -f /etc/php/7.3/cli/conf.d/100-timezone.ini ]; then
echo &quot;date.timezone=$TZ&quot; &gt; /etc/php/7.3/cli/conf.d/100-timezone.ini
fi
if [ ! -f /etc/php/7.3/fpm/conf.d/100-timezone.ini ]; then
echo &quot;date.timezone=$TZ&quot; &gt; /etc/php/7.3/fpm/conf.d/100-timezone.ini
fi
fi
2019-05-21 17:33:46 [mini@s013 librenms]$
</code></pre>
<p>OK ,這裡的確是用傳進來的 $TZ 在設定timezone 沒錯</p>
<p>可是我前面已經改過 docker-compose.yml</p>
<p>有把 TZ帶進來了啊再來確認一下</p>
<pre><code>docker exec -it librenms_web_1 cat /etc/timezone
&quot;Asia/Taipei&quot;
</code></pre>
<p>咦,沒錯啊? 欸斗,等等,那兩個 &ldquo;&rdquo; 有點刺眼&hellip;</p>
<p>跟本機的比對一下看看</p>
<pre><code>2019-05-21 17:36:20 [mini@s013 librenms]$ docker exec -it librenms_web_1 cat /etc/timezone
&quot;Asia/Taipei&quot;
2019-05-21 17:36:23 [mini@s013 librenms]$ cat /etc/timezone
Asia/Taipei
2019-05-21 17:37:10 [mini@s013 librenms]$
</code></pre>
<p>嗯,的確,本機的格式的確不包含那兩個 &ldquo;&rdquo;</p>
<p>那就改掉再來試試看吧&hellip;改成底下這樣</p>
<pre><code> environment:
- TZ=Asia/Taipei
</code></pre>
<p>重起 docker ,然後確認時間看看</p>
<pre><code>2019-05-21 17:39:00 [mini@s013 librenms]$ docker-compose down;docker-compose up -d
Stopping librenms_web_1 ... done
Stopping librenms_mysql_1 ... done
Removing librenms_web_1 ... done
Removing librenms_mysql_1 ... done
Removing network librenms_default
Creating network &quot;librenms_default&quot; with the default driver
Creating librenms_mysql_1 ... done
Creating librenms_web_1 ... done
2019-05-21 17:39:22 [mini@s013 librenms]$ docker exec -it librenms_web_1 cat /etc/timezone
Asia/Taipei
2019-05-21 17:39:42 [mini@s013 librenms]$ docker exec -it librenms_web_1 date
Tue May 21 17:39:48 CST 2019
2019-05-21 17:39:48 [mini@s013 librenms]$
</code></pre>
<p>OK ,果然沒有問題了!</p>
<p>雖然是小小的&rdquo;&rdquo; ,還是要特別注意啊!</p>
</div>
<div class="footer">
<div class="tags">
<i class="fa fa-tags"></i>
<div class="links">
<a href="/tags/docker">docker</a>
<a href="/tags/timezone">timezone</a>
</div>
</div>
</div>
</article>
</div>
<div id="disqus_thread"></div>
<script type="application/javascript">
var disqus_config = function () {
};
(function() {
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) {
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.';
return;
}
var d = document, s = d.createElement('script'); s.async = true;
s.src = '//' + "h-cowbay-org-1" + '.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
<footer>
<div class="container">
<div class="recent-posts">
<strong></strong>
<ul>
<li>
<a href="/post/change-timezone-in-docker/">[筆記] 修改 docker 容器內的時區 - Change Timezone in Docker</a>
</li>
<li>
<a href="/post/transfer-file-content-using-xclip-in-terminal/">Transfer File Content Using Xclip in Terminal</a>
</li>
<li>
<a href="/post/inx-collect-detail-hardware-info/">[筆記] inxi 蒐集詳盡的硬體資訊 / inxi Collect Detail Hardware Info</a>
</li>
<li>
<a href="/post/log-all-bash-commands/">[筆記] 紀錄所有下過的指令、時間 / Log All commands with timestamp</a>
</li>
<li>
<a href="/post/fix-zpool-device-busy-using-dmsetup/">[筆記] 解決無法建立zpool 的錯誤 / Fix Zpool Device Busy Using dmsetup</a>
</li>
<li>
<a href="/post/transfer-cent62-using-rsync/">[筆記] 用rsync 移轉 centos 6.2的老機器 Transfer Cent6.2 using rsync</a>
</li>
<li>
<a href="/post/command_to_test_main_ssl/">[筆記] 測試mail server 的SSL憑證的指令 Command to test mailserver SSL</a>
</li>
</ul>
</div>
<div class="categories">
<a href="/categories/"><strong></strong></a>
<ul>
<li>
<a href="/categories/%E7%AD%86%E8%A8%98">筆記 (19)</a>
</li>
<li>
<a href="/categories/linux">Linux (1)</a>
</li>
<li>
<a href="/categories/ps">Ps (1)</a>
</li>
<li>
<a href="/categories/%E7%A2%8E%E5%BF%B5">碎念 (1)</a>
</li>
<li>
<a href="/categories/%E7%BE%A4%E6%9A%89">群暉 (1)</a>
</li>
</ul>
</div>
<div class="right">
<div class="external-profiles">
<strong></strong>
<a href="https://www.facebook.com/mariahchang" target="_blank"><i class="fa fa-facebook-adblock-proof"></i></a>
<a href="https://twitter.com/changchichung" target="_blank"><i class="fa fa-twitter-adblock-proof"></i></a>
<a href="https://github.com/changchichung" target="_blank"><i class="fa fa-github"></i></a>
</div>
</div>
</div>
</footer>
<div class="credits">
<div class="container">
<div class="copyright">
<a href="https://github.com/Lednerb" target="_blank">
&copy;
2017
by Lednerb
</a>
</div>
<div class="author">
<a href="https://github.com/Lednerb/bilberry-hugo-theme" target="_blank">Bilberry Hugo Theme</a>
</div>
</div>
</div>
<script type="application/javascript">
var doNotTrack = false;
if (!doNotTrack) {
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-138954876-1', 'auto');
ga('send', 'pageview');
}
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
<script type="text/javascript" src="https://h.cowbay.org/js/externalDependencies.39c47e10e241eae2947b3fe21809c572.js" integrity="md5-OcR&#43;EOJB6uKUez/iGAnFcg=="></script>
<script type="text/javascript" src="https://h.cowbay.org/js/theme.ff50ae6dc1bfc220b23bf69dbb41b54e.js" integrity="md5-/1CubcG/wiCyO/adu0G1Tg=="></script>
<script>
$(".moment").each(function() {
$(this).text(
moment( $(this).text() )
.locale( "tw" )
.format('LL')
);
});
$(".footnote-return sup").html("");
</script>
<script>
var client = algoliasearch("2XL0P8XDCY", "4ef65b37b627bb886b46c34a10e63aa6");
var index = client.initIndex("h_cowbay_org");
$('#search').autocomplete({ hint: false, autoselect: true, debug: false },
[
{
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 10 }),
displayKey: function(suggestion) {
return suggestion.title || suggestion.author
},
templates: {
suggestion: function(suggestion) {
return "<span class='entry " + suggestion.type + "'>"
+ "<span class='title'>" + suggestion.title + "</span>"
+ "<span class='fa fa-fw " + suggestion.iconClass + "'></span>"
+ "</span>"
;
},
empty: function() {
return "<span class='empty'></span>"
},
footer: function() {
return '<div class="branding">Powered by <img src="https:\/\/h.cowbay.org\/dist\/algolia-logo-light.svg" /></div>'
}
},
}
])
.on('autocomplete:selected', function(event, suggestion, dataset) {
window.location = (suggestion.url);
})
.keypress(function (event, suggestion) {
if (event.which == 13) {
window.location = (suggestion.url);
}
});
</script>
</body>
</html>