---
title: Docker安装教程（Ubuntu）
published: 2025-01-02
pinned: false
description: Docker安装教程（Ubuntu）。
tags: [Docker]
category: 教程系列
draft: false
---
# 一、前期准备

## 1、防火墙设置

1.如果您使用 ufw 或 firewalld 来管理防火墙设置，请注意，当您使用 Docker 公开容器端口时，这些端口会绕过您的防火墙规则。当您使用 Docker 发布容器的端口时，该容器的进出流量在通过 ufw 防火墙设置之前就会被重定向。Docker 在 `nat` 表中路由容器流量，这意味着数据包在到达 ufw 使用的 `INPUT` 和 `OUTPUT` 链之前就会被重定向。数据包在防火墙规则生效之前就被路由，实际上忽略了您的防火墙配置。

2.Docker 仅兼容 `iptables-nft` 和 `iptables-legacy` 。使用 `nft` 创建的防火墙规则在安装了 Docker 的系统上不受支持。请确保您使用的任何防火墙规则集都是使用 `iptables` 或 `ip6tables` 创建的，并将它们添加到 `DOCKER-USER` 链中，参见数据包过滤和防火墙。
具体点击下面链接查看：

[Packet filtering and firewalls](https://docs.docker.com/engine/network/packet-filtering-firewalls/)

## 2、操作系统要求

要安装 Docker 引擎，您需要以下 Ubuntu 版本之一的 64 位版本：

- Ubuntu Oracular 24.10
- Ubuntu Noble 24.04 (LTS)
- Ubuntu Jammy 22.04 (LTS)
- Ubuntu Focal 20.04 (LTS)

Docker 引擎适用于 Ubuntu，兼容 x86_64（或 amd64）、armhf、arm64、s390x 和 ppc64le（ppc64el）架构。

# 二、安装方法

[Docker安装官方教程](https://docs.docker.com/engine/install/ubuntu/#installation-methods)

# 三、非root用户运行Docker

    Docker 守护进程绑定到 Unix 套接字，而不是 TCP 端口。默认情况下，Unix 套接字属于 `root` 用户，其他用户只能使用 `sudo` 访问它。Docker 守护进程始终以 `root` 用户身份运行。
    如果您不想在 `docker` 命令前加上 `sudo` ，请创建一个名为 `docker` 的 Unix 组并将用户添加到其中。当 Docker 守护进程启动时，它会创建一个 Unix 套接字，该套接字可供 `docker` 组的成员访问。在某些 Linux 发行版中，使用软件包管理器安装 Docker Engine 时，系统会自动创建此组。在这种情况下，您无需手动创建组。

1、创建 `docker` 群组并添加您的用户：

```bash
sudo groupadd docker
```

2、添加您的用户到 `docker` 组。

```bash
sudo usermod -aG docker $USER
```

3、退出并重新登录，或者运行下面命令。

```bash
newgrp docker
```

4、在不使用 `sudo` 的情况下运行 `docker` 命令。

```bash
docker run hello-world
```

> 如果出现以下错误：
> 
> 
> WARNING: Error loading config file: /home/user/.docker/config.json -
> stat /home/user/.docker/config.json: permission denied
> 
> 此错误表示由于之前使用了 `sudo` 命令， `~/.docker/` 目录的权限设置不正确。
> 要解决这个问题，要么删除 `~/.docker/` 目录（它将自动重新创建，但任何自定义设置都将丢失），要么使用以下命令更改其所有权和权限：
> 
> ```bash
> sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
> sudo chmod g+rwx "$HOME/.docker" -R
> ```
> 

# 四、Docker配置

## 1、修改镜像源

创建或修改/etc/docker/daemon.json文件

```bash
vim /etc/docker/daemon.json
```

或：

```bash
nano /etc/docker/daemon.json
```

添加下面内容：

```json
{
    "registry-mirrors": [
        "https://registry-1.docker.io"
    ]
}
```

> 请修改地址为可用的镜像源
> 

重启docker

```bash
service docker restart
```

查看是否更换成功

```bash
docker info
```

## 2、配置默认日志驱动程序

Docker 为主机上运行的所有容器提供日志驱动程序，用于收集和查看日志数据。默认的日志驱动程序 `json-file` 将日志数据写入主机文件系统中的 JSON 格式文件。随着时间的推移，这些日志文件会不断增大，可能导致磁盘资源耗尽。
为避免因过度使用磁盘存储日志数据而产生问题，请考虑以下选项之一：

- 配置 `json-file` 日志驱动程序以启用[日志轮转](https://docs.docker.com/engine/logging/drivers/json-file/)。
- 使用默认执行日志轮转的[替代日志驱动程序](https://docs.docker.com/engine/logging/configure/#configure-the-default-logging-driver)，例如[“local”日志驱动程序](https://docs.docker.com/engine/logging/drivers/local/)。
- 使用将日志发送到远程日志聚合器的日志驱动程序。

# Docker卸载

1.卸载 Docker Engine、CLI、containerd 和 Docker Compose 软件包：

```bash
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
```

2.镜像、容器、卷或自定义配置文件在您的宿主机上不会被自动删除。要删除所有镜像、容器和卷：

```bash
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
```

3.删除源列表和密钥环

```bash
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc
```