<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Yang</title><link>/en/</link><description>Recent content on Yang</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><lastBuildDate>Fri, 06 Mar 2026 21:35:00 +0800</lastBuildDate><atom:link href="/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Introduction to Classic Deepfake Detection Models</title><link>/en/research/deepfake-detection-models/</link><pubDate>Fri, 06 Mar 2026 21:35:00 +0800</pubDate><guid>/en/research/deepfake-detection-models/</guid><description>&lt;h2 id="introduction"&gt;&lt;a href="#introduction" class="header-anchor"&gt;&lt;/a&gt;Introduction
&lt;/h2&gt;&lt;p&gt;With the rapid development of Generative Adversarial Networks (GANs) and Diffusion Models, Deepfake content is becoming increasingly prevalent on the internet. Effectively identifying these forged images and videos has become a critical issue in multimedia forensics and information security.&lt;/p&gt;
&lt;h2 id="core-content"&gt;&lt;a href="#core-content" class="header-anchor"&gt;&lt;/a&gt;Core Content
&lt;/h2&gt;&lt;p&gt;This article introduces some milestone works in the field of Deepfake detection:&lt;/p&gt;
&lt;h3 id="1-spatial-feature-based-models"&gt;&lt;a href="#1-spatial-feature-based-models" class="header-anchor"&gt;&lt;/a&gt;1. Spatial Feature-based Models
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MesoNet&lt;/strong&gt;: Focuses on macroscopic burial artifacts in compressed facial images.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Xception-based (FaceForensics++)&lt;/strong&gt;: A representative of transfer learning, fine-tuning models pre-trained on large-scale datasets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-temporal-feature-based-models"&gt;&lt;a href="#2-temporal-feature-based-models" class="header-anchor"&gt;&lt;/a&gt;2. Temporal Feature-based Models
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deepfake Stacked RNN&lt;/strong&gt;: Utilizes the continuity between video frames to capture forgery traces.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-frequency-domain-based-models"&gt;&lt;a href="#3-frequency-domain-based-models" class="header-anchor"&gt;&lt;/a&gt;3. Frequency Domain-based Models
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;F3-Net&lt;/strong&gt;: Identifies forgeries through frequency domain decomposition and frequency statistics.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-biological-feature-based-models"&gt;&lt;a href="#4-biological-feature-based-models" class="header-anchor"&gt;&lt;/a&gt;4. Biological Feature-based Models
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lip-sync Check&lt;/strong&gt;: Observing whether lip movements are synchronized with speech.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blink Detection&lt;/strong&gt;: Early Deepfake models often struggled to generate natural blinking.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reflections"&gt;&lt;a href="#reflections" class="header-anchor"&gt;&lt;/a&gt;Reflections
&lt;/h2&gt;&lt;h2 id="references"&gt;&lt;a href="#references" class="header-anchor"&gt;&lt;/a&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/1901.00596" target="_blank" rel="noopener"
 &gt;FaceForensics++: Learning to Detect Manipulated Facial Images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/1809.00888" target="_blank" rel="noopener"
 &gt;MesoNet: a Compact Facial Video Forgery Detection Network&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Attention Is All You Need — Deep Dive into the Transformer Architecture</title><link>/en/research/attention-is-all-you-need/</link><pubDate>Fri, 06 Mar 2026 20:00:00 +0800</pubDate><guid>/en/research/attention-is-all-you-need/</guid><description>&lt;h2 id="-background"&gt;&lt;a href="#-background" class="header-anchor"&gt;&lt;/a&gt;📄 Background
&lt;/h2&gt;&lt;p&gt;Before Transformers, sequence-to-sequence tasks relied heavily on &lt;strong&gt;RNN/LSTM&lt;/strong&gt; architectures, which suffered from two major bottlenecks:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sequential computation&lt;/strong&gt; prevents parallelization&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Long-range dependency degradation&lt;/strong&gt; over long sequences&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Vaswani et al. proposed the &lt;strong&gt;Transformer&lt;/strong&gt; at NeurIPS 2017, relying entirely on attention mechanisms to model global dependencies — no recurrence, no convolution.&lt;/p&gt;
&lt;h2 id="-core-mechanisms"&gt;&lt;a href="#-core-mechanisms" class="header-anchor"&gt;&lt;/a&gt;🔑 Core Mechanisms
&lt;/h2&gt;&lt;h3 id="self-attention"&gt;&lt;a href="#self-attention" class="header-anchor"&gt;&lt;/a&gt;Self-Attention
&lt;/h3&gt;&lt;p&gt;For input $X \in \mathbb{R}^{n \times d}$, we compute Query, Key, Value projections:&lt;/p&gt;
&lt;p&gt;$$Q = XW^Q, \quad K = XW^K, \quad V = XW^V$$&lt;/p&gt;</description></item><item><title>Research Insights: How to Read Papers Efficiently</title><link>/en/research/how-to-read-papers/</link><pubDate>Thu, 05 Mar 2026 18:00:00 +0800</pubDate><guid>/en/research/how-to-read-papers/</guid><description>&lt;h2 id="the-three-pass-approach"&gt;&lt;a href="#the-three-pass-approach" class="header-anchor"&gt;&lt;/a&gt;The Three-Pass Approach
&lt;/h2&gt;&lt;p&gt;A classic method from Keshav&amp;rsquo;s &lt;em&gt;&amp;ldquo;How to Read a Paper&amp;rdquo;&lt;/em&gt;:&lt;/p&gt;
&lt;h3 id="pass-1-510-minutes--get-the-big-picture"&gt;&lt;a href="#pass-1-510-minutes--get-the-big-picture" class="header-anchor"&gt;&lt;/a&gt;Pass 1: 5–10 minutes — Get the big picture
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Read: title, abstract, introduction&lt;/li&gt;
&lt;li&gt;Scan all figure captions and conclusions&lt;/li&gt;
&lt;li&gt;Decide: is this worth reading in depth?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="pass-2-1-hour--grasp-the-content"&gt;&lt;a href="#pass-2-1-hour--grasp-the-content" class="header-anchor"&gt;&lt;/a&gt;Pass 2: ~1 hour — Grasp the content
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Read the body, &lt;strong&gt;skip proofs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Focus on experimental setup and key figures&lt;/li&gt;
&lt;li&gt;Note limitations the authors acknowledge&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="pass-3-deep-read--replication-level-understanding"&gt;&lt;a href="#pass-3-deep-read--replication-level-understanding" class="header-anchor"&gt;&lt;/a&gt;Pass 3: Deep read — Replication-level understanding
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Derive every equation&lt;/li&gt;
&lt;li&gt;Challenge every assumption&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="my-note-template"&gt;&lt;a href="#my-note-template" class="header-anchor"&gt;&lt;/a&gt;My Note Template
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Problem
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Key Insight
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Method
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Experiments
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## My Take
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Action Items
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="recommended-tools"&gt;&lt;a href="#recommended-tools" class="header-anchor"&gt;&lt;/a&gt;Recommended Tools
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Tool&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Zotero&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Reference management&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Obsidian&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Connected note-taking&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Connected Papers&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Citation graph visualization&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Semantic Scholar&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;AI-assisted literature search&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Book Recommendation: Designing Data-Intensive Applications (DDIA)</title><link>/en/learningresource/designing-data-intensive-applications/</link><pubDate>Mon, 23 Feb 2026 11:43:00 +0800</pubDate><guid>/en/learningresource/designing-data-intensive-applications/</guid><description>&lt;h2 id="-about-the-book"&gt;&lt;a href="#-about-the-book" class="header-anchor"&gt;&lt;/a&gt;📚 About the Book
&lt;/h2&gt;&lt;p&gt;&amp;ldquo;Designing Data-Intensive Applications&amp;rdquo; (often referred to as DDIA) by Martin Kleppmann is widely considered a masterpiece in the field of distributed systems and data engineering.&lt;/p&gt;
&lt;p&gt;Modern applications are increasingly &amp;ldquo;data-intensive&amp;rdquo; rather than merely &amp;ldquo;compute-intensive&amp;rdquo;. This book systematically explores the core technologies behind storing and processing data, covering relational databases, NoSQL, stream processing, and batch processing. Instead of focusing on specific tech stacks or vendors, the author breaks down complex backend mechanisms by focusing on three overarching goals that any robust architecture must meet: &lt;strong&gt;Reliability, Scalability, and Maintainability&lt;/strong&gt;. It offers an incredibly lucid breakdown of core distributed concepts like replication, partitioning, transactions, and consensus correctness.
&lt;img src="/book_shujvmiji_cover_2596030970422877269.png" width="2756" height="1524" loading="lazy" alt="alt text" 
 class="gallery-image" data-flex-grow="180"
 data-flex-basis="434px" &gt;&lt;/p&gt;</description></item><item><title>Remote Private Networking with Tailscale</title><link>/en/post/tailscale-remote-network/</link><pubDate>Sat, 21 Feb 2026 18:59:24 +0800</pubDate><guid>/en/post/tailscale-remote-network/</guid><description>&lt;h1 id="tailscale-remote-network"&gt;&lt;a href="#tailscale-remote-network" class="header-anchor"&gt;&lt;/a&gt;Tailscale Remote Network
&lt;/h1&gt;&lt;h2 id="introduction"&gt;&lt;a href="#introduction" class="header-anchor"&gt;&lt;/a&gt;Introduction
&lt;/h2&gt;&lt;p&gt;Sometimes we build tools without a full authentication system, or we need to access private network resources from another location. In this case, Tailscale is a simple way to build a secure virtual LAN across different networks.&lt;/p&gt;
&lt;h2 id="what-is-tailscale"&gt;&lt;a href="#what-is-tailscale" class="header-anchor"&gt;&lt;/a&gt;What is Tailscale?
&lt;/h2&gt;&lt;p&gt;Tailscale is a free private networking solution built on WireGuard. It provides an easy-to-use experience for remote access and private mesh networking.&lt;/p&gt;
&lt;h2 id="install-tailscale"&gt;&lt;a href="#install-tailscale" class="header-anchor"&gt;&lt;/a&gt;Install Tailscale
&lt;/h2&gt;&lt;p&gt;Linux is used as the example here:&lt;/p&gt;</description></item><item><title>Personal Agent Assistant - Openclaw Installation Guide</title><link>/en/projects/opencalw-install/</link><pubDate>Wed, 11 Feb 2026 20:14:06 +0800</pubDate><guid>/en/projects/opencalw-install/</guid><description>&lt;h1 id="install-openclaw"&gt;&lt;a href="#install-openclaw" class="header-anchor"&gt;&lt;/a&gt;Install Openclaw
&lt;/h1&gt;&lt;h2 id="create-an-openclaw-user-to-limit-permissions"&gt;&lt;a href="#create-an-openclaw-user-to-limit-permissions" class="header-anchor"&gt;&lt;/a&gt;Create an &lt;code&gt;openclaw&lt;/code&gt; user to limit permissions
&lt;/h2&gt;&lt;p&gt;Create a dedicated &lt;code&gt;openclaw&lt;/code&gt; user with &lt;code&gt;sudo&lt;/code&gt; privileges:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo adduser --disabled-password --gecos &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt; openclaw
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo usermod -aG sudo openclaw &lt;span class="c1"&gt;# Optional: keep sudo access for this user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo passwd openclaw &lt;span class="c1"&gt;# Set password, needed later&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="install-with-the-official-script"&gt;&lt;a href="#install-with-the-official-script" class="header-anchor"&gt;&lt;/a&gt;Install with the official script
&lt;/h2&gt;&lt;p&gt;You will be asked to enter the password during installation:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://openclaw.ai/install.sh &lt;span class="p"&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="complete-installation-in-the-setup-wizard"&gt;&lt;a href="#complete-installation-in-the-setup-wizard" class="header-anchor"&gt;&lt;/a&gt;Complete installation in the setup wizard
&lt;/h2&gt;&lt;p&gt;Follow the wizard based on your needs.&lt;/p&gt;</description></item><item><title>Quick Setup - Docker Installation</title><link>/en/post/docker-install/</link><pubDate>Wed, 11 Feb 2026 10:43:31 +0800</pubDate><guid>/en/post/docker-install/</guid><description>&lt;h1 id="install-docker-on-ubuntu"&gt;&lt;a href="#install-docker-on-ubuntu" class="header-anchor"&gt;&lt;/a&gt;Install Docker on Ubuntu
&lt;/h1&gt;&lt;h2 id="1-update-the-server"&gt;&lt;a href="#1-update-the-server" class="header-anchor"&gt;&lt;/a&gt;1. Update the server
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-install-dependencies-and-add-the-official-repository"&gt;&lt;a href="#2-install-dependencies-and-add-the-official-repository" class="header-anchor"&gt;&lt;/a&gt;2. Install dependencies and add the official repository
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install -y ca-certificates curl gnupg lsb-release
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add Docker official GPG key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mkdir -p /etc/apt/keyrings
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg &lt;span class="p"&gt;|&lt;/span&gt; sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add Docker official repository&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;deb [arch=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;dpkg --print-architecture&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; signed-by=/etc/apt/keyrings/docker.gpg] \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; https://download.docker.com/linux/ubuntu &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;lsb_release -cs&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; stable&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-reboot-the-server-to-update-the-kernel"&gt;&lt;a href="#3-reboot-the-server-to-update-the-kernel" class="header-anchor"&gt;&lt;/a&gt;3. Reboot the server to update the kernel
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="4-install-docker"&gt;&lt;a href="#4-install-docker" class="header-anchor"&gt;&lt;/a&gt;4. Install Docker
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="5-verify-installation"&gt;&lt;a href="#5-verify-installation" class="header-anchor"&gt;&lt;/a&gt;5. Verify installation
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker run hello-world
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker rm &lt;span class="k"&gt;$(&lt;/span&gt;sudo docker ps -a -q --filter &lt;span class="nv"&gt;ancestor&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;hello-world&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo docker rmi hello-world
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="6-configure-a-registry-mirror"&gt;&lt;a href="#6-configure-a-registry-mirror" class="header-anchor"&gt;&lt;/a&gt;6. Configure a registry mirror
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mkdir -p /etc/docker
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo tee /etc/docker/daemon.json &lt;span class="s"&gt;&amp;lt;&amp;lt;EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;#34;registry-mirrors&amp;#34;: [&amp;#34;https://docker.m.daocloud.io&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="common-commands"&gt;&lt;a href="#common-commands" class="header-anchor"&gt;&lt;/a&gt;Common commands
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Start&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d --build
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restart&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose restart
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Stop&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose down
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# View logs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose logs -f
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# List running containers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker ps
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# List all containers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker ps -a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove a container&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker rm &amp;lt;container_id&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove all containers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker rm &lt;span class="k"&gt;$(&lt;/span&gt;docker ps -a -q&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove an image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker rmi &amp;lt;image_id&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove all images&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker rmi &lt;span class="k"&gt;$(&lt;/span&gt;docker images -q&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove all containers and images&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker system prune -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="7-common-issues"&gt;&lt;a href="#7-common-issues" class="header-anchor"&gt;&lt;/a&gt;7. Common issues
&lt;/h2&gt;&lt;h3 id="cannot-access-the-official-repository"&gt;&lt;a href="#cannot-access-the-official-repository" class="header-anchor"&gt;&lt;/a&gt;Cannot access the official repository
&lt;/h3&gt;&lt;p&gt;You can try switching to the Aliyun mirror:&lt;/p&gt;</description></item></channel></rss>