<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Docker on 快乐宅家</title><link>https://blog.zhaijia.fun/tags/docker/</link><description>Recent content in Docker on 快乐宅家</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 02 May 2022 11:26:29 +0800</lastBuildDate><atom:link href="https://blog.zhaijia.fun/tags/docker/index.xml" rel="self" type="application/rss+xml"/><item><title>QNAP NAS 安装 Docker (Container Station)</title><link>https://blog.zhaijia.fun/p/install-docker-on-qnap-nas/</link><pubDate>Mon, 02 May 2022 11:26:29 +0800</pubDate><guid>https://blog.zhaijia.fun/p/install-docker-on-qnap-nas/</guid><description>&lt;img src="https://blog.zhaijia.fun/p/install-docker-on-qnap-nas/feat-img.jpg" alt="Featured image of post QNAP NAS 安装 Docker (Container Station)" />&lt;blockquote>
&lt;p>本文同时发布于&lt;a class="link" href="https://zhuanlan.zhihu.com/p/468539826" target="_blank" rel="noopener"
>知乎文章: 威联通 QNAP NAS 安装 Docker (Container Station)&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="前提">前提&lt;/h2>
&lt;p>不是所有的 QNAP NAS 都支持安装 Docker (Container Station), 请先务必确认你的 QNAP NAS 是否满足安装要求.&lt;/p>
&lt;h2 id="安装-docker-container-station">安装 Docker (Container Station)&lt;/h2>
&lt;p>登录 NAS Web 端, 进入 &amp;ldquo;App Center&amp;rdquo;, 查找并安装 &amp;ldquo;Container Station&amp;rdquo;.&lt;/p>
&lt;p>基本上一路点击下一步, 直至完成.&lt;/p>
&lt;h2 id="允许-ssh-连接">允许 SSH 连接&lt;/h2>
&lt;blockquote>
&lt;p>这一步是为了后面执行相关的命令而准备的, 毕竟有时候命令行更方便.&lt;/p>
&lt;/blockquote>
&lt;p>进入 &amp;ldquo;控制台&amp;rdquo; -&amp;gt; &amp;ldquo;网络 &amp;amp; 文件服务&amp;rdquo; -&amp;gt; &amp;ldquo;Telnet / SSH&amp;rdquo; :&lt;/p>
&lt;p>&lt;img src="https://blog.zhaijia.fun/p/install-docker-on-qnap-nas/qnap-ssh-1.png"
width="1158"
height="144"
srcset="https://blog.zhaijia.fun/p/install-docker-on-qnap-nas/qnap-ssh-1_hu6704ff49e54e6eb9f16806ba4b1e1ad2_30373_480x0_resize_box_3.png 480w, https://blog.zhaijia.fun/p/install-docker-on-qnap-nas/qnap-ssh-1_hu6704ff49e54e6eb9f16806ba4b1e1ad2_30373_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="804"
data-flex-basis="1930px"
>&lt;/p>
&lt;p>勾选 &amp;ldquo;允许 SSH 连接(只有管理者群组可远程登录)&amp;rdquo;, 并点击 &amp;ldquo;应用&amp;rdquo;:&lt;/p>
&lt;p>&lt;img src="https://blog.zhaijia.fun/p/install-docker-on-qnap-nas/qnap-ssh-2.png"
width="1157"
height="599"
srcset="https://blog.zhaijia.fun/p/install-docker-on-qnap-nas/qnap-ssh-2_hub07313688807ccf14590f1eff3f26285_59892_480x0_resize_box_3.png 480w, https://blog.zhaijia.fun/p/install-docker-on-qnap-nas/qnap-ssh-2_hub07313688807ccf14590f1eff3f26285_59892_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="193"
data-flex-basis="463px"
>&lt;/p>
&lt;h2 id="验证-docker-安装">验证 Docker 安装&lt;/h2>
&lt;p>以 &lt;em>&lt;strong>管理员&lt;/strong>&lt;/em> 身份 SSH 登录 NAS, 执行:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>可得到类似如下的输出:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Client:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Version: 20.10.3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> API version: 1.41
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Go version: go1.13.15
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Git commit: c52c09e6b8
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Built: Fri Feb 26 03:34:21 2021
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> OS/Arch: linux/amd64
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Context: default
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Experimental: true
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Server:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Engine:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Version: 20.10.3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> API version: 1.41 (minimum version 1.12)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Go version: go1.13.15
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Git commit: 4c417df92a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Built: Fri Feb 26 04:02:45 2021
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> OS/Arch: linux/amd64
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Experimental: false
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> containerd:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Version: v1.4.3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> runc:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Version: 1.0.0-rc93
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> GitCommit: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> docker-init:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Version: 0.19.0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> GitCommit: de40ad0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="安装-docker-compose">安装 Docker Compose&lt;/h2>
&lt;blockquote>
&lt;p>Docker Compose 可以将一个或多个容器以服务 (services) 的方式来运行, 只需一个配置文件即可控制所有这些容器的生命周期, 免除了需要记忆或以后忘记 docker 命令的烦恼.&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">curl -L &amp;#34;https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)&amp;#34; -o /usr/local/bin/docker-compose
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod +x /usr/local/bin/docker-compose
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="验证-docker-compose-安装">验证 Docker Compose 安装&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">docker-compose version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>可得到类似如下的输出:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">docker-compose version 1.27.4, build 40524192
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker-py version: 4.3.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">CPython version: 3.7.7
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>虽然安装命令指定的是版本 1.24.1, 但实际安装的是版本 1.27.4.&lt;/p>
&lt;/blockquote>
&lt;h2 id="创建目录">创建目录&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">mkdir /share/CACHEDEV1_DATA/docker-apps
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>docker-apps 目录是所有使用 docker 运行的 apps 的根目录, 每个 app 都应在其下创建对应于自己的子目录.&lt;/p>
&lt;p>在子目录中创建属于 app 的 Docker Compose 配置文件 (通常为 docker-compose.yml) 之后, 就可以使用 docker-compose 命令控制 app 的运行了.&lt;/p></description></item></channel></rss>