源自: AINLPer(每日干货分享!!)
编辑: ShuYini
校稿: ShuYini
时间: 2025-3-1
看到很多部署大模型的时候,都是基于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
最佳实践
-
使用官方镜像:尽量使用Docker Hub上的官方镜像,以确保安全性和稳定性。
-
最小化镜像大小:使用多阶段构建和Alpine基础镜像减小镜像体积。
-
使用Docker Compose:对于多容器应用,使用Docker Compose简化管理。
-
定期更新:定期更新Docker及其组件以获取安全修复和新功能。
-
使用数据卷:使用数据卷而不是绑定挂载,以便更好地管理数据。
-
设置资源限制:为容器设置CPU和内存限制,防止单个容器占用过多资源。