【记录】Ubuntu 安装 Docker

Ubuntu 安装 Docker

在线安装

卸载旧版

bash 复制代码
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)

添加Docker的官方GPG密钥

bash 复制代码
# 更新apt 软件索引,用于下载下面的 ca-certificates 和 curl命令
sudo apt update
# 安装:ca-certificates 和 curl
sudo apt install ca-certificates curl
# 创建目录 keyrings
sudo install -m 0755 -d /etc/apt/keyrings
# 下载 docker.asc 密钥文件到上面创建的目录下
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# 给密钥赋权
sudo chmod a+r /etc/apt/keyrings/docker.asc

添加 docker 源

bash 复制代码
# 将 Docker 仓库添加到 Apt 源中
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

# 再次更新索引
sudo apt update

安装 Docker

bash 复制代码
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动运行

安装之后 Docker 会自动启动。如果启动失败,可以使用以下命令进行操作。

bash 复制代码
# 查看 Docker 服务的运行状态
sudo systemctl status docker
# 启动 Docker 服务
sudo systemctl start docker
# 停止 Docker 服务
sudo systemctl stop docker
# 重启 Docker 服务
sudo systemctl restart docker

配置国内镜像

Docker 容器下载的默认地址在国外,相对来说不太稳定,所以配置国内的镜像仓库地址,可以提高下载速度和稳定性。

1、创建 daemon.json 文件

/etc/docker目录下创建 daemon.json 文件,如果 docker 目录不存在,需要自己创建。

bash 复制代码
touch /etc/docker/daemon.json

2、将以下内容添加到 daemon.json 文件中。

json 复制代码
{
  "registry-mirrors": [
    "https://alzgoonw.mirror.aliyuncs.com",
    "https://docker.m.daocloud.io",
    "https://dockerhub.icu",
    "https://docker.anyhub.us.kg",
    "https://docker.1panel.live"
  ]
}

3、查看是否配置成功

bash 复制代码
sudo docker info

使用以上命令,查看 Doker 的信息,在最后 Registry Mirrors 面可以看到刚刚配置的地址,就说明配置成功了。

bash 复制代码
riu@riu:/opt$ sudo docker info
Client: Docker Engine - Community
 Version:    29.1.5
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.30.1
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v5.0.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 1
  Running: 0
  Paused: 0
  Stopped: 1
 Images: 1
 Server Version: 29.1.5
 Storage Driver: overlayfs
  driver-type: io.containerd.snapshotter.v1
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 CDI spec directories:
  /etc/cdi
  /var/run/cdi
 Swarm: inactive
 Runtimes: runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: dea7da592f5d1d2b7755e3a161be07f43fad8f75
 runc version: v1.3.4-0-gd6d73eb8
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.14.0-37-generic
 Operating System: Ubuntu 24.04.3 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 7.709GiB
 Name: riu
 ID: 7c8546ec-8d43-4ebc-a0b9-77f2d26e4680
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
  ::1/128
 Registry Mirrors:
  https://alzgoonw.mirror.aliyuncs.com/
  https://docker.m.daocloud.io/
  https://dockerhub.icu/
  https://docker.anyhub.us.kg/
  https://docker.1panel.live/
 Live Restore Enabled: false
 Firewall Backend: iptables

配置数据地址

目录概述

Docker 运行过程中的数据在 /var/lib/docker/ 目录存储,此目录回随着时间推移和容器运行,越来越大。同时此目录为系统目录,可以理解为C盘,占用空间过多也会对系统运行产生影响,所以必要情况下可以迁移 Docker 数据的存储地址。

下面这段可以不看

之前在项目中遇到一个场景,在服务器上已经安装了 Docker,所有的镜像、容器都正常使用。但是有一天发现应用服务不能用了,进入服务器一查 docker 服务状态,发现没有应用服务了,就连镜像也没有了。后来才知道,是另一个软件在安装时也安装了 Docker,使用了默认的存储地址,和之前的应用服务地址不一样,所以应用服务都找不到了。不过万幸的是,软件在安装的时候只是重新安装了 Docker 软件,并没有删除数据。找到问题之后,将数据存储地址回复,一切就正常了。

bash 复制代码
/var/lib/docker/
├── buildkit/           # BuildKit 构建缓存
├── containers/         # 容器数据(最重要的目录)
│   ├── [容器ID]/
│   │   ├── config.v2.json    # 容器配置
│   │   ├── hostconfig.json   # 主机配置
│   │   ├── hostname         # 主机名
│   │   ├── hosts            # hosts 文件
│   │   ├── resolv.conf      # DNS 配置
│   │   ├── resolv.conf.hash
│   │   └── mounts/          # 挂载点
├── image/              # 镜像存储
│   ├── overlay2/      # Overlay2 驱动存储
│   │   ├── distribution/    # 镜像分发数据
│   │   ├── imagedb/        # 镜像数据库
│   │   ├── layerdb/        # 层数据库
│   │   └── repositories.json # 仓库列表
├── network/            # 网络配置
│   ├── files/         # 网络文件
│   └── local-kv.db    # 网络数据库
├── overlay2/           # Overlay2 文件系统数据
│   ├── l/             # 链接目录(硬链接)
│   └── diff/          # 各层差异文件
├── plugins/            # 插件
├── runtimes/           # 运行时
├── swarm/              # Swarm 集群数据
├── tmp/                # 临时文件
├── trust/              # 信任证书
├── volumes/            # 卷数据(另一个重要目录)
│   ├── [卷名]/
│   │   └── _data/     # 卷的实际数据
├── builder/            # 构建器缓存
└── daemon.json         # Docker 守护进程配置(可能不存在)

更改默认存储位置

bash 复制代码
# 1. 停止 Docker
sudo systemctl stop docker

# 2. 编辑 Docker 服务文件
sudo nano /etc/docker/daemon.json
# 添加以下内容:
{
  "data-root": "/new/path/to/docker"
}

# 3. 复制现有数据(可选但推荐)
sudo rsync -avxP /var/lib/docker/ /new/path/to/docker/

# 4. 启动 Docker
sudo systemctl start docker

友情链接

Ubuntu | Docker Docs

相关推荐
人间打气筒(Ada)2 小时前
Docker主机集群化方案 Docker Swarm
运维·docker·容器·docker swarm·docker stack
white-persist2 小时前
【内网运维 联合解析】Docker 全体系详解(功能原理 + 命令参数 + 实战攻防)
运维·docker·容器
一池秋_2 小时前
aarch64_Ubuntu (Linux)连不上adb解决方法
linux·ubuntu·adb
java_logo11 小时前
OpenCode 企业级 Docker 部署完整指南
运维·docker·容器·opencode·opencode本地化部署·opencode部署手册·opencode部署方案
再战300年11 小时前
docker下创建redis集群方案
redis·docker·容器
qq_2290580113 小时前
docker中检测进程的内存使用量
java·docker·容器
java_logo13 小时前
使用 Docker 部署 Clawdbot(官方推荐方式)
docker·容器·clawdbot·clawdbot部署·clawdbot部署手册·clawdbot部署文档·docker clawdbot
玉树临风江流儿14 小时前
docker镜像加速器配置步骤
运维·docker·容器
短剑重铸之日15 小时前
《SpringCloud实用版》生产部署:Docker + Kubernetes + GraalVM 原生镜像 完整方案
后端·spring cloud·docker·kubernetes·graalvm