☰
Debian/Ubuntu 安装 docker
2026/10/17 2:48:29 网站建设 项目流程

一、准备工作:

1. install -m 0755 -d /etc/apt/keyrings

#复制文件、创建目录并同时设置权限,第1个7是root读写执行权限,第2个5是组读执行权限,第3个5是其他人读执行权限。这是Debian/Ubuntu添加第三方APT软件源时的标准步骤,APT需要验证软件源的GPG签名,存放公钥的目录/etc/apt/keyrings需提前存在且权限规范。

2. curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

#创建密钥目录,导入Docker GPG密钥

3. chmod a+r /etc/apt/keyrings/docker.gpg

#赋予所有人读权限

4. echo “deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian buster stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#向 APT 添加一个 Docker 软件源,并写入 /etc/apt/sources.list.d/docker.list 文件
$(dpkg --print-architecture) $()命令输出替换为字符,显示本机 CPU 架构,如 amd64、arm64
signed-by=/etc/apt/keyrings/docker.gpg 指定用哪个 GPG 公钥验证这个源

二、开始安装:

1. apt update

#升级 apt 库

2. apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

#安装 docker,回显显示:需要下载 104 MB 的归档。
解压缩后会消耗 412 MB 的额外空间。

三、验证:

1. docker -v

Docker version 26.1.4, build 5650f9b
#查看 docker 版本号

2. systemctl status docker

● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2026-10-15 15:00:48 CST; 9min ago
Docs: https://docs.docker.com
Main PID: 57115 (dockerd)
Tasks: 18
Memory: 28.4M
CGroup: /system.slice/docker.service
└─57115 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
#查看 docker 服务状态

3. systemctl is-enabled docker

#是否开机启动,输出 enabled 就说明开机自启已开启;如果是 disabled,运行:sudo systemctl enable --now docker
enabled

4. usermod -aG docker $USER

#把当前用户加入 docker 组,之后可以免sudo运行 docker
newgrp docker

5. systemctl daemon-reload

systemctl restart docker
#重启 Docker 服务

三、开始应用:

1. docker pull hello-world

#测试运行一下 hello-world 镜像

Unable to find image ‘hello-world:latest’ locally
docker: Error response from daemon: Get “https://registry-1.docker.io/v2/”: context deadline exceeded (Client.Timeout exceeded while awaiting headers).
#上条命令不行的话,配置加速器

mkdir -p /etc/docker sudo tee /etc/docker/daemon.json > /dev/null <<'EOF' { "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me", "https://docker.m.daocloud.io" ] } EOF

或者跳过加速源,直接拉取:

docker pull docker.1ms.run/library/hello-world

再不行的话:

docker pull registry.cdn.w7.cc/library/hello-world

#一个专门针对国内环境设计的镜像服务可以尝试。它通过替换镜像地址前缀的方式来加速:微擎面板的公共加速源(无需登录,公开可用),终于可以用了,回显如下:
Using default tag: latest
latest: Pulling from library/hello-world
58dee6a49ef1: Pull complete
Digest: sha256:7f4da0fc94bcece205a8c0b6f4d11c8196924654ffe5c4d1aa439b7f632048b2
Status: Downloaded newer image for registry.cdn.w7.cc/library/hello-world:latest
registry.cdn.w7.cc/library/hello-world:latest
以后拉其他镜像(比如 nginx、redis),也可以套用同样的前缀:
docker pull registry.cdn.w7.cc/library/nginx
docker pull registry.cdn.w7.cc/library/redis

2. docker run registry.cdn.w7.cc/library/hello-world

#再运行一下:
docker run registry.cdn.w7.cc/library/hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

四、常用命令:

0. 常用命令:

docker run -it --rm Docker_Name Command
#使用交互式 -i ,并分配一个伪终端 -t ,进入容器运行 Command 后自动删除 --rm 容器

docker ps -a
#查看 docker 进程

docker images
docker image ls
#列出所有的 docker 映像

docker prune
docker container prune
#删除未在用的映像

docker rm Image1 Image2
#删除一个或者多个映像

docker tag mibtisam/debugbox:balanced dbb
#给docker 分短标签

1. 镜像相关

docker search nginx # 搜索镜像(官方 Hub,国内可能超时)

docker pull nginx # 拉取镜像,默认 latest
docker pull nginx:1.25 # 指定版本
docker pull registry.cdn.w7.cc/library/nginx # 用你的微擎源

docker images #查看本地镜像
docker image ls

docker rmi nginx ## 删除镜像
docker rmi nginx:1.25
docker rmi -f nginx # 强制删除

docker tag registry.cdn.w7.cc/library/nginx nginx # 给镜像打标签(常用于重命名或准备推送)

docker inspect nginx # 查看镜像详情

docker history nginx # 查看镜像构建历史

docker image prune # 清理无用镜像(悬空镜像)
docker image prune -a # 清理所有未被容器使用的镜像

2. 容器相关

docker run nginx # 运行容器, 前台运行
docker run -d nginx # 后台运行
docker run -d -p 8080:80 nginx # 端口映射 宿主:容器
docker run -d --name mynginx nginx # 指定容器名
docker run -it ubuntu bash # 交互式进入
docker run -d -v /host/path:/container/path nginx # 挂载目录
docker run -d --restart=always nginx # 开机/崩溃自动重启
docker run --rm hello-world # 运行完自动删除容器

docker ps # 查看容器只看运行中
docker ps -a # 看所有(含已退出)
docker ps -aq # 只看 ID

docker start mynginx # 启停容器
docker stop mynginx
docker restart mynginx
docker kill mynginx # 强制停止

docker rm mynginx # 删除容器
docker rm -f mynginx # 强制删除运行中的
docker container prune # 清理所有已退出容器

docker exec -it mynginx bash #进入正在运行的容器
docker exec -it mynginx sh # 容器内没有 bash 时用 sh
docker attach mynginx # 不推荐,退出会连带停容器

docker logs mynginx # 查看日志
docker logs -f mynginx # 实时跟踪
docker logs --tail 100 mynginx # 只看最后 100 行

docker inspect mynginx # 查看容器详情 / 资源占用
docker stats # 实时资源监控
docker top mynginx # 容器内进程

docker cp mynginx:/etc/nginx/nginx.conf ./nginx.conf # 宿主机与容器之间拷贝文件
docker cp ./nginx.conf mynginx:/etc/nginx/nginx.conf

3. Docker Compose

docker compose up -d # 后台启动
docker compose down # 停止并删除容器/网络
docker compose ps # 查看状态
docker compose logs -f # 跟踪日志
docker compose restart # 重启
docker compose pull # 拉取最新镜像
docker compose build # 重新构建

4. 系统 / 清理相关

docker info # 查看 Docker 信息(含镜像源配置)

docker version # 查看版本
docker -v

docker system df # 磁盘占用

docker system prune # 一键大清理(慎用!会删除所有未使用的镜像、容器、网络、缓存)
docker system prune -a # 更彻底
docker system prune -a --volumes # 连数据卷也删,极度慎用

5. 最常用的示例

docker pull registry.cdn.w7.cc/library/nginx # 拉取 + 后台运行 + 端口映射 + 自动重启 + 命名
docker tag registry.cdn.w7.cc/library/nginx nginx
docker run -d --name web -p 8080:80 --restart=always nginx

docker ps #查看是否跑起来
docker logs -f web

docker exec -it web bash ## 进容器看看

6. 几个容易踩的坑

  • docker run 每次都会新建一个容器 想复用已有容器用 docker start
  • docker stop 后容器还在 只是停止,docker ps -a 能看到,要删得用 docker rm
  • docker rmi 删不掉镜像 先删依赖它的容器,或加 -f 强制
  • -v 挂载的目录 宿主机路径写错会创建成目录,不会报错,注意检查
  • docker system prune -a 会删掉所有没在运行的镜像,不可恢复,慎用

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询