
Ubuntu 安装 Docker
- 在线安装
-
- 卸载旧版
- 添加Docker的官方GPG密钥
- [添加 docker 源](#添加 docker 源)
- [安装 Docker](#安装 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