<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>AiKIKI</title>
  
  <subtitle>Welcome!</subtitle>
  <link href="https://www.aikiki.top/atom.xml" rel="self"/>
  
  <link href="https://www.aikiki.top/"/>
  <updated>2023-12-28T01:45:47.957Z</updated>
  <id>https://www.aikiki.top/</id>
  
  <author>
    <name>樵子</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Docker 使用宿主机网段</title>
    <link href="https://www.aikiki.top/post/c3b4/"/>
    <id>https://www.aikiki.top/post/c3b4/</id>
    <published>2023-12-18T01:27:00.000Z</published>
    <updated>2023-12-28T01:45:47.957Z</updated>
    
    <content type="html"><![CDATA[<p>Docker 使用宿主机网段多是使用 MacVlan 创建虚拟网络实现。<br>但本人在 RockyLinux 9.3 （ESXi 中运行的虚拟机）测试结果不尽人意。<br>主要问题是：<code>容器无法访问宿主机所在局域网网关和网段内的其它 IP 地址</code>。<br><em>(PS:后续查询资料，该问题是未开启 ESXi 的网卡混杂模式。另所查资料原文说 MacVlan 模式 1 个物理网卡仅支持 2 台虚拟机，超出 2 台后掉包严重，原因不明。)</em></p><p>最后改用了 Docker 新的 IpVlan 驱动方式解决问题。</p><blockquote><p>IpVlan 和 MacVlan 使用方法基本一致，个别参数有差别，但基本上用不到。</p></blockquote><h1 id="创建-IpVlan-网络"><a href="#创建-IpVlan-网络" class="headerlink" title="创建 IpVlan 网络"></a>创建 IpVlan 网络</h1><p>创建 IpVlan 网络：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">docker network create \</span><br><span class="line">-d ipvlan \</span><br><span class="line">--subnet=192.168.1.0/24 \</span><br><span class="line">--gateway=192.168.1.1 \</span><br><span class="line">--ipv6 \</span><br><span class="line">--subnet=fd00:db8:1:ddee::/64 \</span><br><span class="line">--gateway=fd00:db8:1:ddee::1 \</span><br><span class="line">-o ipvlan_mode=l2 \</span><br><span class="line">-o parent=ens192 \</span><br><span class="line">ipv6ipvlan</span><br></pre></td></tr></table></figure><blockquote><p>参数说明：</p><ul><li>-d：创建网络的驱动方式为 ipvlan。</li><li>–subnet&#x3D;192.168.8.0&#x2F;24：ipv4 的网段为 192.168.1.0&#x2F;24（宿主机所在网段）。</li><li>–gateway&#x3D;192.168.1.1：ipv4 的网关为 192.168.1.1（宿主机网关）。</li><li>–ipv6：启用 ipv6。</li><li>–subnet&#x3D;fd00:db8:1:ddee::&#x2F;64：ipv6 的网段为 fd00:db8:1:ddee::&#x2F;64。</li><li>–gateway&#x3D;fd00:db8:1:ddee::1：ipv6 的网关为 gateway&#x3D;fd00:db8:1:ddee::1</li><li>-o ipvlan_mode&#x3D;l2：ipvlan 工作模式为 l2（默认就是 l2，可省略该参数）。</li><li>-o parent&#x3D;ens192：指定要使用的父接口（网卡名称）。</li><li>ipv6ipvlan：要创建的 Docker 网络名称。</li></ul></blockquote><h1 id="测试-IpVlan-网络"><a href="#测试-IpVlan-网络" class="headerlink" title="测试 IpVlan 网络"></a>测试 IpVlan 网络</h1><blockquote><p>ipvlan 使用了宿主机子网网段，建议在容器中指定 ip 地址。</p></blockquote><p>使用 centos 镜像测试：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建 CentOS 镜像</span></span><br><span class="line">docker run --net=ipv6ipvlan --ip=192.168.1.10 --dns=192.168.1.1 --name=centos -itd centos /bin/bash</span><br><span class="line"><span class="comment"># 进入容器</span></span><br><span class="line">docker <span class="built_in">exec</span> -it centos /bin/bash</span><br><span class="line"><span class="comment"># ping 网关测试</span></span><br><span class="line">ping 192.168.1.1</span><br><span class="line"><span class="comment"># ping 其它子网测试</span></span><br><span class="line">ping 192.168.1.X</span><br><span class="line"><span class="comment"># ping 外网测试</span></span><br><span class="line">ping www.baidu.com</span><br><span class="line"><span class="comment"># 退出容器</span></span><br><span class="line"><span class="built_in">exit</span></span><br></pre></td></tr></table></figure><p>正常情况下，容器已经能 ping 通各个地址。<br>此时，在其它网络设备也能 ping 通测试容器的 ip 地址 <code>192.168.1.10</code>。</p><blockquote><p>注意：宿主机和容器之间不能 ping 通。</p></blockquote><h1 id="打通宿主机和容器之间的互访"><a href="#打通宿主机和容器之间的互访" class="headerlink" title="打通宿主机和容器之间的互访"></a>打通宿主机和容器之间的互访</h1><p>创建虚拟接口桥接到物理网卡打通宿主机和容器之间互访。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 添加一个虚拟接口桥接到物理网卡</span></span><br><span class="line">ip <span class="built_in">link</span> add ipvlan-proxy <span class="built_in">link</span> ens192 <span class="built_in">type</span> ipvlan</span><br><span class="line"><span class="comment"># 给虚拟接口配置ip</span></span><br><span class="line">ip addr add 192.168.1.11/32 dev ipvlan-proxy</span><br><span class="line"><span class="comment"># 启用虚拟接口</span></span><br><span class="line">ip <span class="built_in">link</span> <span class="built_in">set</span> ipvlan-proxy up</span><br><span class="line"><span class="comment"># 添加需要访问的容器网络的静态路由规则</span></span><br><span class="line">ip route add 192.168.1.10/32 dev ipvlan-proxy</span><br></pre></td></tr></table></figure><blockquote><p>参数说明：</p><ul><li>ipvlan-proxy：虚拟接口名称。</li><li>ens192：物理网卡名称。</li><li>192.168.1.11&#x2F;32：给虚拟接口分配的 ip 地址。</li><li>192.168.1.10&#x2F;32：需互访的容器 ip 地址。</li></ul></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;Docker 使用宿主机网段多是使用 MacVlan 创建虚拟网络实现。&lt;br&gt;但本人在 RockyLinux 9.3 （ESXi 中运行的虚拟机）测试结果不尽人意。&lt;br&gt;主要问题是：&lt;code&gt;容器无法访问宿主机所在局域网网关和网段内的其它 IP 地址&lt;/code&gt;。&lt;</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="Docker" scheme="https://www.aikiki.top/tags/Docker/"/>
    
    <category term="IpVlan" scheme="https://www.aikiki.top/tags/IpVlan/"/>
    
  </entry>
  
  <entry>
    <title>ESXi 远程 SSH 终端登录显示器管理界面</title>
    <link href="https://www.aikiki.top/post/1e36/"/>
    <id>https://www.aikiki.top/post/1e36/</id>
    <published>2023-11-29T01:45:00.000Z</published>
    <updated>2023-11-29T02:05:53.488Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>ESXi 主机通常不接显示器、键盘和鼠标，有时候需要登录显示器管理界面很不方便。<br>ESXi 提供了远程 SSH 终端登录此管理界面的功能，即是指令 <code>dcui</code>。</p></blockquote><h1 id="开启-SSH"><a href="#开启-SSH" class="headerlink" title="开启 SSH"></a>开启 SSH</h1><p>在<code>主机</code>-<code>操作</code>-<code>服务</code>-<code>启用 Secure Shell (SSH)</code>。</p><h1 id="登录-SSH-终端"><a href="#登录-SSH-终端" class="headerlink" title="登录 SSH 终端"></a>登录 SSH 终端</h1><p>使用你喜欢的 SSH 软件登录 ESXi。</p><h1 id="登录显示器管理界面"><a href="#登录显示器管理界面" class="headerlink" title="登录显示器管理界面"></a>登录显示器管理界面</h1><p>在 SSH 终端输入以下代码进入显示器管理界面：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">TERM=xterm</span><br><span class="line">dcui</span><br></pre></td></tr></table></figure><p><em>ps：TERM 为终端环境变量。可以不设置此变量，直接输入 <code>dcui</code> 进入显示器管理界面。</em></p>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;ESXi 主机通常不接显示器、键盘和鼠标，有时候需要登录显示器管理界面很不方便。&lt;br&gt;ESXi 提供了远程 SSH 终端登录此管理界面的功能，即是指令 &lt;code&gt;dcui&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;开启</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="ESXi" scheme="https://www.aikiki.top/tags/ESXi/"/>
    
  </entry>
  
  <entry>
    <title>ESXi 6.7 自动关机设置</title>
    <link href="https://www.aikiki.top/post/9973/"/>
    <id>https://www.aikiki.top/post/9973/</id>
    <published>2023-11-25T07:12:00.000Z</published>
    <updated>2023-11-29T01:47:29.771Z</updated>
    
    <content type="html"><![CDATA[<h1 id="开启-SSH"><a href="#开启-SSH" class="headerlink" title="开启 SSH"></a>开启 SSH</h1><p>在<code>主机</code>-<code>操作</code>-<code>服务</code>-<code>启用 Secure Shell (SSH)</code>。</p><h1 id="登录-SSH-终端"><a href="#登录-SSH-终端" class="headerlink" title="登录 SSH 终端"></a>登录 SSH 终端</h1><p>使用你喜欢的 SSH 软件登录 ESXi。</p><h1 id="编写关机脚本文件"><a href="#编写关机脚本文件" class="headerlink" title="编写关机脚本文件"></a>编写关机脚本文件</h1><h2 id="进入存储空间目录"><a href="#进入存储空间目录" class="headerlink" title="进入存储空间目录"></a>进入存储空间目录</h2><blockquote><p>关机脚本文件需放到存储目录中，否则 ESXi 重启会丢失配置的文件。</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> /vmfs/volumes/datastore1</span><br></pre></td></tr></table></figure><h2 id="编辑关机脚本文件"><a href="#编辑关机脚本文件" class="headerlink" title="编辑关机脚本文件"></a>编辑关机脚本文件</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> script  <span class="comment"># 创建脚本文件存放目录</span></span><br><span class="line"><span class="built_in">cd</span> script</span><br><span class="line">vi poweroff.sh</span><br></pre></td></tr></table></figure><p>在编辑框输入以下内容并保存退出：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/sh</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#shutdown all VMs(2,3,9 is VMID,add your VMIDs here)</span></span><br><span class="line"><span class="comment">#vim-cmd vmsvc/power.shutdown 1</span></span><br><span class="line"><span class="comment">#vim-cmd vmsvc/power.off 1</span></span><br><span class="line"><span class="comment">#vim-cmd vmsvc/power.shutdown 2</span></span><br><span class="line"><span class="comment">#vim-cmd vmsvc/power.off 2</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#Poweroff Host</span></span><br><span class="line">/sbin/poweroff</span><br></pre></td></tr></table></figure><blockquote><p>前面注释的代码用于关闭虚拟机。<br>我在各个虚拟机中配置了自动关机，因此注释。</p></blockquote><p>设置脚本权限为 755:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> 755 poweroff.sh</span><br></pre></td></tr></table></figure><p><em>ps：上述命令中，7 代表文件拥有者的权限，5 分别代表组用户和其他用户的权限；755 即是 owner-read-write-execute，group-read-execute，others-read-execute，即执行者可读、写、执行文件权限，同组用户可读、可执行，其他用户可读、可执行。Linux 755 权限通过权限限制，使普通用户无法访问、修改、删除系统核心文件，并确保特定用户可以访问特定文件，确保服务器的安全性。此外，在用户登录系统时，也可以设置 755 的权限，以便只允许特定人员登录服务器，减少外来攻击的可能性。</em></p><h1 id="增加启动项目"><a href="#增加启动项目" class="headerlink" title="增加启动项目"></a>增加启动项目</h1><p>打开自启动文件：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vi /etc/rc.local.d/local.sh</span><br></pre></td></tr></table></figure><p>在文件末尾的 <code>exit 0</code> 前面增加自动关机计划任务，编辑后的文件如下所示：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/sh</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># local configuration options</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># file: /etc/rc.local.d/local.sh</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Note: modify at your own risk!  If you do/use anything in this</span></span><br><span class="line"><span class="comment"># script that is not part of a stable API (relying on files to be in</span></span><br><span class="line"><span class="comment"># specific places, specific tools, specific output, etc) there is a</span></span><br><span class="line"><span class="comment"># possibility you will end up with a broken system after patching or</span></span><br><span class="line"><span class="comment"># upgrading.  Changes are not supported unless under direction of</span></span><br><span class="line"><span class="comment"># VMware support.</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Note: This script will not be run when UEFI secure boot is enabled.</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 复制中国时区文件</span></span><br><span class="line"><span class="built_in">cp</span> -f /vmfs/volumes/datastore1/script/Shanghai /etc/localtime</span><br><span class="line"></span><br><span class="line"><span class="comment"># 增加自动关机计划任务</span></span><br><span class="line">/bin/kill $(<span class="built_in">cat</span> /var/run/crond.pid)</span><br><span class="line"><span class="comment"># crontabs format: min hour day mon dow command</span></span><br><span class="line">/bin/echo <span class="string">&#x27;0 1 * * * /vmfs/volumes/datastore1/script/poweroff.sh&#x27;</span> &gt;&gt; /var/spool/cron/crontabs/root</span><br><span class="line">/usr/lib/vmware/busybox/bin/busybox crond</span><br><span class="line"></span><br><span class="line"><span class="built_in">exit</span> 0</span><br></pre></td></tr></table></figure><blockquote><ul><li>自动关机脚本是为了在 ESXi 启动后将 cron 设定的信息写入到 crontab 的配置文件中，并重启 cron 进程。</li><li>复制中国时区文件(此文件可以从其它 Linux 系统中复制)是为了解决 ESXi 时区问题。如果不复制该文件 ESXi 使用的是 UTC 时间，设定计划任务的时间需要减去 8 小时才是 UTC 时间。例如：23:00 的计划任务需为 “0 15 * * *”。</li></ul></blockquote><h1 id="备份启动脚本"><a href="#备份启动脚本" class="headerlink" title="备份启动脚本"></a>备份启动脚本</h1><blockquote><p>前面已经提到 ESXi 重启会重置系统，因此需要备份启动脚本。</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"> auto-backup.sh</span><br></pre></td></tr></table></figure><p><em>ps：该脚本系统自带，直接执行接口。</em></p><h1 id="配置立即生效"><a href="#配置立即生效" class="headerlink" title="配置立即生效"></a>配置立即生效</h1><p>执行编辑好的启动脚本文件即可。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/etc/rc.local.d/local.sh</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;开启-SSH&quot;&gt;&lt;a href=&quot;#开启-SSH&quot; class=&quot;headerlink&quot; title=&quot;开启 SSH&quot;&gt;&lt;/a&gt;开启 SSH&lt;/h1&gt;&lt;p&gt;在&lt;code&gt;主机&lt;/code&gt;-&lt;code&gt;操作&lt;/code&gt;-&lt;code&gt;服务&lt;/code&gt;-&lt;code</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="ESXi" scheme="https://www.aikiki.top/tags/ESXi/"/>
    
  </entry>
  
  <entry>
    <title>OpenWrt 安装自带 Tailscale 和 ZeroTier</title>
    <link href="https://www.aikiki.top/post/bf0c/"/>
    <id>https://www.aikiki.top/post/bf0c/</id>
    <published>2023-11-21T01:19:00.000Z</published>
    <updated>2023-11-24T06:51:33.531Z</updated>
    
    <content type="html"><![CDATA[<h1 id="官方网站"><a href="#官方网站" class="headerlink" title="官方网站"></a>官方网站</h1><ul><li><a href="https://openwrt.ai/">OpenWrt 软路由固件下载与在线定制编译</a></li><li><a href="https://tailscale.com/">Tailscale · Best VPN Service for Secure Networks</a></li><li><a href="https://www.zerotier.com/">ZeroTier | Global Area Networking</a></li></ul><blockquote><p>OpenWrt 的安装、Tailscale 和 ZeroTier 使用方法参见网上教程。</p></blockquote><h1 id="安装软件包"><a href="#安装软件包" class="headerlink" title="安装软件包"></a>安装软件包</h1><p>既然是安装系统自带包，使用 OpenWrt 的软件包功能安装即可。<br>安装前先<code>更新列表...</code>。</p><h2 id="安装-Tailscale"><a href="#安装-Tailscale" class="headerlink" title="安装 Tailscale"></a>安装 Tailscale</h2><ul><li>OpenWrt 22.03.x 以上版本需要安装包 <code>iptables-nft</code>，直接搜索该名称安装。</li><li>tailscale 搜索名称安装即可，系统会安装 <code>tailscale</code> 和 <code>tailscaled</code>。</li><li>安装完成后一定要重启。</li></ul><p>卸载后的<code>清理</code>，推荐使用卸载脚本：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget --tries=5 -c -t 60 -O- https://gh.api.99988866.xyz/https://raw.githubusercontent.com/CH3NGYZ/tailscale-openwrt/chinese_mainland/uninstall.sh | sh</span><br></pre></td></tr></table></figure><p><em>ps：此脚本来源于 tailscale 的另外一种安装方法：</em><br><a href="https://github.com/CH3NGYZ/tailscale-openwrt">CH3NGYZ&#x2F;tailscale-openwrt: 在 openwrt 上最简单的 tailscale 部署方法 (github.com)</a></p><h2 id="安装-ZeroTier"><a href="#安装-ZeroTier" class="headerlink" title="安装 ZeroTier"></a>安装 ZeroTier</h2><p>OpenWrt 自带的 zerotier 提供了配置界面，搜索 <code>luci-app-zerotier</code> 安装即可，系统会自动安装 <code>luci-app-zerotier</code> 和 <code>zerotier</code>。<br>ZeroTier 安装完成后再页面菜单中出现 <code>VPN-ZeroTier</code> 选项。</p><h1 id="设置防火墙"><a href="#设置防火墙" class="headerlink" title="设置防火墙"></a>设置防火墙</h1><p>Tailscale 和 ZeroTier 设置防火墙的方法是一样的，这里以 Tailscale 为例。</p><h2 id="添加新接口"><a href="#添加新接口" class="headerlink" title="添加新接口"></a>添加新接口</h2><p>打开<code>网络-接口</code>菜单，点击页面下方的<code>添加新接口...</code>。<br>输入接口名称和选择设备，完成后点击<code>创建接口</code>。</p><p><img src="https://gitee.com/acmeist/img/raw/master/hexo/2023/11/202311211045958.png" alt="添加新接口"></p><blockquote><ul><li>Tailscale 设备名称是：tailscale0。</li><li>ZeroTier 设备名称以 <code>zt</code> 开头，后面是加入网络产生的代码编号。例如：ztfp6baqxy。</li><li>设备名称后面的 <code>(tailscale)</code> 表示该设备已被名称为 <code>tailscale</code> 的接口使用。</li></ul></blockquote><h2 id="设置防火墙-1"><a href="#设置防火墙-1" class="headerlink" title="设置防火墙"></a>设置防火墙</h2><h3 id="添加区域"><a href="#添加区域" class="headerlink" title="添加区域"></a>添加区域</h3><p>打开<code>网络-防火墙</code>菜单，在<code>常规设置</code>下方的<code>区域</code>点击<code>添加</code>。<br>按下图设置完成后，点击<code>保存</code>。</p><p><img src="https://gitee.com/acmeist/img/raw/master/hexo/2023/11/202311211101580.png" alt="添加区域"></p><h3 id="设置转发规则"><a href="#设置转发规则" class="headerlink" title="设置转发规则"></a>设置转发规则</h3><p>打开<code>网络-防火墙</code>菜单，在<code>自定义规则</code>下方输入以下规则。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">iptables -I FORWARD -i tailscale0 -j ACCEPT</span><br><span class="line">iptables -I FORWARD -o tailscale0 -j ACCEPT</span><br><span class="line">iptables -t nat -I POSTROUTING -o tailscale0 -j MASQUERADE</span><br></pre></td></tr></table></figure><p>输入完成后，点击<code>保存</code>。</p><blockquote><ul><li>规则中的 <code>tailscale0</code> 是设备名称，注意替换（<code>3</code>处）。</li><li>关于设备名称参见前文：<a href="./#%E6%B7%BB%E5%8A%A0%E6%96%B0%E6%8E%A5%E5%8F%A3">添加新接口</a>。</li></ul></blockquote><h2 id="重新启动"><a href="#重新启动" class="headerlink" title="重新启动"></a>重新启动</h2><blockquote><p>防火墙设置完成后建议重启设备，避免出现不可预料的问题。</p></blockquote><h1 id="加入到网络"><a href="#加入到网络" class="headerlink" title="加入到网络"></a>加入到网络</h1><h2 id="Tailscale"><a href="#Tailscale" class="headerlink" title="Tailscale"></a>Tailscale</h2><p>SSH 登录控制台，输入以下指令加入网络：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tailscale up --advertise-routes=192.168.1.0/24 --accept-routes=<span class="literal">true</span> --accept-dns=<span class="literal">false</span></span><br></pre></td></tr></table></figure><blockquote><ul><li><code>192.168.1.0/24</code> 是 OpenWrt 所在内网网段。此参数开启后，允许通过 <code>Tailscale</code> 访问该子网。</li><li>如果是多个网段，用逗号隔离即可。</li><li>更多设置登录管理端：<a href="https://tailscale.com/">Tailscale · Best VPN Service for Secure Networks</a></li></ul></blockquote><h2 id="ZeroTier"><a href="#ZeroTier" class="headerlink" title="ZeroTier"></a>ZeroTier</h2><p>打开 <code>VPN-ZeroTier</code> 页面，在下方输入要加入的 <code>网络 ID</code> 即可。<br>更多设置登录管理端：<a href="https://www.zerotier.com/">ZeroTier | Global Area Networking</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;官方网站&quot;&gt;&lt;a href=&quot;#官方网站&quot; class=&quot;headerlink&quot; title=&quot;官方网站&quot;&gt;&lt;/a&gt;官方网站&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://openwrt.ai/&quot;&gt;OpenWrt 软路由固件下载与在线定制编译&lt;/a&gt;</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="OpenWrt" scheme="https://www.aikiki.top/tags/OpenWrt/"/>
    
    <category term="Tailscale" scheme="https://www.aikiki.top/tags/Tailscale/"/>
    
    <category term="ZeroTier" scheme="https://www.aikiki.top/tags/ZeroTier/"/>
    
  </entry>
  
  <entry>
    <title>OpenWrt 更新所有已安装软件包</title>
    <link href="https://www.aikiki.top/post/53a7/"/>
    <id>https://www.aikiki.top/post/53a7/</id>
    <published>2023-11-15T01:38:00.000Z</published>
    <updated>2023-11-21T01:10:02.947Z</updated>
    
    <content type="html"><![CDATA[<h1 id="登录-SSH"><a href="#登录-SSH" class="headerlink" title="登录 SSH"></a>登录 SSH</h1><blockquote><p>使用任意 SSH 软件登录 OpenWrt。</p></blockquote><h1 id="更新软件列表"><a href="#更新软件列表" class="headerlink" title="更新软件列表"></a>更新软件列表</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">opkg update</span><br></pre></td></tr></table></figure><h1 id="更新所有软件包"><a href="#更新所有软件包" class="headerlink" title="更新所有软件包"></a>更新所有软件包</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">opkg list-upgradable | <span class="built_in">cut</span> -f 1 -d <span class="string">&#x27; &#x27;</span> | xargs opkg upgrade</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;登录-SSH&quot;&gt;&lt;a href=&quot;#登录-SSH&quot; class=&quot;headerlink&quot; title=&quot;登录 SSH&quot;&gt;&lt;/a&gt;登录 SSH&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;使用任意 SSH 软件登录 OpenWrt。&lt;/p&gt;
&lt;/blockquote&gt;
</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="OpenWrt" scheme="https://www.aikiki.top/tags/OpenWrt/"/>
    
  </entry>
  
  <entry>
    <title>Docker-操作指令收集</title>
    <link href="https://www.aikiki.top/post/c8b7/"/>
    <id>https://www.aikiki.top/post/c8b7/</id>
    <published>2021-07-18T01:47:00.000Z</published>
    <updated>2023-11-16T08:35:10.000Z</updated>
    
    <content type="html"><![CDATA[<h1 id="查看容器环境变量"><a href="#查看容器环境变量" class="headerlink" title="查看容器环境变量"></a>查看容器环境变量</h1><p>如果我们需要查看 ENV 设置的环境变量，可以通过以下几个方法进行查看。</p><ul><li>使用 <code>docker inspect</code> 命令来查看</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ docker inspect &lt;CONTAINER-NAME&gt; OR &lt;CONTAINER-ID&gt;</span><br></pre></td></tr></table></figure><ul><li>使用 <code>docker exec -it &lt;CONTAINER-NAME&gt; OR &lt;CONTAINER-ID&gt; env</code>查看</li></ul><h1 id="进入容器"><a href="#进入容器" class="headerlink" title="进入容器"></a>进入容器</h1><p>exec 命令<br>-i -t 参数<br>docker exec 后边可以跟多个参数，这里主要说明 -i -t 参数。</p><p>只用 -i 参数时，由于没有分配伪终端，界面没有我们熟悉的 Linux 命令提示符，但命令执行结果仍然可以返回。</p><p>当 -i -t 参数一起使用时，则可以看到我们熟悉的 Linux 命令提示符。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker <span class="built_in">exec</span> -i &lt;CONTAINER-NAME&gt; OR &lt;CONTAINER-ID&gt;  /bin/bash</span><br></pre></td></tr></table></figure><h1 id="从容器里面复制文件"><a href="#从容器里面复制文件" class="headerlink" title="从容器里面复制文件"></a>从容器里面复制文件</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker <span class="built_in">cp</span> &lt;CONTAINER-NAME&gt; OR &lt;CONTAINER-ID&gt;:&lt;SRC_PATH&gt; &lt;DEST_PATH&gt;</span><br></pre></td></tr></table></figure><h1 id="在容器里面执行指令"><a href="#在容器里面执行指令" class="headerlink" title="在容器里面执行指令"></a>在容器里面执行指令</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ docker <span class="built_in">exec</span> nginx yum update -y</span><br></pre></td></tr></table></figure><h1 id="修改容器为自启动"><a href="#修改容器为自启动" class="headerlink" title="修改容器为自启动"></a>修改容器为自启动</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ docker container update --restart=always &lt;CONTAINER-ID&gt;</span><br></pre></td></tr></table></figure><h1 id="查看容器-ip-地址"><a href="#查看容器-ip-地址" class="headerlink" title="查看容器 ip 地址"></a>查看容器 ip 地址</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">#查看指定名称或 ID 的容器 Ip</span><br><span class="line">$ docker inspect -f &#x27;&#123;&#123;range .NetworkSettings.Networks&#125;&#125;&#123;&#123;.IPAddress&#125;&#125;&#123;&#123;end&#125;&#125;&#x27; &lt;CONTAINER-ID&gt; or &lt;CONTAINER-NAME&gt;</span><br><span class="line"></span><br><span class="line">#查看所有容器的 ip</span><br><span class="line">$ docker inspect --format=&#x27;&#123;&#123;.Name&#125;&#125; - &#123;&#123;range.NetworkSettings.Networks&#125;&#125;&#123;&#123;.IPAddress&#125;&#125;&#123;&#123;end&#125;&#125;&#x27; $(docker ps -aq)</span><br></pre></td></tr></table></figure><h1 id="删除所有容器"><a href="#删除所有容器" class="headerlink" title="删除所有容器"></a>删除所有容器</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ docker stop $(docker ps -q) &amp; docker <span class="built_in">rm</span> $(docker ps -aq)</span><br></pre></td></tr></table></figure><h1 id="删除所有镜像"><a href="#删除所有镜像" class="headerlink" title="删除所有镜像"></a>删除所有镜像</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">docker rmi `docker images -q`</span><br><span class="line"></span><br><span class="line">//Windows环境在PowerShell下执行，CMD失败</span><br><span class="line">docker rmi $(docker images -q)</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;查看容器环境变量&quot;&gt;&lt;a href=&quot;#查看容器环境变量&quot; class=&quot;headerlink&quot; title=&quot;查看容器环境变量&quot;&gt;&lt;/a&gt;查看容器环境变量&lt;/h1&gt;&lt;p&gt;如果我们需要查看 ENV 设置的环境变量，可以通过以下几个方法进行查看。&lt;/p&gt;
&lt;ul&gt;
</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="Docker" scheme="https://www.aikiki.top/tags/Docker/"/>
    
  </entry>
  
  <entry>
    <title>Rocky Linux 8 安装 Docker-CE</title>
    <link href="https://www.aikiki.top/post/872e/"/>
    <id>https://www.aikiki.top/post/872e/</id>
    <published>2021-07-14T09:06:00.000Z</published>
    <updated>2023-11-16T08:34:43.000Z</updated>
    
    <content type="html"><![CDATA[<p>Red Hat 系的 Linux 取消了 Docker，改为了 Podman。</p><p>因此需要单独增加 Repo 源才能安装。</p><p>此安装方法适用于 Red Hat&#x2F;CentOS&#x2F;Rocky Linux&#x2F;Alma Linux&#x2F;Oracle Linux 等 Red Hat 系的 Linux 操作系统。</p><h1 id="卸载-Podman"><a href="#卸载-Podman" class="headerlink" title="卸载 Podman"></a>卸载 Podman</h1><p>Rocky Linux 默认安装了 Podman，需要先卸载。否则会和 Docker 依赖组件冲突。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum -y erase podman buildah</span><br></pre></td></tr></table></figure><h1 id="安装-Docker"><a href="#安装-Docker" class="headerlink" title="安装 Docker"></a>安装 Docker</h1><h2 id="安装-Docker-Repo-源"><a href="#安装-Docker-Repo-源" class="headerlink" title="安装 Docker Repo 源"></a>安装 Docker Repo 源</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"># 添加 Docker Repo</span><br><span class="line">dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo</span><br><span class="line"></span><br><span class="line"># 更新源</span><br><span class="line">dnf update</span><br></pre></td></tr></table></figure><p>官方源和阿里云源，按需替换。</p><blockquote><p>Docker 官方源：<code>https://download.docker.com/linux/centos/</code></p></blockquote><blockquote><p>Docker 阿里云源：<code>https://mirrors.aliyun.com/docker-ce/linux/centos/</code></p></blockquote><h2 id="安装-docker-ce"><a href="#安装-docker-ce" class="headerlink" title="安装 docker-ce"></a>安装 docker-ce</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"># 安装 Docker</span><br><span class="line">dnf install -y docker-ce</span><br><span class="line"></span><br><span class="line"># 启动 Docker 服务</span><br><span class="line">sudo systemctl start docker &amp;&amp; sudo systemctl status docker</span><br><span class="line"></span><br><span class="line"># 设置开机自启动</span><br><span class="line">sudo systemctl enable docker</span><br><span class="line"></span><br><span class="line"># 建议添加普通用户至 Docker 组，并以普通用户运行 Docker。</span><br><span class="line">sudo usermod -aG docker $USER</span><br><span class="line"></span><br><span class="line"># 生效组用户变更配置</span><br><span class="line">newgrp docker</span><br></pre></td></tr></table></figure><h2 id="检查安装"><a href="#检查安装" class="headerlink" title="检查安装"></a>检查安装</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker info</span><br></pre></td></tr></table></figure><h1 id="修改-docker-源"><a href="#修改-docker-源" class="headerlink" title="修改 docker 源"></a>修改 docker 源</h1><blockquote><p>配置文件路径为： &#x2F;etc&#x2F;docker&#x2F;daemon.json。<br>没有该文件的话，请先建一个。</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nano  /etc/docker/daemon.json</span><br></pre></td></tr></table></figure><p>配置文件内容：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line"> &quot;registry-mirrors&quot; : [</span><br><span class="line">   &quot;https://mirror.ccs.tencentyun.com&quot;,</span><br><span class="line">   &quot;http://registry.docker-cn.com&quot;,</span><br><span class="line">   &quot;http://docker.mirrors.ustc.edu.cn&quot;,</span><br><span class="line">   &quot;http://hub-mirror.c.163.com&quot;</span><br><span class="line"> ],</span><br><span class="line"> &quot;insecure-registries&quot; : [</span><br><span class="line">   &quot;registry.docker-cn.com&quot;,</span><br><span class="line">   &quot;docker.mirrors.ustc.edu.cn&quot;</span><br><span class="line"> ],</span><br><span class="line"> &quot;debug&quot; : true,</span><br><span class="line"> &quot;experimental&quot; : true</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>建议使用阿里云，配置方式参见阿里云文档。</p><h1 id="安装-docker-compose"><a href="#安装-docker-compose" class="headerlink" title="安装 docker-compose"></a>安装 docker-compose</h1><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><h3 id="安装方式一"><a href="#安装方式一" class="headerlink" title="安装方式一"></a>安装方式一</h3><p>运行命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -L <span class="string">&quot;https://github.com/docker/compose/releases/download/1.29.2/docker-compose-<span class="subst">$(uname -s)</span>-<span class="subst">$(uname -m)</span>&quot;</span> -o /usr/local/bin/docker-compose</span><br></pre></td></tr></table></figure><blockquote><p>docker-compose 不同版本的 yml 配置文件有差异。</p></blockquote><p>使用国内源：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`<span class="built_in">uname</span> -s`-`<span class="built_in">uname</span> -m` &gt; /usr/local/bin/docker-compose</span><br></pre></td></tr></table></figure><h3 id="安装方式二"><a href="#安装方式二" class="headerlink" title="安装方式二"></a>安装方式二</h3><p>下载 docker-compose 包并上传到 linux 下。</p><blockquote><p>下载地址：<a href="https://github.com/docker/compose/releases">https://github.com/docker/compose/releases</a></p></blockquote><p>复制文件到执行文件目录 ：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mv</span> docker-compose-Linux-x86_64 /usr/local/bin/docker-compose</span><br></pre></td></tr></table></figure><h2 id="给-docker-compose-执行权限，运行命令："><a href="#给-docker-compose-执行权限，运行命令：" class="headerlink" title="给 docker-compose 执行权限，运行命令："></a>给 docker-compose 执行权限，运行命令：</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> +x /usr/local/bin/docker-compose</span><br></pre></td></tr></table></figure><h2 id="安装检查："><a href="#安装检查：" class="headerlink" title="安装检查："></a>安装检查：</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker-compose --version</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;Red Hat 系的 Linux 取消了 Docker，改为了 Podman。&lt;/p&gt;
&lt;p&gt;因此需要单独增加 Repo 源才能安装。&lt;/p&gt;
&lt;p&gt;此安装方法适用于 Red Hat&amp;#x2F;CentOS&amp;#x2F;Rocky Linux&amp;#x2F;Alma Linux&amp;</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="Docker" scheme="https://www.aikiki.top/tags/Docker/"/>
    
    <category term="Rocky Linux" scheme="https://www.aikiki.top/tags/Rocky-Linux/"/>
    
  </entry>
  
  <entry>
    <title>CentOS 8 配置 Web Console</title>
    <link href="https://www.aikiki.top/post/52ea/"/>
    <id>https://www.aikiki.top/post/52ea/</id>
    <published>2021-06-12T06:15:00.000Z</published>
    <updated>2023-11-16T08:35:35.000Z</updated>
    
    <content type="html"><![CDATA[<p>CentOS 8 启动之后，使用 SSH 登录发现了一行提示：<code>Activate the web console with: systemctl enable –now cockpit.socket</code>。</p><p>出于好奇搜索了下 <code>cockpit</code>，发现是个好东西。</p><p>这条命令是提示可以激活系统的 <code>Web管理程序</code>，设置系统开机启动。</p><h1 id="什么是-Cockpit"><a href="#什么是-Cockpit" class="headerlink" title="什么是 Cockpit ?"></a>什么是 <code>Cockpit</code> ?</h1><p>官方网站：<a href="https://cockpit-project.org/%E3%80%82">https://cockpit-project.org/。</a><br>Cockpit 官网介绍：</p><blockquote><p>Cockpit makes GNU&#x2F;Linux discoverable. See your server in a web browser and perform system tasks with a mouse. It’s easy to start containers, administer storage, configure networks, and inspect logs.<br>Cockpit 是一个 Web 端的系统管理工具，只用鼠标就能管理系统，事实上也确实如此，启动 Cockpit 服务之后，只需要鼠标就能完成系统很多基础操作，比如查看系统信息，启动&#x2F;停止服务，新增或者更改账户，系统更新，Web 终端及查看网络流量等功能。</p></blockquote><h1 id="安装-Cockpit"><a href="#安装-Cockpit" class="headerlink" title="安装 Cockpit"></a>安装 <code>Cockpit</code></h1><p>有的发行版本默认已经安装 cockpit，未安装的系统可以使用以下命令安装：</p><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">dnf install cockpit</span><br></pre></td></tr></table></figure><h2 id="修改端口"><a href="#修改端口" class="headerlink" title="修改端口"></a>修改端口</h2><p>编辑配置文件</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nano /etc/systemd/system/sockets.target.wants/cockpit.socket</span><br></pre></td></tr></table></figure><p>修改端口</p><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[Socket]</span></span><br><span class="line"><span class="attr">ListenStream</span>=<span class="number">9090</span>  <span class="comment"># 端口</span></span><br></pre></td></tr></table></figure><blockquote><p>修改后需要在防火墙开放对应的端口。</p></blockquote><h1 id="启动和注销-Cockpit"><a href="#启动和注销-Cockpit" class="headerlink" title="启动和注销 Cockpit"></a>启动和注销 <code>Cockpit</code></h1><h2 id="启动-Cockpit"><a href="#启动-Cockpit" class="headerlink" title="启动 Cockpit"></a>启动 <code>Cockpit</code></h2><p>按开机的提示执行以下命令启动：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl enable –now cockpit.socket</span><br></pre></td></tr></table></figure><h2 id="注销-Cockpit"><a href="#注销-Cockpit" class="headerlink" title="注销 Cockpit"></a>注销 <code>Cockpit</code></h2><p>禁用 cockpit</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl disable cockpit.socket</span><br></pre></td></tr></table></figure><p>注销 cockpit</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl mask cockpit.socket</span><br></pre></td></tr></table></figure><h1 id="设置防火墙"><a href="#设置防火墙" class="headerlink" title="设置防火墙"></a>设置防火墙</h1><p><code>Cockpit</code> 默认是使用 <code>9090</code> 进行 Web 管理，CentOS 8 默认开启了 <code>Firewall</code> 防火墙，需要设置防火墙开放对应的端口：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --permanent --zone=public --add-service=cockpit</span><br><span class="line">firewall-cmd --reload</span><br></pre></td></tr></table></figure><h1 id="访问管理端"><a href="#访问管理端" class="headerlink" title="访问管理端"></a>访问管理端</h1><p>浏览器中输入以下地址访问远程管理，使用系统用户名和密码登录。</p><blockquote><p><a href="https://ip-address:9090/">https://ip-address:9090</a><br>因为是自签名证书，打开时浏览器会提示证书不可信。<br>证书在下面的路径，如有需要可以替换。</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/etc/cockpit/ws-certs.d/**</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;CentOS 8 启动之后，使用 SSH 登录发现了一行提示：&lt;code&gt;Activate the web console with: systemctl enable –now cockpit.socket&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;出于好奇搜索了下 &lt;code&gt;co</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="CentOS" scheme="https://www.aikiki.top/tags/CentOS/"/>
    
    <category term="Cockpit" scheme="https://www.aikiki.top/tags/Cockpit/"/>
    
  </entry>
  
  <entry>
    <title>CentOS 8 虚拟机设置网卡</title>
    <link href="https://www.aikiki.top/post/3f4b/"/>
    <id>https://www.aikiki.top/post/3f4b/</id>
    <published>2021-06-09T06:07:00.000Z</published>
    <updated>2023-11-16T08:35:40.000Z</updated>
    
    <content type="html"><![CDATA[<p>CentOS 8 在虚拟机新增加的网卡，不会生成网卡配置文件。<br>这是因为从该版本开始，CentOS 停止了 network.service，只能通过 <code>NetworkManager</code> 进行网络配置。</p><h1 id="启动-NetworkManager"><a href="#启动-NetworkManager" class="headerlink" title="启动 NetworkManager"></a>启动 NetworkManager</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl start NetworkManager</span><br></pre></td></tr></table></figure><h1 id="获取网卡名称"><a href="#获取网卡名称" class="headerlink" title="获取网卡名称"></a>获取网卡名称</h1><p>输入指令：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nmcli device</span><br></pre></td></tr></table></figure><p>系统显示：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">DEVICE  TYPE      STATE   CONNECTION</span><br><span class="line">ens35   ethernet  已连接  ens35</span><br><span class="line">lo      loopback  未托管  --</span><br></pre></td></tr></table></figure><blockquote><p><code>ens35</code> 即为网卡设备名称。这里因为已经连接设备，所以后面的状态显示为<code>已连接</code>。</p></blockquote><h1 id="连接网卡设备"><a href="#连接网卡设备" class="headerlink" title="连接网卡设备"></a>连接网卡设备</h1><p>输入以下指令连接设备。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">nmcli connection add con-name ens35 ifname ens35 type ethernet</span><br><span class="line">nmcli connection up ens35</span><br></pre></td></tr></table></figure><blockquote><p><code>ens35</code> 为要连接设备的新名称。</p></blockquote><p>设备链接成功，在文件夹：<code>/etc/sysconfig/network-scripts/</code> 会自动生成配置文件 <code>ifcfg-ens35-1</code> 并激活网卡。</p><h1 id="获取-ip-地址"><a href="#获取-ip-地址" class="headerlink" title="获取 ip 地址"></a>获取 ip 地址</h1><p>输入指令：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ip addr</span><br></pre></td></tr></table></figure><p>系统显示：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000</span><br><span class="line">    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00</span><br><span class="line">    inet 127.0.0.1/8 scope host lo</span><br><span class="line">       valid_lft forever preferred_lft forever</span><br><span class="line">    inet6 ::1/128 scope host</span><br><span class="line">       valid_lft forever preferred_lft forever</span><br><span class="line"></span><br><span class="line">2: ens35: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000</span><br><span class="line">    link/ether 00:50:56:bf:29:03 brd ff:ff:ff:ff:ff:ff</span><br><span class="line">    inet 192.168.42.216/24 brd 192.168.42.255 scope global dynamic noprefixroute ens35</span><br><span class="line">       valid_lft 85409sec preferred_lft 85409sec</span><br><span class="line">    inet6 fe80::9cbf:de1b:fe75:81b9/64 scope link noprefixroute</span><br><span class="line">       valid_lft forever preferred_lft forever</span><br></pre></td></tr></table></figure><p>从上面的显示可以看出设备 ens35 获取 ip 成功。</p><blockquote><p>如果没有获取 ip 地址，检查 dhcp 是否启用或者修改为静态 ip 方式。</p></blockquote><h1 id="网卡配置文件说明"><a href="#网卡配置文件说明" class="headerlink" title="网卡配置文件说明"></a>网卡配置文件说明</h1><p>默认生成的配置文件是 dhcp 方式，如果要配置静态 ip 地址，参见下面的配置文件。</p><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">TYPE</span>=Ethernet</span><br><span class="line"><span class="attr">PROXY_METHOD</span>=none</span><br><span class="line"><span class="attr">BROWSER_ONLY</span>=<span class="literal">no</span></span><br><span class="line"><span class="attr">BOOTPROTO</span>=static</span><br><span class="line"><span class="attr">DEFROUTE</span>=<span class="literal">yes</span></span><br><span class="line"><span class="attr">IPADDR</span>=<span class="number">192.168</span>.<span class="number">10.111</span></span><br><span class="line"><span class="attr">NETMASK</span>=<span class="number">255.255</span>.<span class="number">255.0</span></span><br><span class="line"><span class="attr">GATEWAY</span>=<span class="number">192.168</span>.<span class="number">10.1</span></span><br><span class="line"><span class="attr">DNS1</span>=<span class="number">114.114</span>.<span class="number">114.114</span></span><br><span class="line"><span class="attr">IPV4_FAILURE_FATAL</span>=<span class="literal">no</span></span><br><span class="line"><span class="comment">#IPV6INIT=yes</span></span><br><span class="line"><span class="comment">#IPV6_AUTOCONF=yes</span></span><br><span class="line"><span class="comment">#IPV6_DEFROUTE=yes</span></span><br><span class="line"><span class="comment">#IPV6_FAILURE_FATAL=no</span></span><br><span class="line"><span class="comment">#IPV6_ADDR_GEN_MODE=stable-privacy</span></span><br><span class="line"><span class="attr">NAME</span>=ens35</span><br><span class="line"><span class="attr">UUID</span>=<span class="number">7</span>afc67d5-b767-<span class="number">4</span>d89-<span class="number">97</span>b4-<span class="number">2558</span>f8dc33c3</span><br><span class="line"><span class="attr">DEVICE</span>=ens35</span><br><span class="line"><span class="attr">ONBOOT</span>=<span class="literal">yes</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;CentOS 8 在虚拟机新增加的网卡，不会生成网卡配置文件。&lt;br&gt;这是因为从该版本开始，CentOS 停止了 network.service，只能通过 &lt;code&gt;NetworkManager&lt;/code&gt; 进行网络配置。&lt;/p&gt;
&lt;h1 id=&quot;启动-NetworkM</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="CentOS" scheme="https://www.aikiki.top/tags/CentOS/"/>
    
  </entry>
  
  <entry>
    <title>CentOS 8 时间同步</title>
    <link href="https://www.aikiki.top/post/52bd/"/>
    <id>https://www.aikiki.top/post/52bd/</id>
    <published>2021-06-07T05:55:00.000Z</published>
    <updated>2023-11-16T08:35:43.000Z</updated>
    
    <content type="html"><![CDATA[<p>CentOS 推荐使用 <code>chrony</code> 同步时间。<br>chrony 官网列举了诸多 chrony 优于 ntp 的功能。</p><blockquote><p><a href="https://chrony.tuxfamily.org/comparison.html">https://chrony.tuxfamily.org/comparison.html</a></p></blockquote><h1 id="安装-chrony"><a href="#安装-chrony" class="headerlink" title="安装 chrony"></a>安装 chrony</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum -y install chrony</span><br></pre></td></tr></table></figure><blockquote><p>默认 CentOS 已经安装了 chrony</p></blockquote><h1 id="配置-chrony"><a href="#配置-chrony" class="headerlink" title="配置 chrony"></a>配置 chrony</h1><h2 id="备份配置文件"><a href="#备份配置文件" class="headerlink" title="备份配置文件"></a>备份配置文件</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cp</span> /etc/chrony.conf /etc/chrony.conf.backup</span><br></pre></td></tr></table></figure><h2 id="编辑配置文件"><a href="#编辑配置文件" class="headerlink" title="编辑配置文件"></a>编辑配置文件</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nano /etc/chrony.conf</span><br></pre></td></tr></table></figure><p>在打开文件的头部增加以下配置内容：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">server ntp1.alyun.com</span><br><span class="line">server ntp2.alyun.com</span><br><span class="line">server ntp3.alyun.com</span><br></pre></td></tr></table></figure><h1 id="启动相关服务"><a href="#启动相关服务" class="headerlink" title="启动相关服务"></a>启动相关服务</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">systemctl start chronyd</span><br><span class="line">systemctl <span class="built_in">enable</span> chronyd</span><br><span class="line">systemctl start crond</span><br><span class="line">systemctl <span class="built_in">enable</span> crond</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;CentOS 推荐使用 &lt;code&gt;chrony&lt;/code&gt; 同步时间。&lt;br&gt;chrony 官网列举了诸多 chrony 优于 ntp 的功能。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://chrony.tuxfamily.org/comp</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="CentOS" scheme="https://www.aikiki.top/tags/CentOS/"/>
    
  </entry>
  
  <entry>
    <title>CentOS 8 安装 Docker-CE</title>
    <link href="https://www.aikiki.top/post/ea01/"/>
    <id>https://www.aikiki.top/post/ea01/</id>
    <published>2021-03-22T18:24:00.000Z</published>
    <updated>2023-11-16T08:35:45.000Z</updated>
    
    <content type="html"><![CDATA[<p>CentOS 8 官方源 containerd.io 版本太低无法安装最新版 Docker-CE。</p><h1 id="一、CentOS-8-更换源为阿里云"><a href="#一、CentOS-8-更换源为阿里云" class="headerlink" title="一、CentOS 8 更换源为阿里云"></a>一、CentOS 8 更换源为阿里云</h1><p>安装 wget 和 curl 组件：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">yum install wget -y</span><br><span class="line">yum install curl -y</span><br></pre></td></tr></table></figure><h2 id="1、备份原文件"><a href="#1、备份原文件" class="headerlink" title="1、备份原文件"></a>1、备份原文件</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mv</span> /etc/yum.repos.d/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/CentOS-Linux-BaseOS.repo.backup</span><br><span class="line"><span class="built_in">mv</span> /etc/yum.repos.d/CentOS-Linux-PowerTools.repo /etc/yum.repos.d/CentOS-Linux-PowerTools.repo.backup</span><br><span class="line"><span class="built_in">mv</span> /etc/yum.repos.d/CentOS-Linux-Extras.repo /etc/yum.repos.d/CentOS-Linux-Extras.repo.backup</span><br><span class="line"><span class="built_in">mv</span> /etc/yum.repos.d/CentOS-Linux-Plus.repo /etc/yum.repos.d/CentOS-Linux-Plus.repo.backup</span><br><span class="line"><span class="built_in">mv</span> /etc/yum.repos.d/CentOS-Linux-AppStream.repo /etc/yum.repos.d/CentOS-Linux-AppStream.repo.backup</span><br></pre></td></tr></table></figure><p>以上文件都需要重新命名，因为阿里云源里<code>Centos-8.repo</code>包含了上述所有文件，如果按照传统手法只更改<code>CentOS-Linux-BaseOS.repo</code>这个文件 会出现以下错误提示</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">Updating Subscription Management repositories.</span><br><span class="line">Unable to <span class="built_in">read</span> consumer identity</span><br><span class="line">This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.</span><br><span class="line">Repository AppStream is listed more than once <span class="keyword">in</span> the configuration</span><br><span class="line">Repository extras is listed more than once <span class="keyword">in</span> the configuration</span><br><span class="line">Repository PowerTools is listed more than once <span class="keyword">in</span> the configuration</span><br><span class="line">Repository centosplus is listed more than once <span class="keyword">in</span> the configuration</span><br></pre></td></tr></table></figure><h2 id="2、修改为阿里云"><a href="#2、修改为阿里云" class="headerlink" title="2、修改为阿里云"></a>2、修改为阿里云</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo http://mirrors.aliyun.com/repo/Centos-8.repo</span><br></pre></td></tr></table></figure><h2 id="3、运行-yum-makecache-生成缓存"><a href="#3、运行-yum-makecache-生成缓存" class="headerlink" title="3、运行 yum makecache 生成缓存"></a>3、运行 yum makecache 生成缓存</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">yum clean all</span><br><span class="line">yum makecache</span><br></pre></td></tr></table></figure><h1 id="二、安装-Docker"><a href="#二、安装-Docker" class="headerlink" title="二、安装 Docker"></a>二、安装 Docker</h1><h2 id="1、修改-Docker-源为阿里云"><a href="#1、修改-Docker-源为阿里云" class="headerlink" title="1、修改 Docker 源为阿里云"></a>1、修改 Docker 源为阿里云</h2><p>Docker 源配置文件</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">[root@centos ~]<span class="comment"># cat /etc/yum.repos.d/docker-ce.repo</span></span><br><span class="line">[docker-ce-stable]</span><br><span class="line">name=Docker CE Stable - <span class="variable">$basearch</span></span><br><span class="line">baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/<span class="variable">$basearch</span>/stable</span><br><span class="line">enabled=1</span><br><span class="line">gpgcheck=1</span><br><span class="line">gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg</span><br></pre></td></tr></table></figure><h2 id="2、安装-docker-ce"><a href="#2、安装-docker-ce" class="headerlink" title="2、安装 docker-ce"></a>2、安装 docker-ce</h2><p>默认安装：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">[root@centos /etc/yum.repos.d]<span class="comment"># yum install -y docker-ce</span></span><br><span class="line">上次元数据过期检查：0:02:30 前，执行于 2021年03月23日 星期二 10时56分16秒。</span><br><span class="line">错误：</span><br><span class="line"> 问题: package docker-ce-3:20.10.5-3.el7.x86_64 requires containerd.io &gt;= 1.4.1, but none of the providers can be installed</span><br><span class="line">  - cannot install the best candidate <span class="keyword">for</span> the job</span><br><span class="line">  - package containerd.io-1.4.3-3.1.el7.x86_64 is filtered out by modular filtering</span><br><span class="line">  - package containerd.io-1.4.3-3.2.el7.x86_64 is filtered out by modular filtering</span><br><span class="line">  - package containerd.io-1.4.4-3.1.el7.x86_64 is filtered out by modular filtering</span><br><span class="line">(尝试添加 <span class="string">&#x27;--skip-broken&#x27;</span> 来跳过无法安装的软件包 或 <span class="string">&#x27;--nobest&#x27;</span> 来不只使用最佳选择的软件包)</span><br></pre></td></tr></table></figure><p>centos 官方源的 containerd.io 版本太低，无法安装。<br>可以在 docker 官方源找到合适的版本，手动安装。</p><blockquote><p>Docker 官方源：<code>https://download.docker.com/linux/centos/</code><br>Docker 阿里云源：<code>https://mirrors.aliyun.com/docker-ce/linux/centos/</code></p></blockquote><p>从阿里云强制安装 containerd.io</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum install  --allowerasing -y https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/Packages/containerd.io-1.4.4-3.1.el8.x86_64.rpm</span><br></pre></td></tr></table></figure><p>安装 docker-ce 并设置权限</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 安装 Docker</span></span><br><span class="line">yum install -y docker-ce</span><br><span class="line"></span><br><span class="line"><span class="comment"># 启动Docker服务</span></span><br><span class="line">sudo systemctl start docker &amp;&amp; sudo systemctl status docker</span><br><span class="line"></span><br><span class="line"><span class="comment"># 设置开机自启动</span></span><br><span class="line">sudo systemctl <span class="built_in">enable</span> docker</span><br><span class="line"></span><br><span class="line"><span class="comment"># 建议添加普通用户至 Docker 组，并以普通用户运行 Docker。</span></span><br><span class="line">sudo usermod -aG docker <span class="variable">$USER</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 生效组用户变更配置</span></span><br><span class="line">newgrp docker</span><br></pre></td></tr></table></figure><h2 id="3、修改-docker-源"><a href="#3、修改-docker-源" class="headerlink" title="3、修改 docker 源"></a>3、修改 docker 源</h2><blockquote><p>配置文件路径为： &#x2F;etc&#x2F;docker&#x2F;daemon.json。<br>没有该文件的话，请先建一个。</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nano  /etc/docker/daemon.json</span><br></pre></td></tr></table></figure><p>配置文件内容：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line"> <span class="attr">&quot;registry-mirrors&quot;</span> <span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">   <span class="string">&quot;https://mirror.ccs.tencentyun.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">   <span class="string">&quot;http://registry.docker-cn.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">   <span class="string">&quot;http://docker.mirrors.ustc.edu.cn&quot;</span><span class="punctuation">,</span></span><br><span class="line">   <span class="string">&quot;http://hub-mirror.c.163.com&quot;</span></span><br><span class="line"> <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">&quot;insecure-registries&quot;</span> <span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">   <span class="string">&quot;registry.docker-cn.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">   <span class="string">&quot;docker.mirrors.ustc.edu.cn&quot;</span></span><br><span class="line"> <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">&quot;debug&quot;</span> <span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">&quot;experimental&quot;</span> <span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>建议使用阿里云，配置方式参见阿里云文档。</p><h2 id="4、安装-docker-compose"><a href="#4、安装-docker-compose" class="headerlink" title="4、安装 docker-compose"></a>4、安装 docker-compose</h2><p>运行命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -L <span class="string">&quot;https://github.com/docker/compose/releases/download/1.29.2/docker-compose-<span class="subst">$(uname -s)</span>-<span class="subst">$(uname -m)</span>&quot;</span> -o /usr/local/bin/docker-compose</span><br></pre></td></tr></table></figure><blockquote><p>docker-compose 不同版本的 yml 配置文件有差异。</p></blockquote><p>使用国内源：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`<span class="built_in">uname</span> -s`-`<span class="built_in">uname</span> -m` &gt; /usr/local/bin/docker-compose</span><br></pre></td></tr></table></figure><p>给 docker-compose 执行权限，运行命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> +x /usr/local/bin/docker-compose</span><br></pre></td></tr></table></figure><p>安装检查：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker-compose --version</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;CentOS 8 官方源 containerd.io 版本太低无法安装最新版 Docker-CE。&lt;/p&gt;
&lt;h1 id=&quot;一、CentOS-8-更换源为阿里云&quot;&gt;&lt;a href=&quot;#一、CentOS-8-更换源为阿里云&quot; class=&quot;headerlink&quot; title=</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="CentOS" scheme="https://www.aikiki.top/tags/CentOS/"/>
    
    <category term="Docker" scheme="https://www.aikiki.top/tags/Docker/"/>
    
  </entry>
  
  <entry>
    <title>Proxmox VE 6.2 国内源设置</title>
    <link href="https://www.aikiki.top/post/862b/"/>
    <id>https://www.aikiki.top/post/862b/</id>
    <published>2020-06-01T08:18:00.000Z</published>
    <updated>2023-11-16T08:34:53.000Z</updated>
    
    <content type="html"><![CDATA[<h1 id="更换-PVE-社区源"><a href="#更换-PVE-社区源" class="headerlink" title="更换 PVE 社区源"></a>更换 PVE 社区源</h1><h2 id="删除企业源"><a href="#删除企业源" class="headerlink" title="删除企业源"></a>删除企业源</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">rm</span> -rf /etc/apt/sources.list.d/pve-enterprise.list</span><br></pre></td></tr></table></figure><h2 id="下载秘钥"><a href="#下载秘钥" class="headerlink" title="下载秘钥"></a>下载秘钥</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg</span><br></pre></td></tr></table></figure><h2 id="添加社区源"><a href="#添加社区源" class="headerlink" title="添加社区源"></a>添加社区源</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">&quot;deb http://download.proxmox.wiki/debian/pve stretch pve-no-subscription&quot;</span> &gt;/etc/apt/sources.list.d/pve-install-repo.list</span><br></pre></td></tr></table></figure><h1 id="更换-Debian-国内源"><a href="#更换-Debian-国内源" class="headerlink" title="更换 Debian 国内源"></a>更换 Debian 国内源</h1><h2 id="备份原文件"><a href="#备份原文件" class="headerlink" title="备份原文件"></a>备份原文件</h2><p>备份原文件： <code>/etc/apt/sources.list</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cp</span> /etc/apt/sources.list /etc/apt/sources.list.bak</span><br></pre></td></tr></table></figure><h2 id="编辑源信息"><a href="#编辑源信息" class="headerlink" title="编辑源信息"></a>编辑源信息</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nano /etc/apt/sources.list</span><br></pre></td></tr></table></figure><p>在原文件增加下面的内容</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">deb http://mirrors.aliyun.com/debian/ buster main non-free contrib</span><br><span class="line">deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib</span><br><span class="line">deb http://mirrors.aliyun.com/debian-security buster/updates main</span><br><span class="line">deb-src http://mirrors.aliyun.com/debian-security buster/updates main</span><br><span class="line">deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib</span><br><span class="line">deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib</span><br><span class="line">deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib</span><br><span class="line">deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib</span><br></pre></td></tr></table></figure><h1 id="更新和升级"><a href="#更新和升级" class="headerlink" title="更新和升级"></a>更新和升级</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">apt update</span><br><span class="line">apt dist-upgrade</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;更换-PVE-社区源&quot;&gt;&lt;a href=&quot;#更换-PVE-社区源&quot; class=&quot;headerlink&quot; title=&quot;更换 PVE 社区源&quot;&gt;&lt;/a&gt;更换 PVE 社区源&lt;/h1&gt;&lt;h2 id=&quot;删除企业源&quot;&gt;&lt;a href=&quot;#删除企业源&quot; class=&quot;he</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="Proxmox VE" scheme="https://www.aikiki.top/tags/Proxmox-VE/"/>
    
  </entry>
  
  <entry>
    <title>使用 Windows 自带的远程桌面 mstsc 连接 CentOS 8</title>
    <link href="https://www.aikiki.top/post/def6/"/>
    <id>https://www.aikiki.top/post/def6/</id>
    <published>2020-05-09T01:43:00.000Z</published>
    <updated>2023-11-16T08:34:31.000Z</updated>
    
    <content type="html"><![CDATA[<p>CentOS 8 和 CentOS 7 有些差别。主要是：</p><blockquote><p>不要安装 <code>vnc-server</code></p></blockquote><h1 id="安装-XRDP"><a href="#安装-XRDP" class="headerlink" title="安装 XRDP"></a>安装 XRDP</h1><h2 id="切换为-root-用户："><a href="#切换为-root-用户：" class="headerlink" title="切换为 root 用户："></a>切换为 root 用户：</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo su - root</span><br></pre></td></tr></table></figure><h2 id="安装-epel-库"><a href="#安装-epel-库" class="headerlink" title="安装 epel 库"></a>安装 epel 库</h2><p>查询是否已经安装 epel 库:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -qa|grep epel</span><br></pre></td></tr></table></figure><p>如果 epel 库没有安装，则安装它：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum install epel-release</span><br></pre></td></tr></table></figure><h2 id="安装-XRDP-1"><a href="#安装-XRDP-1" class="headerlink" title="安装 XRDP"></a>安装 XRDP</h2><p>安装 xrdp 服务：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum install xrdp</span><br></pre></td></tr></table></figure><h1 id="设置-XRDP"><a href="#设置-XRDP" class="headerlink" title="设置 XRDP"></a>设置 XRDP</h1><h2 id="配置-XRDP"><a href="#配置-XRDP" class="headerlink" title="配置 XRDP"></a>配置 XRDP</h2><p>修改 xrdp 最大连接数（使用默认值，不修改也是可以的） ：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim /etc/xrdp/xrdp.ini</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">//默认是32：</span><br><span class="line">max_bpp=32</span><br></pre></td></tr></table></figure><h1 id="启动-XRDP"><a href="#启动-XRDP" class="headerlink" title="启动 XRDP"></a>启动 XRDP</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">//启动 xrdp 服务：</span><br><span class="line">systemctl start xrdp</span><br><span class="line"></span><br><span class="line">//设置 xrdp 服务开机自启动：</span><br><span class="line">systemctl enable xrdp</span><br></pre></td></tr></table></figure><h1 id="设置防火墙"><a href="#设置防火墙" class="headerlink" title="设置防火墙"></a>设置防火墙</h1><h2 id="开放端口-3389"><a href="#开放端口-3389" class="headerlink" title="开放端口 3389"></a>开放端口 3389</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">//开启 3389 端口</span><br><span class="line">firewall-cmd --zone=public --add-port=3389 /tcp --permanent</span><br><span class="line"></span><br><span class="line">//重启防火墙</span><br><span class="line">firewall-cmd --reload</span><br></pre></td></tr></table></figure><p>重启防火墙后，查看已开放的端口可以看见 3389 端口已经开启。</p><h2 id="关闭-SELinux"><a href="#关闭-SELinux" class="headerlink" title="关闭 SELinux"></a>关闭 SELinux</h2><p>SELinux 应该关闭它。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">//查看 SELinux 状态：</span><br><span class="line">sestatus</span><br><span class="line"></span><br><span class="line">//临时关闭 SELinux：</span><br><span class="line">setenforce 0</span><br></pre></td></tr></table></figure><p>不过，我们要永久关闭 SELinux：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim /etc/selinux/config</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">// 设置 SELinux 关闭</span><br><span class="line">SELINUX=disabled</span><br></pre></td></tr></table></figure><p>你也可以不关闭 SELinux，但需要增加 3389 端口。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">// 在 http 策略添加开放 3389 端口</span><br><span class="line">semanage port -a -t http_port_t -p tcp 3389</span><br></pre></td></tr></table></figure><p>其它 SELinux 操作：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">// 查看所有开放端口</span><br><span class="line">semanage port -l</span><br><span class="line"></span><br><span class="line">// 查看 3389 端口设置情况</span><br><span class="line">semanage port -l | grep 3389</span><br><span class="line"></span><br><span class="line">// 查看 selinux 针对 http 策略开放的端口</span><br><span class="line">semanage port -l | grep http_port_t</span><br><span class="line"></span><br><span class="line">// 关闭 http 策略的 3389 端口</span><br><span class="line">semanage port -d -t http_port_t -p tcp 3389</span><br></pre></td></tr></table></figure><h1 id="其它连接方式"><a href="#其它连接方式" class="headerlink" title="其它连接方式"></a>其它连接方式</h1><p>MobaXterm 是一个支持 rdp 协议的远程桌面软件，相当于 Windows 自带的远程桌面软件 mstsc。</p><p>使用 MobaXterm 替代 mstsc 的好处是可以进行<code>粘贴复制</code> 操作。也就是 Windows 复制，直接可以粘贴到 CentOS 上，或者 CentOS 复制直接粘贴到 Windows 上。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;CentOS 8 和 CentOS 7 有些差别。主要是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;不要安装 &lt;code&gt;vnc-server&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;安装-XRDP&quot;&gt;&lt;a href=&quot;#安装-XRDP&quot; clas</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="CentOS" scheme="https://www.aikiki.top/tags/CentOS/"/>
    
  </entry>
  
  <entry>
    <title>给 Docker 中的 PHP 安装 GD 扩展</title>
    <link href="https://www.aikiki.top/post/f10f/"/>
    <id>https://www.aikiki.top/post/f10f/</id>
    <published>2020-03-25T05:28:00.000Z</published>
    <updated>2023-11-16T08:34:19.000Z</updated>
    
    <content type="html"><![CDATA[<p>安装 php:5.6.40-fpm 发现没有 GD 库。</p><p>直接通过 <code>docker-php-ext-install gd</code> 安装。执行安装后查询结果居然是没有安装，看来的自己编译。</p><h1 id="进入-php-容器"><a href="#进入-php-容器" class="headerlink" title="进入 php 容器"></a>进入 <code>php</code> 容器</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ docker <span class="built_in">exec</span> -it &lt;CONTAINER-ID or CONTAINER-NAME&gt; /bin/bash</span><br></pre></td></tr></table></figure><h1 id="修改-Debian-软件源镜像站"><a href="#修改-Debian-软件源镜像站" class="headerlink" title="修改 Debian 软件源镜像站"></a>修改 <code>Debian</code> 软件源镜像站</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"># 进入软件源目录</span><br><span class="line">cd /etc/apt</span><br><span class="line"></span><br><span class="line"># 备份源文件</span><br><span class="line">cp sources.list sources.list.backup</span><br><span class="line"></span><br><span class="line"># 替换源地址为 aliyun</span><br><span class="line">sed -i &#x27;s/deb.debian.org/mirrors.aliyun.com/g&#x27; sources.list</span><br><span class="line">sed -i &#x27;s/security.debian.org/mirrors.aliyun.com/g&#x27; sources.list</span><br><span class="line"></span><br><span class="line"># 更新软件源</span><br><span class="line">apt update</span><br></pre></td></tr></table></figure><h1 id="安装-GD-库"><a href="#安装-GD-库" class="headerlink" title="安装 GD 库"></a>安装 <code>GD</code> 库</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"># 安装需要的库文件</span><br><span class="line">apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev</span><br><span class="line"></span><br><span class="line"># 解压源码</span><br><span class="line">docker-php-source extract</span><br><span class="line"></span><br><span class="line"># 进入GD 源码文件夹</span><br><span class="line">cd /usr/src/php/ext/gd</span><br><span class="line"></span><br><span class="line"># 设置编译环境</span><br><span class="line">docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2</span><br><span class="line"></span><br><span class="line"># 编译安装</span><br><span class="line">docker-php-ext-install gd</span><br><span class="line"></span><br><span class="line"># 查看安装结果</span><br><span class="line">php -m | grep gd</span><br></pre></td></tr></table></figure><h1 id="重启容器"><a href="#重启容器" class="headerlink" title="重启容器"></a>重启容器</h1><p>重启即可。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;安装 php:5.6.40-fpm 发现没有 GD 库。&lt;/p&gt;
&lt;p&gt;直接通过 &lt;code&gt;docker-php-ext-install gd&lt;/code&gt; 安装。执行安装后查询结果居然是没有安装，看来的自己编译。&lt;/p&gt;
&lt;h1 id=&quot;进入-php-容器&quot;&gt;&lt;a hr</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="PHP" scheme="https://www.aikiki.top/tags/PHP/"/>
    
    <category term="Docker" scheme="https://www.aikiki.top/tags/Docker/"/>
    
  </entry>
  
  <entry>
    <title>Docker 搭建 DNMP 环境</title>
    <link href="https://www.aikiki.top/post/6f9d/"/>
    <id>https://www.aikiki.top/post/6f9d/</id>
    <published>2020-03-22T08:13:00.000Z</published>
    <updated>2023-11-16T08:35:20.000Z</updated>
    
    <content type="html"><![CDATA[<p>Linxu 下搭建 Nginx、PHP 和 MariaDB 称之为 <code>LNMP</code>，那么我们在 Docker 下搭建就叫 <code>DNMP</code> 吧（虽然我不知道这样叫是否正确）。</p><h1 id="配置单机网桥"><a href="#配置单机网桥" class="headerlink" title="配置单机网桥"></a>配置单机网桥</h1><p>由于这几个镜像相互之间需要通信，最好的解决方案是创建一个容器网络。<br>因此我们首先需要创建 Docker 网络 <code>localnet</code>，用于 docker 之间的通信。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"># Linux</span><br><span class="line">$ docker network create -d bridge localnet</span><br><span class="line"></span><br><span class="line"># Windows</span><br><span class="line">&gt; docker network create -d nat localnet</span><br></pre></td></tr></table></figure><p>查看创建好的网络。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">$ docker network list</span><br><span class="line">NETWORK ID          NAME                DRIVER              SCOPE</span><br><span class="line">b7228b827811        bridge              bridge              <span class="built_in">local</span></span><br><span class="line">af39f057ff30        host                host                <span class="built_in">local</span></span><br><span class="line"></span><br><span class="line">363014e0c45c        localnet            bridge              <span class="built_in">local</span></span><br><span class="line"></span><br><span class="line">007b2a216146        none                null                <span class="built_in">local</span></span><br></pre></td></tr></table></figure><p>NAME 为 <code>localnet</code> 的网络即为新建的网络，后续创建的 Docker 容器就将加入该网络中。</p><h1 id="安装-php7"><a href="#安装-php7" class="headerlink" title="安装 php7"></a>安装 <code>php7</code></h1><h2 id="下载-php7-镜像"><a href="#下载-php7-镜像" class="headerlink" title="下载 php7 镜像"></a>下载 <code>php7</code> 镜像</h2><p>php 有很多版本，我们可以在 <a href="https://hub.docker.com/">官方仓库</a> 搜索自己需要的镜像。<br>找到需要的镜像后，首先下载镜像：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ docker pull php:7.4.4-fpm</span><br></pre></td></tr></table></figure><blockquote><p>这里以 <code>php:7.4.4-fpm</code> 为例。</p></blockquote><p>镜像是否下载成功，可以通过以下指令确认。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">$ docker images</span><br><span class="line">REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE</span><br><span class="line">php                 7.4.4-fpm           7d64b9cd1388        2 days ago          405MB</span><br></pre></td></tr></table></figure><h2 id="安装-php7-镜像到容器"><a href="#安装-php7-镜像到容器" class="headerlink" title="安装 php7 镜像到容器"></a>安装 <code>php7</code> 镜像到容器</h2><p>现在可以将镜像运行到容器中。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -d --name php7 --network localnet -v /home/&lt;your-username&gt;/docker/nginx/www/html:/var/www/html --restart=always php:7.4.4-fpm</span><br></pre></td></tr></table></figure><blockquote><p>参数说明：</p><ul><li><code>&lt;your-username&gt;</code> 表示系统用户名 <code>我习惯将 docker 相关文件放在默认用户名下面便于备份(下同)</code></li><li>-d <code>后台方式运行</code></li><li>–name php7 <code>容器名称</code></li><li>–network localnet <code>加入到网络 localnet 中</code></li><li>–restart&#x3D;always <code>系统重启后自动运行</code></li><li>–privileged&#x3D;true <code>应用容器获取宿主机 root 权限</code></li><li>-v &#x2F;home&#x2F;&lt;your-username&gt;&#x2F;docker&#x2F;nginx&#x2F;www&#x2F;html:&#x2F;var&#x2F;www&#x2F;html <code>将 nginx 的网站根目录(宿主机目录)映射到 php7 容器的网站根目录</code></li><li>-v &#x2F;home&#x2F;&lt;your-username&gt;&#x2F;docker&#x2F;php&#x2F;<a href="http://www.conf/usr/local/etc/php-fpm.d/www.conf">www.conf:/usr/local/etc/php-fpm.d/www.conf</a> <code>php 的配置文件映射（可选）</code></li><li>-v &#x2F;home&#x2F;&lt;your-username&gt;&#x2F;docker&#x2F;php&#x2F;log:&#x2F;var&#x2F;log <code>日志目录映射（可选）</code><br>php7 需要使用 9000 端口提供给 nginx 使用，由于使用了 docker 容器网络 localnet 在容器之间通信，因此这里就不需要再将 9000 端口映射到宿主机。</li></ul></blockquote><p>容器运行成功，可以执行以下指令查看运行情况：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">$ docker ps -a</span><br><span class="line">CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES</span><br><span class="line"></span><br><span class="line">10d9826eef99        php:7.4.4-fpm       <span class="string">&quot;docker-php-entrypoi…&quot;</span>   4 seconds ago       Up 4 seconds        9000/tcp            php7</span><br></pre></td></tr></table></figure><h2 id="安装-mysqli-扩展"><a href="#安装-mysqli-扩展" class="headerlink" title="安装 mysqli 扩展"></a>安装 <code>mysqli</code> 扩展</h2><p>php 默认不安装 <code>mysqli</code> 扩展，我们需要手动安装。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"># 进入容器</span><br><span class="line">$ docker exec -ti &lt;your-php-container&gt; /bin/bash</span><br><span class="line"></span><br><span class="line"># 安装 mysqli 扩展</span><br><span class="line"></span><br><span class="line">&gt;&gt; docker-php-ext-install mysqli</span><br><span class="line"></span><br><span class="line">#  安装 pdo 和 pdo_mysql (可选)</span><br><span class="line"></span><br><span class="line">&gt;&gt; docker-php-ext-install pdo pdo_mysql</span><br><span class="line"></span><br><span class="line"># 国外网站找到的参考资料，还需要做以下两步，实测不需要。这里做个记录备忘。</span><br><span class="line"></span><br><span class="line"># 执行第一步会提示：warning: mysqli (mysqli.so) is already loaded!</span><br><span class="line"></span><br><span class="line"># 执行第二步会提示：bash: apachectl: command not found</span><br><span class="line"></span><br><span class="line">&gt;&gt; docker-php-ext-enable mysqli</span><br><span class="line"></span><br><span class="line">&gt;&gt; apachectl restart</span><br></pre></td></tr></table></figure><blockquote><p><code>&lt;your-php-container&gt;</code> 表示容器名称。</p></blockquote><p>安装成功后，退出容器，然后重启容器即可。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"># 退出容器</span><br><span class="line">$ exit</span><br><span class="line"></span><br><span class="line"># 重启容器</span><br><span class="line">$ docker restart &lt;your-php-container&gt;</span><br></pre></td></tr></table></figure><blockquote><p>有的扩展不用重启，自己试试即可。</p></blockquote><h1 id="安装-nginx"><a href="#安装-nginx" class="headerlink" title="安装 nginx"></a>安装 <code>nginx</code></h1><h2 id="下载-nginx-镜像"><a href="#下载-nginx-镜像" class="headerlink" title="下载 nginx 镜像"></a>下载 <code>nginx</code> 镜像</h2><p>nginx 可以使用以下指令直接下载镜像，默认下载最新版。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ docker pull nginx</span><br></pre></td></tr></table></figure><p>下载完成后，检查一下下载镜像。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">$ docker images</span><br><span class="line">REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE</span><br><span class="line">php                 7.4.4-fpm           7d64b9cd1388        2 days ago          405MB</span><br><span class="line">nginx               latest              6678c7c2e56c        2 weeks ago         127MB</span><br></pre></td></tr></table></figure><h2 id="安装-nginx-镜像到容器"><a href="#安装-nginx-镜像到容器" class="headerlink" title="安装 nginx 镜像到容器"></a>安装 <code>nginx</code> 镜像到容器</h2><p>执行以下指令将镜像运行到容器中。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -d --name nginx --network localnet -p 80:80 -p 443:443 -v /home/&lt;your-username&gt;/docker/nginx/etc/nginx:/etc/nginx -v /home/&lt;your-username&gt;/docker/nginx/www/html:/usr/share/nginx/html -v /home/&lt;your-username&gt;/docker/nginx/logs:/var/log/nginx --restart=always nginx</span><br></pre></td></tr></table></figure><blockquote><p>参数说明</p><ul><li>-d <code>后台执行</code></li><li>–name nginx <code>容器名称</code></li><li>–network localnet <code>加入到网络 localnet 中</code></li><li>–restart&#x3D;always <code>系统重启后自动运行</code></li><li>–privileged&#x3D;true <code>应用容器获取宿主机 root 权限</code></li><li>-p 80:80 <code>映射 80 端口到宿主机</code></li><li>-p 443:443 <code>映射 443 端口到宿主机</code></li><li>-v &#x2F;home&#x2F;&lt;your-username&gt;&#x2F;docker&#x2F;nginx&#x2F;etc&#x2F;nginx:&#x2F;etc&#x2F;nginx <code>映射 nginx 配置文件夹</code></li><li>-v &#x2F;home&#x2F;&lt;your-username&gt;&#x2F;docker&#x2F;nginx&#x2F;www&#x2F;html:&#x2F;usr&#x2F;share&#x2F;nginx&#x2F;html <code>映射 nginx 网站根路径</code></li><li>-v &#x2F;home&#x2F;&lt;your-username&gt;&#x2F;docker&#x2F;nginx&#x2F;logs:&#x2F;var&#x2F;log&#x2F;nginx <code>映射日志文件夹</code></li></ul></blockquote><h2 id="配置-nginx-支持-php"><a href="#配置-nginx-支持-php" class="headerlink" title="配置 nginx 支持 php"></a>配置 <code>nginx</code> 支持 <code>php</code></h2><h3 id="从容器中复制默认配置文件"><a href="#从容器中复制默认配置文件" class="headerlink" title="从容器中复制默认配置文件"></a>从容器中复制默认配置文件</h3><p>如果没有 nginx 的<code>配置文件</code>，可以暂不映射配置文件夹，先把容器临时跑起后，从容器中将配置文件复制出来后，再删除容器重新安装。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"> <span class="comment"># 从容器中复制文件, nginx 是容器名称，“:”号后面是要复制的路径，最后是要目的路径。</span></span><br><span class="line">$ docker <span class="built_in">cp</span> nginx:/etc/nginx ./</span><br></pre></td></tr></table></figure><h3 id="修改-php-配置"><a href="#修改-php-配置" class="headerlink" title="修改 php 配置"></a>修改 <code>php</code> 配置</h3><p>修改宿主机中的 nginx 配置文件，本文地址是：<code>/home/&lt;your-username&gt;/docker/nginx/etc/nginx</code><br>在配置文件中增加或者修改 <code>php</code> 解析配置如下：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">  location ~ \.php$ &#123;</span><br><span class="line"></span><br><span class="line">try_files      $uri = 404;</span><br><span class="line">      fastcgi_pass   php7:9000;</span><br><span class="line">      fastcgi_param  SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;</span><br><span class="line">      include        fastcgi_params;</span><br><span class="line">  &#125;</span><br></pre></td></tr></table></figure><blockquote><p>注意两个参数：</p><ul><li>php7 <code>这是 php 容器的名字，nginx 通过该名字访问 php 容器。</code></li><li>&#x2F;var&#x2F;www&#x2F;html&#x2F; <code>这是 php 容器中的网站根路径（不是宿主机路径）</code></li></ul></blockquote><h2 id="测试-nginx"><a href="#测试-nginx" class="headerlink" title="测试 nginx"></a>测试 <code>nginx</code></h2><h3 id="查看容器运行"><a href="#查看容器运行" class="headerlink" title="查看容器运行"></a>查看容器运行</h3><p>容器运行成功，执行以下指令查看运行情况：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$ docker ps -a</span><br><span class="line">CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES</span><br><span class="line">fa527e2f7b17        nginx               <span class="string">&quot;nginx -g &#x27;daemon of…&quot;</span>   6 seconds ago       Up 5 seconds        0.0.0.0:80-&gt;80/tcp, 0.0.0.0:443-&gt;443/tcp   nginx</span><br><span class="line"></span><br><span class="line">10d9826eef99        php:7.4.4-fpm       <span class="string">&quot;docker-php-entrypoi…&quot;</span>   3 hours ago         Up 33 minutes       9000/tcp                                   php7</span><br></pre></td></tr></table></figure><h3 id="测试-www-服务"><a href="#测试-www-服务" class="headerlink" title="测试 www 服务"></a>测试 www 服务</h3><p>现在你可以输入 <code>宿主机的 ip 地址</code> 来测试你的网站。<br>在此之前别忘了在网站根目录放入测试网页：index.html。</p><h3 id="测试-php-服务"><a href="#测试-php-服务" class="headerlink" title="测试 php 服务"></a>测试 <code>php</code> 服务</h3><p>在网站根目录新建 php 测试文件：<code>phpinfo.php</code>，并输入以下内容：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">&lt;?</span><br><span class="line">phpinfo();</span><br><span class="line"></span><br><span class="line">?&gt;</span><br></pre></td></tr></table></figure><p>在浏览器输入该文件地址进行测试，正常会显示 PHP 相关信息。</p><h2 id="设置网站根目录所有权权限"><a href="#设置网站根目录所有权权限" class="headerlink" title="设置网站根目录所有权权限"></a>设置网站根目录所有权权限</h2><p>现在 nginx 已经正常运行，但是遇见网站程序要写入硬盘的时候，系统会提示文件夹没有写入权限。<br>那么，我们需要到容器中设置网站根目录的所有权（当然，你也可以设置到需要写入权限的文件夹上）。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"># 进入容器</span><br><span class="line">$ docker exec -it nginx /bin/bash</span><br><span class="line"></span><br><span class="line"># 进入 nginx 目录</span><br><span class="line">$ cd /usr/share/nginx</span><br><span class="line"></span><br><span class="line"># 设置网站根目录所有权为  www-data</span><br><span class="line">$ chown -R www-data:www-data ./</span><br></pre></td></tr></table></figure><blockquote><p>docker 中运行的 nginx 和 php 都是以 www-data 身份运行的。</p></blockquote><h1 id="安装-mariadb"><a href="#安装-mariadb" class="headerlink" title="安装 mariadb"></a>安装 <code>mariadb</code></h1><h2 id="下载-mariadb-镜像"><a href="#下载-mariadb-镜像" class="headerlink" title="下载 mariadb 镜像"></a>下载 <code>mariadb</code> 镜像</h2><p>mariadb 也可以使用以下指令直接下载镜像，默认下载最新版。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ docker pull mariadb</span><br></pre></td></tr></table></figure><p>下载完成后，检查一下下载镜像。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$ docker images</span><br><span class="line">REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE</span><br><span class="line">mariadb             latest              37f5f0a258bf        41 hours ago        356MB</span><br><span class="line">php                 7.4.4-fpm           7d64b9cd1388        2 days ago          405MB</span><br><span class="line">nginx               latest              6678c7c2e56c        2 weeks ago         127MB</span><br></pre></td></tr></table></figure><h2 id="安装-mariadb-镜像到容器"><a href="#安装-mariadb-镜像到容器" class="headerlink" title="安装 mariadb 镜像到容器"></a>安装 <code>mariadb</code> 镜像到容器</h2><p>执行以下指令将镜像运行到容器中。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -d --name mariadb  --network localnet -e MYSQL_ROOT_PASSWORD=rootpassword -e MYSQL_USER=username -e MYSQL_PASSWORD=userpassword -v /home/&lt;your-username&gt;/docker/mariadb/data:/var/lib/mysql --restart=always mariadb --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci</span><br></pre></td></tr></table></figure><blockquote><p>参数说明</p><ul><li>-d <code>后台执行</code></li><li>–name mariadb <code>容器名称（注意：php 程序配置数据库地址，请填入该名称）</code></li><li>–network localnet <code>加入到网络 localnet 中</code></li><li>–restart&#x3D;always <code>系统重启后自动运行</code></li><li>–privileged&#x3D;true <code>应用容器获取宿主机 root 权限</code></li><li>-p 3306:3306 <code>映射 3360 端口到宿主机（如不提供外网访问，可不映射）</code></li><li>-e MYSQL_ROOT_PASSWORD&#x3D;rootpassword <code>root 密码</code></li><li>-e MYSQL_USER&#x3D;username <code>创建普通用户名</code></li><li>-e MYSQL_PASSWORD&#x3D;userpassword <code>创建用户的密码</code></li><li>-v &#x2F;home&#x2F;&lt;your-username&gt;&#x2F;docker&#x2F;mariadb&#x2F;data:&#x2F;var&#x2F;lib&#x2F;mysql <code>库文件保存路径映射</code></li><li>–character-set-server&#x3D;utf8mb4 <code>字符集（一定要放在参数的末尾）</code></li><li>–collation-server&#x3D;utf8mb4_unicode_ci <code>字符集（一定要放在参数的末尾）</code></li></ul></blockquote><p>成功运行，查看容器运行情况。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">$ docker ps -a</span><br><span class="line">CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES</span><br><span class="line"></span><br><span class="line">6df4e2434b29        mariadb             <span class="string">&quot;docker-entrypoint.s…&quot;</span>   6 seconds ago       Up 5 seconds        3306/tcp                                   mariadb</span><br><span class="line">fa527e2f7b17        nginx               <span class="string">&quot;nginx -g &#x27;daemon of…&quot;</span>   46 minutes ago      Up 46 minutes       0.0.0.0:80-&gt;80/tcp, 0.0.0.0:443-&gt;443/tcp   nginx</span><br><span class="line"></span><br><span class="line">10d9826eef99        php:7.4.4-fpm       <span class="string">&quot;docker-php-entrypoi…&quot;</span>   4 hours ago         Up About an hour    9000/tcp                                   php7</span><br></pre></td></tr></table></figure><h1 id="安装-phpMyAdmin"><a href="#安装-phpMyAdmin" class="headerlink" title="安装 phpMyAdmin"></a>安装 <code>phpMyAdmin</code></h1><h2 id="下载和安装-phpMyAdmin"><a href="#下载和安装-phpMyAdmin" class="headerlink" title="下载和安装 phpMyAdmin"></a>下载和安装 phpMyAdmin</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"># 进入 nginx 根目录</span><br><span class="line">cd /home/&lt;your-username&gt;/docker/nginx/www/html</span><br><span class="line"></span><br><span class="line"># 下载 phpMyAdmin 压缩文件</span><br><span class="line">wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz -O phpMyAdmin.tar.gz</span><br><span class="line"></span><br><span class="line"># 解压缩</span><br><span class="line">tar xzvf phpMyAdmin.tar.gz</span><br><span class="line"></span><br><span class="line"># 重命名文件夹，源文件夹名称请根据实际情况修改</span><br><span class="line">mv phpMyAdmin-4.8.5-all-languages phpMyAdmin</span><br><span class="line"></span><br><span class="line"># 删除压缩文件</span><br><span class="line">rm phpMyAdmin.tar.gz</span><br></pre></td></tr></table></figure><h2 id="配置-phpMyAdmin"><a href="#配置-phpMyAdmin" class="headerlink" title="配置 phpMyAdmin"></a>配置 phpMyAdmin</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"># 进入 phpMyAdmin 目录</span><br><span class="line">cd phpMyAdmin</span><br><span class="line"></span><br><span class="line"># 创建 phpMyAdmin 配置文件</span><br><span class="line">cp config.sample.inc.php config.inc.php</span><br><span class="line"></span><br><span class="line"># 编辑配置文件</span><br><span class="line">vim config.inc.php</span><br></pre></td></tr></table></figure><p>修改以下配置信息：</p><p>设置 32 位长度的加密密码。</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;blowfish_secret&#x27;</span>] = <span class="string">&#x27;abcdefghijklmnopqrstuvwxyz123456&#x27;</span>;</span></span><br></pre></td></tr></table></figure><blockquote><p>点击 <a href="https://passgen.co/?pw=32&sy=0">这里</a> 生成 32 位长度密码。</p></blockquote><p>设置服务器名称：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;host&#x27;</span>] = <span class="string">&#x27;databasename&#x27;</span>;</span></span><br></pre></td></tr></table></figure><blockquote><p>数据名称是 MariaDB 的容器名称，本示例中是 <code>mariadb</code>。</p></blockquote><p>开启高级功能：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;pmadb&#x27;</span>] = <span class="string">&#x27;phpmyadmin&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;bookmarktable&#x27;</span>] = <span class="string">&#x27;pma__bookmark&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;relation&#x27;</span>] = <span class="string">&#x27;pma__relation&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;table_info&#x27;</span>] = <span class="string">&#x27;pma__table_info&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;table_coords&#x27;</span>] = <span class="string">&#x27;pma__table_coords&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;pdf_pages&#x27;</span>] = <span class="string">&#x27;pma__pdf_pages&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;column_info&#x27;</span>] = <span class="string">&#x27;pma__column_info&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;history&#x27;</span>] = <span class="string">&#x27;pma__history&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;table_uiprefs&#x27;</span>] = <span class="string">&#x27;pma__table_uiprefs&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;tracking&#x27;</span>] = <span class="string">&#x27;pma__tracking&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;userconfig&#x27;</span>] = <span class="string">&#x27;pma__userconfig&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;recent&#x27;</span>] = <span class="string">&#x27;pma__recent&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;favorite&#x27;</span>] = <span class="string">&#x27;pma__favorite&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;users&#x27;</span>] = <span class="string">&#x27;pma__users&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;usergroups&#x27;</span>] = <span class="string">&#x27;pma__usergroups&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;navigationhiding&#x27;</span>] = <span class="string">&#x27;pma__navigationhiding&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;savedsearches&#x27;</span>] = <span class="string">&#x27;pma__savedsearches&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;central_columns&#x27;</span>] = <span class="string">&#x27;pma__central_columns&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;designer_settings&#x27;</span>] = <span class="string">&#x27;pma__designer_settings&#x27;</span>;</span></span><br><span class="line"><span class="meta prompt_">$</span><span class="language-bash">cfg[<span class="string">&#x27;Servers&#x27;</span>][<span class="variable">$i</span>][<span class="string">&#x27;export_templates&#x27;</span>] = <span class="string">&#x27;pma__export_templates&#x27;</span>;</span></span><br></pre></td></tr></table></figure><blockquote><p>将前面的注释代码去掉即可。</p></blockquote><h2 id="配置-cfg-‘TempDir’-权限"><a href="#配置-cfg-‘TempDir’-权限" class="headerlink" title="配置 $cfg[‘TempDir’] 权限"></a>配置 $cfg[‘TempDir’] 权限</h2><p>phpMyAdmin 为了提高性能需要写入临时文件，配置临时目录如下。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"># 进入容器</span><br><span class="line">$ docker exec -it nginx /bin/bash</span><br><span class="line"></span><br><span class="line"># 进入 nginx 目录</span><br><span class="line">$ cd /usr/share/nginx/www/phpMyAdmin</span><br><span class="line"></span><br><span class="line"># 新建文件夹 tmp</span><br><span class="line">mkdir tmp</span><br><span class="line"></span><br><span class="line"># 设置文件夹所有权</span><br><span class="line">chown -R www-data:www-data tmp</span><br><span class="line"></span><br><span class="line"># 设置文件夹读写权限</span><br><span class="line">chmod -R 700 tmp</span><br></pre></td></tr></table></figure><blockquote><p>文件夹的所有权如果再 nginx 配置阶段已经设置，这里可忽略。<br>只需要检查写入权限即可。</p></blockquote><h2 id="登录-phpMyAdmin"><a href="#登录-phpMyAdmin" class="headerlink" title="登录 phpMyAdmin"></a>登录 phpMyAdmin</h2><p>现在你可以输入 phpMyAdmin 的地址访问你的数据库了。</p><p>首次登录系统会提示一个错误信息：<br><code>phpMyAdmin 高级功能尚未完全设置，部分功能未激活。查找原因。</code></p><p>点击后面的查找原因，按提示创建数据库 phpMyAdmin 即可。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;Linxu 下搭建 Nginx、PHP 和 MariaDB 称之为 &lt;code&gt;LNMP&lt;/code&gt;，那么我们在 Docker 下搭建就叫 &lt;code&gt;DNMP&lt;/code&gt; 吧（虽然我不知道这样叫是否正确）。&lt;/p&gt;
&lt;h1 id=&quot;配置单机网桥&quot;&gt;&lt;a href=&quot;#</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="MariaDB" scheme="https://www.aikiki.top/tags/MariaDB/"/>
    
    <category term="PHP" scheme="https://www.aikiki.top/tags/PHP/"/>
    
    <category term="phpMyAdmin" scheme="https://www.aikiki.top/tags/phpMyAdmin/"/>
    
    <category term="Nginx" scheme="https://www.aikiki.top/tags/Nginx/"/>
    
    <category term="Docker" scheme="https://www.aikiki.top/tags/Docker/"/>
    
  </entry>
  
  <entry>
    <title>Debian 10 安装 Docker-CE</title>
    <link href="https://www.aikiki.top/post/fed3/"/>
    <id>https://www.aikiki.top/post/fed3/</id>
    <published>2020-03-22T06:13:00.000Z</published>
    <updated>2023-11-16T08:35:32.000Z</updated>
    
    <content type="html"><![CDATA[<h1 id="安装-docker"><a href="#安装-docker" class="headerlink" title="安装 docker"></a>安装 <code>docker</code></h1><blockquote><p>这里使用阿里云的源进行安装。</p></blockquote><h2 id="安装任何组件前的好习惯更新"><a href="#安装任何组件前的好习惯更新" class="headerlink" title="安装任何组件前的好习惯更新"></a>安装任何组件前的好习惯<code>更新</code></h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-get update</span><br></pre></td></tr></table></figure><h2 id="安装必要的系统工具"><a href="#安装必要的系统工具" class="headerlink" title="安装必要的系统工具"></a>安装必要的系统工具</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-get -y install apt-transport-https ca-certificates curl software-properties-common</span><br></pre></td></tr></table></figure><h2 id="安装-GPG-证书"><a href="#安装-GPG-证书" class="headerlink" title="安装 GPG 证书"></a>安装 GPG 证书</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -</span><br></pre></td></tr></table></figure><h2 id="写入软件源"><a href="#写入软件源" class="headerlink" title="写入软件源"></a>写入软件源</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">add-apt-repository <span class="string">&quot;deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/debian <span class="subst">$(lsb_release -cs)</span> stable&quot;</span></span><br></pre></td></tr></table></figure><h2 id="更新并安装-docker-ce"><a href="#更新并安装-docker-ce" class="headerlink" title="更新并安装 docker-ce"></a>更新并安装 <code>docker-ce</code></h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">apt-get -y update</span><br><span class="line">apt-get -y install docker-ce</span><br></pre></td></tr></table></figure><p>正常配置好 docker 之后，每次运行 docker 命令需要在前面加：sudo，如：sudo docker images。通过将当前用户添加进 docker 组，以后可以直接运行（docker images）。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">sudo groupadd docker</span><br><span class="line">sudo gpasswd -a <span class="variable">$&#123;USER&#125;</span> docker</span><br></pre></td></tr></table></figure><p>重启 docker 服务，并退出当前用户重新登陆。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">sudo service docker restart     <span class="comment"># 重启docker服务</span></span><br><span class="line">su root                         <span class="comment"># 切换到root用户</span></span><br><span class="line">su <span class="variable">$&#123;USER&#125;</span>                      <span class="comment"># 再切换到原来的应用用户以上配置才生效</span></span><br></pre></td></tr></table></figure><p>备注：</p><blockquote><p>以上命令无需更改，直接拷贝运行即可（ ${USER}命令能直接识别到当前用户名）。</p></blockquote><h2 id="查看-docker-版本"><a href="#查看-docker-版本" class="headerlink" title="查看 docker 版本"></a>查看 docker 版本</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker -v</span><br></pre></td></tr></table></figure><p>系统显示：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Docker version 19.03.8, build afacb8b7f0</span><br></pre></td></tr></table></figure><p>docker-ce 安装成功。</p><h1 id="使用国内镜像"><a href="#使用国内镜像" class="headerlink" title="使用国内镜像"></a>使用国内镜像</h1><p>Docker 官方镜像经常掉线，只能换国内源。</p><p>国内的镜像源有：</p><ul><li>docker 官方中国区 <code>https://registry.docker-cn.com</code></li><li>网易 <code>http://hub-mirror.c.163.com</code></li><li>ustc <code>http://docker.mirrors.ustc.edu.cn</code></li><li>阿里云 <code>http://&lt;阿里云镜像加速器 ID&gt;.mirror.aliyuncs.com</code></li></ul><blockquote><p>阿里云的镜像加速需要到阿里云 <code>容器镜像服务</code> - <code>镜像加速器</code> 获取阿里云镜像加速器 ID。</p></blockquote><h2 id="编辑源配置文件"><a href="#编辑源配置文件" class="headerlink" title="编辑源配置文件"></a>编辑源配置文件</h2><blockquote><p>配置文件路径为： <code>/etc/docker/daemon.json</code>。<br>没有该文件的话，请先建一个。</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nano /etc/docker/daemon.json</span><br></pre></td></tr></table></figure><p>修改为以下内容:</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;registry-mirrors&quot;</span> <span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="string">&quot;http://&lt;阿里云镜像加速器 ID&gt;.mirror.aliyuncs.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="string">&quot;http://registry.docker-cn.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="string">&quot;http://docker.mirrors.ustc.edu.cn&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="string">&quot;http://hub-mirror.c.163.com&quot;</span></span><br><span class="line">  <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;insecure-registries&quot;</span> <span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="string">&quot;registry.docker-cn.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="string">&quot;docker.mirrors.ustc.edu.cn&quot;</span></span><br><span class="line">  <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;debug&quot;</span> <span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;experimental&quot;</span> <span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><blockquote><p><code>registry-mirrors</code> 千万不要用 <code>https</code>，而是用 <code>http</code>，否则会显示 <code>No certs for egitstry.docker.com</code>。<br><code>insecure-registries</code> 不要任何 <code>http</code> 头，否则无法通过。</p></blockquote><h2 id="重启服务"><a href="#重启服务" class="headerlink" title="重启服务"></a>重启服务</h2><p>重启让新配置源生效。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">systemctl daemon-reload</span><br><span class="line">systemctl restart docker</span><br></pre></td></tr></table></figure><h1 id="容器测试"><a href="#容器测试" class="headerlink" title="容器测试"></a>容器测试</h1><p>直接运行 <code>hello-world</code> 来测试容器，系统会自动下载 <code>hello-world</code> 镜像。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run hello-world</span><br></pre></td></tr></table></figure><p>系统显示：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">Unable to find image <span class="string">&#x27;hello-world:latest&#x27;</span> locally</span><br><span class="line">latest: Pulling from library/hello-world</span><br><span class="line"></span><br><span class="line">1b930d010525: Pull complete</span><br><span class="line">Digest: sha256:f9dfddf63636d84ef479d645ab5885156ae030f611a56f3a7ac7f2fdd86d7e4e</span><br><span class="line">Status: Downloaded newer image <span class="keyword">for</span> hello-world:latest</span><br><span class="line">Hello from Docker!</span><br><span class="line">This message shows that your installation appears to be working correctly.</span><br><span class="line">To generate this message, Docker took the following steps:</span><br><span class="line"> 1. The Docker client contacted the Docker daemon.</span><br><span class="line"> 2. The Docker daemon pulled the <span class="string">&quot;hello-world&quot;</span> image from the Docker Hub.</span><br><span class="line">    (amd64)</span><br><span class="line"> 3. The Docker daemon created a new container from that image <span class="built_in">which</span> runs the</span><br><span class="line">    executable that produces the output you are currently reading.</span><br><span class="line"> 4. The Docker daemon streamed that output to the Docker client, <span class="built_in">which</span> sent it</span><br><span class="line">    to your terminal.</span><br><span class="line">To try something more ambitious, you can run an Ubuntu container with:</span><br><span class="line"> $ docker run -it ubuntu bash</span><br><span class="line">Share images, automate workflows, and more with a free Docker ID:</span><br><span class="line"> https://hub.docker.com/</span><br><span class="line">For more examples and ideas, visit:</span><br><span class="line"> https://docs.docker.com/get-started/</span><br></pre></td></tr></table></figure><p>至此，docker 安装并运行成功。</p><h1 id="安装-docker-compose"><a href="#安装-docker-compose" class="headerlink" title="安装 docker-compose"></a>安装 <code>docker-compose</code></h1><h2 id="安装-docker-compose-1"><a href="#安装-docker-compose-1" class="headerlink" title="安装 docker-compose"></a>安装 <code>docker-compose</code></h2><p>运行命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -L <span class="string">&quot;https://github.com/docker/compose/releases/download/1.25.5/docker-compose-<span class="subst">$(uname -s)</span>-<span class="subst">$(uname -m)</span>&quot;</span> -o /usr/local/bin/docker-compose</span><br></pre></td></tr></table></figure><p>速度慢可以换国内源：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`<span class="built_in">uname</span> -s`-`<span class="built_in">uname</span> -m` &gt; /usr/local/bin/docker-compose</span><br></pre></td></tr></table></figure><p>给 docker-compose 执行权限，运行命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> +x /usr/local/bin/docker-compose</span><br></pre></td></tr></table></figure><p>检查</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker-compose --version</span><br></pre></td></tr></table></figure><p>系统显示</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker-compose version 1.23.2, build 1110ad01</span><br></pre></td></tr></table></figure><h2 id="配置-docker-compose"><a href="#配置-docker-compose" class="headerlink" title="配置 docker-compose"></a>配置 <code>docker-compose</code></h2><p>docker-compose 配置模板示例：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="string">&quot;3&quot;</span></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="string">&lt;service-name&gt;:</span> <span class="comment"># 服务名称，可配置多个服务</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">&lt;image-name&gt;</span> <span class="comment"># 镜像名称</span></span><br><span class="line">    <span class="attr">hostname:</span> <span class="string">&lt;hostname&gt;</span> <span class="comment"># 主机名称，设置后进入容器便于识别。</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">&lt;container-name&gt;</span> <span class="comment"># 容器名称</span></span><br><span class="line">    <span class="attr">environment:</span>  <span class="comment"># 环境变量设置（命令行中的 -e 设置）,以下是 mariadb 的示例。</span></span><br><span class="line">      <span class="attr">TZ:</span> <span class="string">Asia/Shanghai</span></span><br><span class="line">      <span class="attr">MYSQL_ROOT_PASSWORD:</span> <span class="string">rootpassword</span></span><br><span class="line">      <span class="attr">MYSQL_USER:</span> <span class="string">username</span></span><br><span class="line">      <span class="attr">MYSQL_PASSWORD:</span> <span class="string">userpassword</span></span><br><span class="line">      <span class="attr">MYSQL_DATABASE:</span></span><br><span class="line">      <span class="attr">MYSQL_ALLOW_EMPTY_PASSWORD:</span></span><br><span class="line">      <span class="attr">MYSQL_RANDOM_ROOT_PASSWORD:</span></span><br><span class="line">    <span class="attr">command:</span> <span class="comment"># 附加参数示例，以下是 mariadb 的示例。</span></span><br><span class="line">      <span class="string">-character-set-server=utf8mb4</span></span><br><span class="line">      <span class="string">--collation-server=utf8mb4_general_ci</span></span><br><span class="line">      <span class="string">--explicit_defaults_for_timestamp=true</span></span><br><span class="line">      <span class="string">--lower_case_table_names=1</span></span><br><span class="line">      <span class="string">--max_allowed_packet=128M</span></span><br><span class="line">      <span class="string">--sql-mode=&quot;STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO&quot;</span></span><br><span class="line">    <span class="attr">volumes:</span> <span class="comment"># 卷映射设置示例</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/home/&lt;username&gt;/docker/mariadb/data:/var/lib/mysql:rw</span> <span class="comment"># 方式一：直接映射</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">mariadb:/var/lib/mysql:rw</span> <span class="comment"># 方式二：通过申明的卷 mariadb 映射</span></span><br><span class="line">    <span class="attr">ports:</span> <span class="comment"># 端口映射示例</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">127.0</span><span class="number">.0</span><span class="number">.1</span><span class="string">:80:80</span> <span class="comment"># 端口映射到指定 ip 的端口</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">443</span><span class="string">:443</span>         <span class="comment"># 端口映射到所有端口</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">always</span>     <span class="comment"># 系统重启后，容器也自动启动。</span></span><br><span class="line">    <span class="attr">networks:</span> <span class="comment"># 网络设置示例（本例使用自定义网络 localnet，需要提前创建好该网络。）</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">localnet</span></span><br><span class="line"><span class="attr">networks:</span></span><br><span class="line">  <span class="attr">localnet:</span>  <span class="comment"># 自定义网络 localnet 设置。</span></span><br><span class="line">    <span class="attr">external:</span> <span class="literal">true</span></span><br><span class="line"><span class="attr">volumes:</span> <span class="comment"># 卷设置</span></span><br><span class="line">   <span class="attr">mariadb:</span></span><br></pre></td></tr></table></figure><h1 id="附：docker-compose-安装方法二"><a href="#附：docker-compose-安装方法二" class="headerlink" title="附：docker-compose 安装方法二"></a>附：docker-compose 安装方法二</h1><blockquote><p>上述安装方法由于服务器问题，经常下载不成功。</p></blockquote><p>这里介绍另外一种方法，通过 pip 安装。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">apt-get install python3-pip</span><br><span class="line">pip3 install docker-compose</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;安装-docker&quot;&gt;&lt;a href=&quot;#安装-docker&quot; class=&quot;headerlink&quot; title=&quot;安装 docker&quot;&gt;&lt;/a&gt;安装 &lt;code&gt;docker&lt;/code&gt;&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;这里使用阿里云的源进行安装。&lt;/</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="Debian" scheme="https://www.aikiki.top/tags/Debian/"/>
    
    <category term="Docker" scheme="https://www.aikiki.top/tags/Docker/"/>
    
  </entry>
  
  <entry>
    <title>使用 Windows 自带的远程桌面 mstsc 连接 Debian 10</title>
    <link href="https://www.aikiki.top/post/1554/"/>
    <id>https://www.aikiki.top/post/1554/</id>
    <published>2020-03-19T18:01:52.000Z</published>
    <updated>2023-11-16T08:34:27.000Z</updated>
    
    <content type="html"><![CDATA[<h1 id="方法一"><a href="#方法一" class="headerlink" title="方法一"></a>方法一</h1><h2 id="安装远程桌面服务"><a href="#安装远程桌面服务" class="headerlink" title="安装远程桌面服务"></a>安装远程桌面服务</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-get install tigervnc-standalone-server</span><br></pre></td></tr></table></figure><h2 id="新建配置文件"><a href="#新建配置文件" class="headerlink" title="新建配置文件"></a>新建配置文件</h2><p>新建配置文件，使的远程登录时默认使用 <code>xfce4</code> 作为登录界面。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">echo</span> xfce4-session&gt;/home/username/.xsession</span><br></pre></td></tr></table></figure><p>如果安装了其他桌面环境，可以更换 <code>xfce4-session</code> 为:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">&quot;startkde&quot;  #使用KDE</span><br><span class="line"></span><br><span class="line">&quot;cinnamon-session&quot;  #使用cinnamon</span><br><span class="line"></span><br><span class="line">&quot;mate-session&quot;  #使用mate</span><br><span class="line"></span><br><span class="line">&quot;gnome-session&quot;  #gnome</span><br></pre></td></tr></table></figure><h2 id="安装-xrdp"><a href="#安装-xrdp" class="headerlink" title="安装 xrdp"></a>安装 <code>xrdp</code></h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-get install xrdp</span><br></pre></td></tr></table></figure><h2 id="重启服务端后登陆"><a href="#重启服务端后登陆" class="headerlink" title="重启服务端后登陆"></a>重启服务端后登陆</h2><blockquote><p>一定要重启服务端，否则登录进去是一个空白桌面。</p></blockquote><p>使用普通用户登录成功后，系统会提示输入两次 root 密码。</p><h2 id="关于卸载-xserver-xorg-legacy（非必要）"><a href="#关于卸载-xserver-xorg-legacy（非必要）" class="headerlink" title="关于卸载 xserver-xorg-legacy（非必要）"></a>关于卸载 <code>xserver-xorg-legacy</code>（非必要）</h2><blockquote><p>此步非必要，如果登录后是一个空白桌面可以尝试该方法。<a href="https://unix.stackexchange.com/questions/389005/using-xrdp-without-local-vnc-server">参考</a></p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-get purge xserver-xorg-legacy</span><br></pre></td></tr></table></figure><h1 id="方法二"><a href="#方法二" class="headerlink" title="方法二"></a>方法二</h1><h2 id="安装最基本的-gnome-图形相关软件"><a href="#安装最基本的-gnome-图形相关软件" class="headerlink" title="安装最基本的 gnome 图形相关软件"></a>安装最基本的 gnome 图形相关软件</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt install x-window-system-core gnome-core</span><br></pre></td></tr></table></figure><h2 id="安装-xrdp-1"><a href="#安装-xrdp-1" class="headerlink" title="安装 xrdp"></a>安装 xrdp</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-get install xrdp</span><br></pre></td></tr></table></figure><h2 id="设置系统可以使用-root-登录"><a href="#设置系统可以使用-root-登录" class="headerlink" title="设置系统可以使用 root 登录"></a>设置系统可以使用 <code>root</code> 登录</h2><h3 id="修改-etc-gdm3-daemon-conf-文件"><a href="#修改-etc-gdm3-daemon-conf-文件" class="headerlink" title="修改 /etc/gdm3/daemon.conf 文件"></a>修改 <code>/etc/gdm3/daemon.conf</code> 文件</h3><p>在 <code>[security]</code> 下增加一行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">AllowRoot = <span class="literal">true</span></span><br></pre></td></tr></table></figure><h3 id="修改-etc-pam-d-gdm-password-文件"><a href="#修改-etc-pam-d-gdm-password-文件" class="headerlink" title="修改 /etc/pam.d/gdm-password 文件"></a>修改 <code>/etc/pam.d/gdm-password</code> 文件</h3><p>注释掉一下代码：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">auth required pam_succeed_if.so user != root quiet_success</span><br></pre></td></tr></table></figure><h2 id="以图形界面启动-debian"><a href="#以图形界面启动-debian" class="headerlink" title="以图形界面启动 debian"></a>以图形界面启动 debian</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">init 6</span><br></pre></td></tr></table></figure><p>重启后即可在 <code>Windows</code> 机器上使用远程桌面登录 <code>Debian</code> 系统。</p><p>使用普通用户登录成功后，系统依然会提示输入两次 root 密码。</p><h1 id="附：安装桌面的简化方法"><a href="#附：安装桌面的简化方法" class="headerlink" title="附：安装桌面的简化方法"></a>附：安装桌面的简化方法</h1><p>Debian 提供了一个命令行工具（tasksel）来简化桌面环境的安装，只需运行如下命令即可：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sudo tasksel</span><br></pre></td></tr></table></figure><p>如果没有该工具，可以使用以下命令安装。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ apt-get install tasksel</span><br></pre></td></tr></table></figure><p>然后，你可以从图形界面列表中选择所需的桌面环境。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;方法一&quot;&gt;&lt;a href=&quot;#方法一&quot; class=&quot;headerlink&quot; title=&quot;方法一&quot;&gt;&lt;/a&gt;方法一&lt;/h1&gt;&lt;h2 id=&quot;安装远程桌面服务&quot;&gt;&lt;a href=&quot;#安装远程桌面服务&quot; class=&quot;headerlink&quot; title=&quot;安装远程桌</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="Debian" scheme="https://www.aikiki.top/tags/Debian/"/>
    
  </entry>
  
  <entry>
    <title>Debian 10 解决 /etc/rc.local 开机启动问题</title>
    <link href="https://www.aikiki.top/post/7ae0/"/>
    <id>https://www.aikiki.top/post/7ae0/</id>
    <published>2020-03-16T18:07:00.000Z</published>
    <updated>2023-11-16T08:35:27.000Z</updated>
    
    <content type="html"><![CDATA[<p>由于某些软件没有开机自动启动的服务，很多时候需要手工添加，一般我们都是推荐添加命令到 <code>/etc/rc.local</code> 文件，但是 Debian 10 默认不带 <code>/etc/rc.local</code> 文件，而 <code>rc.local</code> 服务却还是自带的.</p><h1 id="查看服务配置文件"><a href="#查看服务配置文件" class="headerlink" title="查看服务配置文件"></a>查看服务配置文件</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]#  cat /lib/systemd/system/rc.local.service</span><br><span class="line"></span><br><span class="line">#   SPDX-License-Identifier: LGPL-2.1+</span><br><span class="line">#</span><br><span class="line">#   This file is part of systemd.</span><br><span class="line">#</span><br><span class="line">#   systemd is free software; you can redistribute it and/or modify it</span><br><span class="line">#   under the terms of the GNU Lesser General Public License as published by</span><br><span class="line">#   the Free Software Foundation; either version 2.1 of the License, or</span><br><span class="line">#   (at your option) any later version.</span><br><span class="line">#  This unit gets pulled automatically into multi-user.target by</span><br><span class="line">#  systemd-rc-local-generator if /etc/rc.local is executable.</span><br><span class="line"></span><br><span class="line">[Unit]</span><br><span class="line">Description=/etc/rc.local Compatibility</span><br><span class="line">Documentation=man:systemd-rc-local-generator(8)</span><br><span class="line">ConditionFileIsExecutable=/etc/rc.local</span><br><span class="line">After=network.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">Type=forking</span><br><span class="line">ExecStart=/etc/rc.local start</span><br><span class="line">TimeoutSec=0</span><br><span class="line">RemainAfterExit=yes</span><br><span class="line">GuessMainPID=no</span><br></pre></td></tr></table></figure><h1 id="查看服务状态"><a href="#查看服务状态" class="headerlink" title="查看服务状态"></a>查看服务状态</h1><blockquote><p>默认情况下这个服务还是关闭的状态</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]#  systemctl status rc-local</span><br><span class="line"></span><br><span class="line">● rc-local.service - /etc/rc.local Compatibility</span><br><span class="line">   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)</span><br><span class="line">  Drop-In: /usr/lib/systemd/system/rc-local.service.d</span><br><span class="line">           └─debian.conf</span><br><span class="line">   Active: inactive (dead)</span><br><span class="line">     Docs: man:systemd-rc-local-generator(8)</span><br></pre></td></tr></table></figure><h1 id="增加配置文件"><a href="#增加配置文件" class="headerlink" title="增加配置文件"></a>增加配置文件</h1><p>为了解决这个问题，我们需要手工添加一个 <code>/etc/rc.local</code> 文件</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]#  cat &lt;&lt;EOF &gt;/etc/rc.local</span><br><span class="line"></span><br><span class="line"># !/bin/sh -e</span><br><span class="line">#</span><br><span class="line">#  rc.local</span><br><span class="line">#</span><br><span class="line">#  This script is executed at the end of each multiuser runlevel.</span><br><span class="line">#  Make sure that the script will &quot;exit 0&quot; on success or any other</span><br><span class="line">#  value on error.</span><br><span class="line">#</span><br><span class="line">#  In order to enable or disable this script just change the execution</span><br><span class="line">#  bits.</span><br><span class="line">#</span><br><span class="line">#  By default this script does nothing.</span><br><span class="line">exit 0</span><br><span class="line">EOF</span><br></pre></td></tr></table></figure><h1 id="赋予配置文件权限"><a href="#赋予配置文件权限" class="headerlink" title="赋予配置文件权限"></a>赋予配置文件权限</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]<span class="comment">#  chmod +x /etc/rc.local</span></span><br></pre></td></tr></table></figure><h1 id="启动-rc-local-服务"><a href="#启动-rc-local-服务" class="headerlink" title="启动 rc-local 服务"></a>启动 rc-local 服务</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]<span class="comment">#  systemctl start rc-local</span></span><br></pre></td></tr></table></figure><h1 id="查看服务状态-1"><a href="#查看服务状态-1" class="headerlink" title="查看服务状态"></a>查看服务状态</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]<span class="comment">#  systemctl status rc-local</span></span><br><span class="line"></span><br><span class="line">● rc-local.service - /etc/rc.local Compatibility</span><br><span class="line">   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)</span><br><span class="line">  Drop-In: /usr/lib/systemd/system/rc-local.service.d</span><br><span class="line">           └─debian.conf</span><br><span class="line">   Active: active (exited) since Tue 2020-03-17 10:04:27 CST; 9s ago</span><br><span class="line">     Docs: man:systemd-rc-local-generator(8)</span><br><span class="line">  Process: 18500 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)</span><br><span class="line"></span><br><span class="line">3月 17 10:04:27 debian systemd[1]: Starting /etc/rc.local Compatibility...</span><br><span class="line"></span><br><span class="line">3月 17 10:04:27 debian systemd[1]: Started /etc/rc.local Compatibility.</span><br></pre></td></tr></table></figure><blockquote><p>现在你可以把需要开机启动的命令添加到 &#x2F;etc&#x2F;rc.local 文件，丢在 exit 0 前面即可，并尝试重启以后试试是否生效。</p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;由于某些软件没有开机自动启动的服务，很多时候需要手工添加，一般我们都是推荐添加命令到 &lt;code&gt;/etc/rc.local&lt;/code&gt; 文件，但是 Debian 10 默认不带 &lt;code&gt;/etc/rc.local&lt;/code&gt; 文件，而 &lt;code&gt;rc.local</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="Debian" scheme="https://www.aikiki.top/tags/Debian/"/>
    
  </entry>
  
  <entry>
    <title>Debian 10 搭建 nfs 服务器</title>
    <link href="https://www.aikiki.top/post/9480/"/>
    <id>https://www.aikiki.top/post/9480/</id>
    <published>2020-03-16T18:06:53.000Z</published>
    <updated>2023-11-16T08:35:29.000Z</updated>
    
    <content type="html"><![CDATA[<h1 id="安装-nfs-服务器"><a href="#安装-nfs-服务器" class="headerlink" title="安装 nfs 服务器"></a>安装 nfs 服务器</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]<span class="comment">#  apt-get install nfs-kernel-server</span></span><br></pre></td></tr></table></figure><h1 id="修改服务端配置文件"><a href="#修改服务端配置文件" class="headerlink" title="修改服务端配置文件"></a>修改服务端配置文件</h1><blockquote><p>如果只使用客户端功能，可忽略此步操作。</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]#  nano /etc/exports</span><br><span class="line">#  /etc/exports: the access control list for filesystems which may be exported</span><br><span class="line"># to NFS clients.  See exports(5).</span><br><span class="line">#</span><br><span class="line">#  Example for NFSv2 and NFSv3:</span><br><span class="line">#  /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)</span><br><span class="line">#</span><br><span class="line">#  Example for NFSv4:</span><br><span class="line">#  /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)</span><br><span class="line">#  /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)</span><br><span class="line">#</span><br><span class="line">#  增加以下代码设置共享文件夹</span><br><span class="line"></span><br><span class="line">/home/username/mynfs 192.168.8.8(rw,sync,no_root_squash)</span><br></pre></td></tr></table></figure><p>&#x2F;home&#x2F;username&#x2F;mynfs 是我主机上的文件夹，是 nfs 服务器的根目录;</p><p>192.168.8.8 是我客户端的 ip;<br>rw，读写权限，sync，数据同步写入内存和硬盘，no_root_squash，NFS 服务器共享目录用户的属性，如果用户是 root，那么对于这个共享目录来说就具有 root 的权限。</p><h1 id="检查配置是否有错"><a href="#检查配置是否有错" class="headerlink" title="检查配置是否有错"></a>检查配置是否有错</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]<span class="comment">#  source /etc/exports</span></span><br></pre></td></tr></table></figure><p>无错误提示，配置文件正确。</p><h1 id="启动服务"><a href="#启动服务" class="headerlink" title="启动服务"></a>启动服务</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]#  /etc/init.d/nfs-kernel-server restart</span><br><span class="line"></span><br><span class="line">[ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.</span><br></pre></td></tr></table></figure><h1 id="客户端挂载"><a href="#客户端挂载" class="headerlink" title="客户端挂载"></a>客户端挂载</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]#  mount -n -o nolock 192.168.8.8:/home/username/mynfs /home/username/nfs/</span><br></pre></td></tr></table></figure><blockquote><p>将<code>192.168.8.8:/home/username/mynfs</code>挂载到<code>/home/username/nfs/</code>。</p></blockquote><h1 id="检查是否挂载上了"><a href="#检查是否挂载上了" class="headerlink" title="检查是否挂载上了"></a>检查是否挂载上了</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /root]#  df -h</span><br><span class="line"></span><br><span class="line">文件系统                               容量  已用  可用 已用% 挂载点</span><br><span class="line">udev                                   2.0G     0  2.0G    0% /dev</span><br><span class="line">tmpfs                                  395M  6.0M  389M    2% /run</span><br><span class="line"></span><br><span class="line">/dev/mapper/debian--vg-root             35G  5.3G   28G   16% /</span><br><span class="line">tmpfs                                  2.0G     0  2.0G    0% /dev/shm</span><br><span class="line">tmpfs                                  5.0M     0  5.0M    0% /run/lock</span><br><span class="line">tmpfs                                  2.0G     0  2.0G    0% /sys/fs/cgroup</span><br><span class="line"></span><br><span class="line">/dev/sda1                              236M   58M  166M   26% /boot</span><br><span class="line"></span><br><span class="line">192.168.8.8:/home/username/mynf        2.7T  390G  2.3T   15% /home/username/nfs/</span><br><span class="line">tmpfs                                  395M   28K  395M    1% /run/user/116</span><br><span class="line">tmpfs                                  395M     0  395M    0% /run/user/1000</span><br></pre></td></tr></table></figure><h1 id="测试是否可以共享文件"><a href="#测试是否可以共享文件" class="headerlink" title="测试是否可以共享文件"></a>测试是否可以共享文件</h1><p>客户端写：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /home/username/nfs]#  touch testfile</span><br><span class="line"></span><br><span class="line">[root@debian /home/username/nfs]#  ls</span><br><span class="line">aaa.txt  ddd.txt  testfile  test.txt</span><br></pre></td></tr></table></figure><p>服务器端查看：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /home/username/nfs]#  ls</span><br><span class="line">aaa.txt  ddd.txt  testfile  test.txt</span><br></pre></td></tr></table></figure><p>服务器端写：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /home/username/nfs]#  touch debian</span><br><span class="line"></span><br><span class="line">[root@debian /home/username/nfs]#  ls</span><br><span class="line">aaa.txt  ddd.txt  debian  testfile  test.txt</span><br></pre></td></tr></table></figure><p>客户端查看：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[root@debian /home/username/nfs]#  ls</span><br><span class="line">aaa.txt  ddd.txt  debian  testfile  test.txt</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;安装-nfs-服务器&quot;&gt;&lt;a href=&quot;#安装-nfs-服务器&quot; class=&quot;headerlink&quot; title=&quot;安装 nfs 服务器&quot;&gt;&lt;/a&gt;安装 nfs 服务器&lt;/h1&gt;&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="Debian" scheme="https://www.aikiki.top/tags/Debian/"/>
    
  </entry>
  
  <entry>
    <title>Proxmox VE 安装群晖 6.2</title>
    <link href="https://www.aikiki.top/post/c6aa/"/>
    <id>https://www.aikiki.top/post/c6aa/</id>
    <published>2020-03-14T22:01:00.000Z</published>
    <updated>2023-11-16T08:34:46.000Z</updated>
    
    <content type="html"><![CDATA[<h1 id="新建-PVE-虚拟机，修改网卡为-E1000e。"><a href="#新建-PVE-虚拟机，修改网卡为-E1000e。" class="headerlink" title="新建 PVE 虚拟机，修改网卡为 E1000e。"></a>新建 PVE 虚拟机，修改网卡为 <code>E1000e</code>。</h1><p>群晖 6.2 以上版本，启动后找不到服务器。原因是群晖不识别 PVE 虚拟机的 <code>E1000</code> 网卡，将网卡修改为 <code>E1000e</code> 即可找到服务器进入安装程序。</p><blockquote><p>新建虚拟机网卡必须选择 <code>E1000</code>。<br>虚拟机不需要启动。</p></blockquote><p>修改建好的虚拟机网卡步骤如下：</p><h2 id="获取网卡配置参数"><a href="#获取网卡配置参数" class="headerlink" title="获取网卡配置参数"></a>获取网卡配置参数</h2><p>101 为虚拟机 id，根据自己实际情况修改</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qm showcmd 101</span><br></pre></td></tr></table></figure><p>记录输出值，只需要注意最后一个 <code>-netdev</code> 开始的字段。</p><p>输出值如下所示：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/usr/bin/kvm -id 101 -name DS3617xs ...这里省略N个字符... -netdev &#x27;type=tap,id=net0,ifname=tap101i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown&#x27; -device &#x27;e1000,mac=00:11:32:33:44:55,netdev=net0,bus=pci.0,addr=0x12,id=net0&#x27; -machine &#x27;type=pc&#x27;</span><br></pre></td></tr></table></figure><blockquote><p>建议将上面的输出复制到文本文件中便于下一步修改。</p></blockquote><h2 id="提取虚拟机网卡配置信息并修改"><a href="#提取虚拟机网卡配置信息并修改" class="headerlink" title="提取虚拟机网卡配置信息并修改"></a>提取虚拟机网卡配置信息并修改</h2><p>在上面的输出值中查找第一个 <code>-netdev</code>，以此开始按照下面的模板删除一些无用字段，并修改 <code>E1000</code> 为 <code>E1000e</code>。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">#  按下面的例子删除一些无用字段，行首添加“args:” ,修改“E1000” 为 “E1000e”，保存。</span><br><span class="line">args: -netdev &#x27;type=tap,id=net0,ifname=tap101i0&#x27; -device &#x27;e1000e,mac=00:11:32:33:44:55,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300&#x27;</span><br></pre></td></tr></table></figure><blockquote><p>修改的好的信息将用于下一步写入虚拟机的配置文件。</p></blockquote><h2 id="将配置信息写入虚拟机配置文件"><a href="#将配置信息写入虚拟机配置文件" class="headerlink" title="将配置信息写入虚拟机配置文件"></a>将配置信息写入虚拟机配置文件</h2><p>修改 id 为 101 的配置文件</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nano /etc/pve/qemu-server/101.conf</span><br></pre></td></tr></table></figure><p>在编辑框中的首行插入一行上一步修改好的字符串，注意要换行，不要和原本的配置文件粘在一起了。</p><h2 id="删除虚拟机原来的网卡配置"><a href="#删除虚拟机原来的网卡配置" class="headerlink" title="删除虚拟机原来的网卡配置"></a>删除虚拟机原来的网卡配置</h2><p>到 pve 对应 <code>虚拟机-硬件</code> 界面删除 <code>E1000</code> 网卡。然后启动虚拟机，如果不报错误，应该就会有网络了。</p><blockquote><p><code>虚拟机-硬件</code> 选项界面不会显示 <code>E1000e</code> 网卡，如果启动成功实际是通过参数方式加载了虚拟网卡。</p></blockquote><h1 id="安装群晖系统到-PVE-虚拟机"><a href="#安装群晖系统到-PVE-虚拟机" class="headerlink" title="安装群晖系统到 PVE 虚拟机"></a>安装群晖系统到 PVE 虚拟机</h1><h2 id="删除默认硬盘"><a href="#删除默认硬盘" class="headerlink" title="删除默认硬盘"></a>删除默认硬盘</h2><ul><li>删除硬盘，选择 <code>虚拟机-硬件</code>，找到硬盘，选中点击 <code>分离</code>。</li><li>硬盘分离后，选中 <code> 未使用的磁盘 0</code>，点击 <code>删除</code>。</li></ul><h2 id="设置群晖启动盘"><a href="#设置群晖启动盘" class="headerlink" title="设置群晖启动盘"></a>设置群晖启动盘</h2><ul><li>使用 WinSCP 把解压出来的 <code>synoboot.img</code> 上传到 <code>/root</code> 目录。</li><li>导入 img 磁盘镜像到虚拟机。<ul><li>SSH 登录 PVE.</li><li>输入以下指令导入引导盘到虚拟机。系统提示 <code>vm-101-disk-0</code> 正在创建,<code>101</code> 是虚拟机编号，<code>synoboot.img</code> 是刚才上传的引导镜像。</li></ul></li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qm importdisk 101 /root/synoboot.img local-lvm</span><br></pre></td></tr></table></figure><ul><li>增加磁盘到虚拟机。<ul><li>进入 <code>虚拟机-硬件</code> 设置，选中 <code> 未使用的磁盘 0</code>(上一步导入的引导镜像磁盘)。</li><li>点击编辑，设置总线&#x2F;设备为 <code>SATA</code> 和 <code>0</code>，磁盘镜像选择 <code>vm-101-disk-0</code>。</li></ul></li><li>修改引导顺序<ul><li>进入 <code>虚拟机-选项</code>，选择 <code>引导顺序</code>。</li><li>点击编辑，将 <code> 引导设备 1</code> 改为 <code>Disk &#39;sata0&#39;</code>。</li></ul></li></ul><h2 id="增加系统盘"><a href="#增加系统盘" class="headerlink" title="增加系统盘"></a>增加系统盘</h2><p>增加一块系统盘用于安装群晖系统。</p><ul><li>点击 <code>虚拟机-硬件</code>，添加 <code>添加</code> 下拉菜单中的 <code>硬盘</code>。</li><li>总线&#x2F;设备选择 <code>SATA</code> 和 <code>1</code>，存储选择 <code>local-vm</code>，磁盘大小设置为 <code>10G</code> 够用。</li></ul><p>现在可以开机，进入群晖安装程序安装系统。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;新建-PVE-虚拟机，修改网卡为-E1000e。&quot;&gt;&lt;a href=&quot;#新建-PVE-虚拟机，修改网卡为-E1000e。&quot; class=&quot;headerlink&quot; title=&quot;新建 PVE 虚拟机，修改网卡为 E1000e。&quot;&gt;&lt;/a&gt;新建 PVE 虚拟机，修改网</summary>
      
    
    
    
    <category term="Archives" scheme="https://www.aikiki.top/categories/Archives/"/>
    
    
    <category term="Proxmox VE" scheme="https://www.aikiki.top/tags/Proxmox-VE/"/>
    
    <category term="Synology" scheme="https://www.aikiki.top/tags/Synology/"/>
    
  </entry>
  
</feed>
