---
author: Abhishek Prakash
category: 容器与云
comments_data:
- date: '2023-11-12 12:04:22'
  message: 键盘侠一下，写 Arch Linux 有关的教程，还不如来翻译 Arch Wiki：wiki.archlinux.org
  postip: 117.175.114.120
  username: 来自四川的 Chrome 115.0|Windows 10 用户
count:
  commentnum: 1
  favtimes: 0
  likes: 0
  sharetimes: 0
  viewnum: 1732
date: '2023-11-09 15:41:56'
editorchoice: false
excerpt: 了解如何在 Arch Linux 上安装 Docker，并使用 Docker Compose 和制表符补全为运行容器做好准备。
fromurl: https://itsfoss.com/install-docker-arch-linux/
id: 16363
islctt: true
largepic: /images/p/202311/09/154128mctmdkdd0jolyv0k.png
permalink: /article-16363-1.html
pic: /images/p/202311/09/154128mctmdkdd0jolyv0k.png.thumb.jpg
related: []
reviewer: wxy
selector: lujun9972
summary: 了解如何在 Arch Linux 上安装 Docker，并使用 Docker Compose 和制表符补全为运行容器做好准备。
tags:
- Docker
thumb: false
title: 在 Arch Linux 上安装 Docker
titlepic: true
translator: geekpi
updated: '2023-11-09 15:41:56'
---

![](/images/p/202311/09/154128mctmdkdd0jolyv0k.png)



> 
> 了解如何在 Arch Linux 上安装 Docker，并使用 Docker Compose 和制表符补全为运行容器做好准备。
> 
> 
> 


在 Arch Linux 上安装 Docker 很简单。它可以在 Extra 仓库中找到，你可以简单地 [执行 pacman 魔法](https://itsfoss.com/pacman-command/)：



```
sudo pacman -S docker

```

但要在 Arch Linux 上正确运行 Docker，还需要执行更多步骤。


### 让 Arch Docker 做好准备


这一切都归结为以下步骤：


* 从 Arch 仓库安装 Docker
* 启动 Docker 守护进程并在每次启动时自动运行
* 将用户添加到 `docker` 组以运行 `docker` 命令而无需 `sudo`


让我们看看详细步骤。


#### 步骤 1：安装 Docker 包


打开终端并使用以下命令：



```
sudo pacman -S docker

```

输入密码并在询问时按 `Y`。


![](/images/p/202311/09/154156d510mluaho77kog0.png)


这可能需要一些时间，具体取决于你使用的镜像。



> 
> ? 如果你看到找不到包或 404 错误，那么你的同步数据库可能是旧的。使用以下命令更新系统（它将下载大量软件包并需要时间）： `sudo pacman -Syu`
> 
> 
> 


#### 步骤 2：启动 docker 守护进程


Docker 已安装但未运行。你应该在**第一次运行 Docker 命令**之前启动 Docker 守护进程：



```
sudo systemctl start docker.service

```

我还建议启用 Docker 服务，以便 Docker 守护进程在系统启动时自动启动。



```
sudo systemctl enable docker.service

```

这样，你就可以开始运行 `docker` 命令了。你不再需要手动启动 Docker 服务。


![](/images/p/202311/09/154156e8ufewhn8m9uanhd.png)


#### 步骤 3：将用户添加到 docker 组


Docker 已安装并且 Docker 服务正在运行。你几乎已准备好运行 `docker` 命令。


但是，默认情况下，你需要将 `sudo` 与 `docker` 命令一起使用。这很烦人。


为了避免在每个 `docker` 命令中使用 `sudo`，你可以将自己（或任何其他用户）添加到 `docker` 组，如下所示：



```
sudo usermod -aG docker $USER

```

**你必须注销（或关闭终端）并重新登录才能使上述更改生效。如果你不想这样做，请使用以下命令：**



```
newgrp docker

```

现在已经准备好了。我们来测试一下。


#### 步骤 4：验证 docker 安装


Docker 本身提供了一个很小的 Docker 镜像来测试 Docker 安装。运行它并查看是否一切正常：



```
docker run hello-world

```

你应该看到类似这样的输出，表明 Docker 成功运行：


![](/images/p/202311/09/154157enosbzo4d494b9ze.png)


恭喜！ 你已经在 Arch Linux 上成功安装了 Docker。


### 可选：安装 Docker Compose


Docker Compose 已经成为 Docker 不可或缺的一部分。它允许你管理多个容器应用。


较早的经典 Compose 由 `docker-compose` Python 软件包提供。Docker 还将其移植到 Go 中，并通过 `docker compose` 提供，但该软件包附带 [Docker Desktop](https://www.docker.com/products/docker-desktop/)。


在这个阶段，我建议使用经典的 `docker-compose` 插件并使用以下命令安装它：



```
sudo pacman -S docker-compose

```

![](/images/p/202311/09/154158kj8z8omkzyid878m.png)


### 故障排除技巧


以下是你可能遇到的一些常见问题以及可能的解决方案：


#### 制表符补全不适用于 docker 子命令


如果你想对 `docker` 命令选项使用制表符补全（例如将 `im` 补全到 `images` 等），请安装 `bash-completion` 包：



```
sudo pacman -S bash-completion

```

关闭终端并启动一个新终端。你现在应该能够通过 `docker` 命令使用制表符补全功能。


#### 无法连接到 Docker 守护进程错误


如果你看到以下错误：



```
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

```

那是因为 Docker 守护进程没有运行。参考步骤 2，启动 Docker 服务，确保其正在运行并启用它，以便 Docker 守护进程在每次启动时自动运行。



```
sudo systemctl start docker.service
sudo systemctl enable docker.service

```

#### 尝试连接到 Docker 守护程序套接字时权限被拒绝


如果你看到此错误：



```
ddocker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

```

这是因为你需要使用 `sudo` 运行 `docker` 命令，或者将用户添加到 `docker` 组以在不使用 `sudo` 的情况下运行 `docker` 命令。


我希望这篇简短的文章可以帮助你在 Arch Linux 上运行 Docker。


*（题图：MJ/9951f8bf-d2e5-4335-bd86-ebf89cba654d）*




---


via: <https://itsfoss.com/install-docker-arch-linux/>


作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出