-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.xml
127 lines (118 loc) · 8.33 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Jimkipedia</title>
<link>/</link>
<description>Jimkipedia</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Sat, 15 Aug 2020 14:17:58 +0900</lastBuildDate>
<atom:link href="/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Job for docker.service failed</title>
<link>/posts/docker-service-failed/</link>
<pubDate>Sat, 15 Aug 2020 14:17:58 +0900</pubDate>
<guid>/posts/docker-service-failed/</guid>
<description><ol>
<li><code>/etc/docker/daemon.json</code> 에서 엔진의 소켓 값을 설정할 수 있음.</li>
<li><code>/lib/systemd/system/docker.service</code> 에서 엔진의 소켓 값을 설정할 수 있음.</li>
<li>위의 두 설정 값이 겹치게 되면 도커 엔진을 실행할 수 없게 됨.</li>
</ol>
<blockquote>
<p>이 글은 서버 도커 설정 문제를 해결하며 알게 된 내용들을 정리한 글입니다.</p>
</blockquote>
<h1 id="도커가-안-켜져">도커가 안 켜져!</h1>
<p>얼마 전, 방치해뒀던 한 서버의 도커가 올바르게 동작하지 않는 문제가 발생했습니다.</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-text" data-lang="text">$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
Is the docker daemon running?
$ sudo systemctl start docker.service
Job for docker.service failed because the control process exited with error code.
See &#34;systemctl status docker.service&#34; and &#34;journalctl -xe&#34; for details.
</code></pre></div><p>도커 데몬이 올바르게 시작되지 않는 문제가 발생한 것이었는데, 오랫동안 만지지 않고 있던 서버라서
문제가 발생한 원인은 알 수 없었습니다.</p>
<h1 id="조사를-해보자">조사를 해보자</h1>
<p>에러 메시지에 나온대로 <code>systemctl status docker.service</code>와 <code>journalctl -xe</code>를 통해서 로그를 확인 해 본 결과
아래와 같은 내용을 확인할 수 있었습니다.</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-text" data-lang="text">$ systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: failed (Result: start-limit-hit) since 날짜
Docs: https://docs.docker.com
Process: 24454 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
Main PID: 24454 (code=exited, status=1/FAILURE)
</code></pre></div><p><code>journalctl -xe</code>의 경우에는 로그의 양이 많아서 도커 관련 로그만 따로 뽑아서 보면 다음과 같았습니다.
다만, 로그가 너무 길어서 처음에는 그냥 지나쳐 버리고 말았습니다.</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-text" data-lang="text">$ sudo journalctl -b -u docker.service
unable to configure the Docker daemon with file /etc/docker/daemon.json:
the following directives are specified both as a flag and in the configuration file:
hosts: (from flag: [fd://], from file: [tcp://0.0.0.0:2375 unix:///var/run/docker.sock])
</code></pre></div><p>즉, 실행시에 <code>hosts</code> 값이 실행 시점에 flag 값과 설정 파일에 중복 되어 있어서 발생하는 문제라는 뜻입니다.
로그를 살펴보면 아래의 항목들을 찾아볼 수 있습니다.</p>
<ul>
<li>from flag: fd://</li>
<li>from file: tcp://0.0.0.0:2375, unix:///var/run/docker.sock</li>
</ul>
<p>여기서 flag는 찾아본 결과 <code>/lib/systemd/system/docker.service</code>의
<code>ExecStart</code> 값으로 설정되고
file은 <code>/etc/docker/daemon.json</code> 파일에서 설정됩니다.</p>
<p>따라서 두 설정 값 중에 하나만 사용할 수 있도록 수정해주면 문제 없이 도커 엔진을 실행시킬 수 있게
됩니다.</p>
<h1 id="해결">해결!</h1>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-text" data-lang="text"># /etc/docker/daemon.json
{&#34;hosts&#34;: [&#34;tcp://0.0.0.0:2375&#34;, &#34;unix:///var/run/docker.sock&#34;]}
# /lib/systemd/system/docker.serivce
[Service]
...
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
</code></pre></div><p>내 경우에는 위의 두 경우처럼 설정이 되어 있었다.
따라서 아래의 <code>docker.service</code> 파일의 <code>-H fd://</code> 옵션 부분을 제거해서
<code>daemon.json</code>으로만 소켓 설정을 할 수 있도록 하는 것으로 해결했다.</p>
<p><code>/lib/systemd/system/docker.service</code> 파일을 수정하게 되면</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ sudo systemctl daemon-reload
</code></pre></div><p>위의 명령을 통해 해당 데몬을 Reload 해주어야 한다.</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ sudo systemctl start docker.service
</code></pre></div><p>그리고 데몬을 실행시켜주면 해결완료!</p></description>
</item>
<item>
<title>Search Results</title>
<link>/search/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>/search/</guid>
<description><p>This file exists solely to respond to /search URL with the related <code>search</code> layout template.</p>
<p>No content shown here is rendered, all content is based in the template layouts/page/search.html</p>
<p>Setting a very low sitemap priority will tell search engines this is not important content.</p>
<p>This implementation uses Fusejs, jquery and mark.js</p>
<h2 id="initial-setup">Initial setup</h2>
<p>Search depends on additional output content type of JSON in config.toml
```
[outputs]
home = [&ldquo;HTML&rdquo;, &ldquo;JSON&rdquo;]
```</p>
<h2 id="searching-additional-fileds">Searching additional fileds</h2>
<p>To search additional fields defined in front matter, you must add it in 2 places.</p>
<h3 id="edit-layouts_defaultindexjson">Edit layouts/_default/index.JSON</h3>
<p>This exposes the values in /index.json
i.e. add <code>category</code>
```
&hellip;
&ldquo;contents&rdquo;:{{ .Content | plainify | jsonify }}
{{ if .Params.tags }},
&ldquo;tags&rdquo;:{{ .Params.tags | jsonify }}{{end}},
&ldquo;categories&rdquo; : {{ .Params.categories | jsonify }},
&hellip;
```</p>
<h3 id="edit-fusejs-options-to-search">Edit fuse.js options to Search</h3>
<p><code>static/js/search.js</code>
```
keys: [
&ldquo;title&rdquo;,
&ldquo;contents&rdquo;,
&ldquo;tags&rdquo;,
&ldquo;categories&rdquo;
]
```</p>
</description>
</item>
</channel>
</rss>