最新!Ubuntu Docker 安装教程

源自: AINLPer(每日干货分享!!)

编辑: ShuYini

校稿: ShuYini

时间: 2025-3-1

更多:>>>>大模型/AIGC、学术前沿的知识分享!

看到很多部署大模型的时候,都是基于docker安装部署的。主要Docker是一个开源的应用容器引擎,让我们可以打包应用以及依赖包到一个可移植的容器中,方便在不同操作系统上运行。Docker容器使应用的部署和扩展变得更加简单和高效。今天整理了一下docker的安装教程,供大家参考,比较适合初学者。

docker 前提条件

  • 运行Ubuntu系统(推荐Ubuntu 20.04 LTS或更高版本)
  • 拥有sudo权限的账户
  • 联网状态
  • 至少4GB内存(推荐)
  • 64位系统

安装步骤

1. 更新系统包索引

首先,更新apt包索引并安装必要的依赖项:

bash 复制代码
sudo apt update #此命令更新本地包索引,从各个仓库获取最新的软件包列表。这确保您安装的是最新版本的软件。
sudo apt install -y ca-certificates curl gnupg lsb-release
  • sudo apt install - 安装软件包的命令
  • -y - 自动确认所有提示,无需手动输入"yes"
  • ca-certificates - 允许SSL-based应用程序检查SSL连接的安全性
  • curl - 用于传输数据的工具
  • gnupg - GNU隐私保护工具,用于加密和签名
  • lsb-release - 提供特定于Linux发行版的信息

2. 添加Docker官方GPG密钥

创建/etc/apt/keyrings目录,用于存储仓库的GPG密钥。

bash 复制代码
sudo mkdir -p /etc/apt/keyrings #`-p`参数确保如果父目录不存在也会被创建。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

参数说明

  • curl -fsSL - 下载Docker的GPG密钥
    • -f - 失败时不显示错误信息
    • -s - 静默模式,不显示进度条
    • -S - 显示错误信息
    • -L - 跟随重定向
  • | - 管道符,将左边命令的输出作为右边命令的输入
  • sudo gpg --dearmor - 将ASCII密钥转换为二进制格式
  • -o /etc/apt/keyrings/docker.gpg - 指定输出文件路径

3. 设置Docker仓库

bash 复制代码
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

参数说明

  • echo "..." - 生成Docker仓库配置字符串
  • arch=$(dpkg --print-architecture) - 获取系统架构(如amd64、arm64等)
  • signed-by=/etc/apt/keyrings/docker.gpg - 指定用于验证仓库的GPG密钥
  • $(lsb_release -cs) - 获取Ubuntu的代号(如focal、jammy等)
  • sudo tee /etc/apt/sources.list.d/docker.list - 将配置写入Docker仓库列表文件
  • > /dev/null - 抑制输出

4. 更新包索引并安装Docker

更新包索引,使系统识别新添加的Docker仓库。

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

参数说明:

  • docker-ce - Docker Community Edition,核心Docker引擎
  • docker-ce-cli - Docker命令行工具
  • containerd.io - Docker使用的容器运行时
  • docker-compose-plugin - Docker Compose插件,用于定义和运行多容器Docker应用

5. 验证安装

安装完成后,可以运行以下命令验证Docker是否安装成功,如果一切正常,您将看到一条欢迎消息,表明Docker已成功安装并可以运行容器。

bash 复制代码
sudo docker run hello-world

参数说明:

  • sudo docker run - 运行Docker容器的命令
  • hello-world - 一个官方测试镜像,用于验证Docker安装是否成功
  • 此命令会下载测试镜像并在容器中运行,显示一条欢迎消息

6. 配置非root用户运行Docker(可选但推荐)

默认情况下,只有root用户和docker组的用户才能运行Docker命令。如果想在不使用sudo的情况下运行Docker命令,可以将当前用户添加到docker组。

bash 复制代码
sudo usermod -aG docker $USER

注意:执行此命令后,需要注销并重新登录,或者运行以下命令应用更改:

bash 复制代码
newgrp docker

Docker基本命令详解

Docker安装完成之后,就可以使用了。系统信息、镜像管理、容器管理、Docker Compose、Docker数据管理等操作命令。

系统信息

bash 复制代码
docker --version

解释:显示Docker版本信息。

bash 复制代码
docker info

解释:显示Docker系统信息,包括运行的容器数量、镜像数量、存储驱动等。

镜像管理

bash 复制代码
docker images

解释:列出本地所有镜像,包括镜像ID、仓库、标签、创建时间和大小。

bash 复制代码
docker pull [镜像名称]:[标签]

解释:从Docker Hub或其他仓库下载镜像。如果不指定标签,默认为latest。

bash 复制代码
docker rmi [镜像ID或名称]

解释:删除本地镜像。如果镜像正在被容器使用,需要先停止并删除容器。

bash 复制代码
docker build -t [名称]:[标签] [Dockerfile路径]

解释:根据Dockerfile构建镜像。

  • -t - 指定镜像名和标签

容器管理

bash 复制代码
docker ps

解释:列出正在运行的容器。

bash 复制代码
docker ps -a

解释:列出所有容器,包括停止的容器。

bash 复制代码
docker run [选项] [镜像名称] [命令]

解释:创建并启动容器。常用选项:

  • -d - 后台运行容器
  • -p [主机端口]:[容器端口] - 端口映射
  • -v [主机路径]:[容器路径] - 卷挂载
  • --name [容器名] - 指定容器名称
  • --restart always - 容器随Docker启动
  • -e [环境变量]=[值] - 设置环境变量
bash 复制代码
docker start [容器ID或名称]

解释:启动已停止的容器。

bash 复制代码
docker stop [容器ID或名称]

解释:停止正在运行的容器。

bash 复制代码
docker restart [容器ID或名称]

解释:重启容器。

bash 复制代码
docker rm [容器ID或名称]

解释 :删除容器。使用-f参数可以强制删除正在运行的容器。

bash 复制代码
docker logs [容器ID或名称]

解释 :查看容器的日志输出。可以添加-f参数实时查看日志。

bash 复制代码
docker exec -it [容器ID或名称] [命令]

解释:在运行中的容器中执行命令。

  • -i - 交互模式
  • -t - 分配一个伪终端

Docker Compose

bash 复制代码
docker compose up

解释:创建并启动定义在docker-compose.yml中的所有服务。

  • -d - 后台运行
bash 复制代码
docker compose down

解释:停止并删除定义在docker-compose.yml中的所有服务。

Docker数据管理

数据卷

bash 复制代码
docker volume create [卷名]

解释:创建一个命名卷。

bash 复制代码
docker volume ls

解释:列出所有卷。

bash 复制代码
docker volume rm [卷名]

解释:删除指定的卷。

Docker网络

bash 复制代码
docker network create [网络名]

解释:创建一个自定义网络。

bash 复制代码
docker network ls

解释:列出所有网络。

bash 复制代码
docker network connect [网络名] [容器ID或名称]

解释:将容器连接到指定网络。

系统维护

bash 复制代码
docker system df

解释:显示Docker磁盘使用情况。

bash 复制代码
docker system prune

解释:清理未使用的Docker资源(停止的容器、未使用的网络和悬挂的镜像)。

  • -a - 同时删除所有未使用的镜像
  • --volumes - 同时删除未使用的卷

卸载Docker

如果需要卸载Docker,请使用以下命令:

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

解释:删除Docker软件包,但保留镜像、容器和卷。

bash 复制代码
sudo rm -rf /var/lib/docker

解释:删除Docker的默认数据目录,包括所有镜像、容器和卷。

bash 复制代码
sudo rm -rf /var/lib/containerd

解释:删除containerd的数据目录。

卸载Docker

如果需要卸载Docker,请使用以下命令:

bash 复制代码
sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

常见问题和故障排除

1. 权限问题

如果遇到"permission denied"错误,可能是因为当前用户不在docker组中。解决方法:

bash 复制代码
sudo usermod -aG docker $USER

然后注销并重新登录。

2. 容器无法联网

检查UFW(Uncomplicated Firewall)设置:

bash 复制代码
sudo ufw status

如果UFW已启用,允许Docker端口:

bash 复制代码
sudo ufw allow 2375/tcp
sudo ufw allow 2376/tcp

3. 磁盘空间不足

清理未使用的资源:

bash 复制代码
docker system prune -a

4. Docker服务无法启动

检查Docker服务状态:

bash 复制代码
sudo systemctl status docker

如果服务未运行,尝试启动:

bash 复制代码
sudo systemctl start docker

设置开机自启:

bash 复制代码
sudo systemctl enable docker

最佳实践

  1. 使用官方镜像:尽量使用Docker Hub上的官方镜像,以确保安全性和稳定性。

  2. 最小化镜像大小:使用多阶段构建和Alpine基础镜像减小镜像体积。

  3. 使用Docker Compose:对于多容器应用,使用Docker Compose简化管理。

  4. 定期更新:定期更新Docker及其组件以获取安全修复和新功能。

  5. 使用数据卷:使用数据卷而不是绑定挂载,以便更好地管理数据。

  6. 设置资源限制:为容器设置CPU和内存限制,防止单个容器占用过多资源。

更多:>>>>大模型/AIGC、学术前沿的知识分享!

相关推荐
末日汐3 分钟前
磁盘与文件系统
linux·运维·数据库
爱吃大芒果4 分钟前
openJiuwen(Windows端)大模型添加及AI Agent创建教程
人工智能·ubuntu·openjiuwen
水天需0109 分钟前
Linux PS4 环境变量详解
linux
小新ya19 分钟前
vscode增删改查文件,一直等待中...
linux·vscode
牛奔32 分钟前
Docker Compose 解决服务间 DNS 解析失败问题
运维·docker·容器
济6171 小时前
linux(第十四期)--官方 SDK 移植实验-- Ubuntu20.04
linux·运维·服务器
云qq1 小时前
x86操作系统23——进程相关系统调用
linux·c语言·汇编·ubuntu
小猪佩奇TONY1 小时前
Linux 内核学习(16) --- linux x86-64 虚拟地址空间和区域
linux·运维·学习
L1624761 小时前
Docker 安装部署全流程使用指南(Linux 通用版)
linux·docker·容器
杰克崔1 小时前
kprobe及kretprobe的基于例子来调试分析其原理
linux·运维·服务器·车载系统