最新!Ubuntu Docker 安装教程

源自: AINLPer(每日干货分享!!)
编辑: ShuYini
校稿: ShuYini
时间: 2025-3-1

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

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

docker 前提条件

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

安装步骤

1. 更新系统包索引

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

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密钥。

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仓库

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仓库。

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已成功安装并可以运行容器。

sudo docker run hello-world

参数说明:

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

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

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

sudo usermod -aG docker $USER

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

newgrp docker

Docker基本命令详解

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

系统信息

docker --version

解释:显示Docker版本信息。

docker info

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

镜像管理

docker images

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

docker pull [镜像名称]:[标签]

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

docker rmi [镜像ID或名称]

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

docker build -t [名称]:[标签] [Dockerfile路径]

解释:根据Dockerfile构建镜像。

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

容器管理

docker ps

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

docker ps -a

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

docker run [选项] [镜像名称] [命令]

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

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

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

docker stop [容器ID或名称]

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

docker restart [容器ID或名称]

解释:重启容器。

docker rm [容器ID或名称]

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

docker logs [容器ID或名称]

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

docker exec -it [容器ID或名称] [命令]

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

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

Docker Compose

docker compose up

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

  • -d - 后台运行
docker compose down

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

Docker数据管理

数据卷

docker volume create [卷名]

解释:创建一个命名卷。

docker volume ls

解释:列出所有卷。

docker volume rm [卷名]

解释:删除指定的卷。

Docker网络

docker network create [网络名]

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

docker network ls

解释:列出所有网络。

docker network connect [网络名] [容器ID或名称]

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

系统维护

docker system df

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

docker system prune

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

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

卸载Docker

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

sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin

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

sudo rm -rf /var/lib/docker

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

sudo rm -rf /var/lib/containerd

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

卸载Docker

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

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组中。解决方法:

sudo usermod -aG docker $USER

然后注销并重新登录。

2. 容器无法联网

检查UFW(Uncomplicated Firewall)设置:

sudo ufw status

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

sudo ufw allow 2375/tcp
sudo ufw allow 2376/tcp

3. 磁盘空间不足

清理未使用的资源:

docker system prune -a

4. Docker服务无法启动

检查Docker服务状态:

sudo systemctl status docker

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

sudo systemctl start docker

设置开机自启:

sudo systemctl enable docker

最佳实践

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html5炫酷3D立体文字效果实现详解

炫酷3D立体文字效果实现详解 这里写目录标题 炫酷3D立体文字效果实现详解项目概述技术实现要点1. 基础布局设置2. 动态背景效果3. 文字渐变效果4. 立体阴影效果5. 悬浮动画效果 技术难点及解决方案1. 文字渐变动画2. 立体阴影效果3. 性能优化 浏览器兼容性总结 项目概述 在这个…

电脑如何设置几分钟后自动关机

摘要:本文提供Windows、macOS和Linux系统设置定时自动关机的详细方法。 目录 一、Windows系统设置方法 设置定时关机 取消关机计划 二、macOS系统设置方法 设置定时关机取消关机计划 三、Linux系统设置方法 设置定时关机 取消关机计划 四、注意事项五、扩展&#x…

Android音视频多媒体开源库基础大全

从事音视频开发工作,需要了解哪些常见的开源库,从应用到底软系统,整理了九大类,这里一次帮你总结完。 包含了应用层的MediaRecorder、surfaceView,以及常见音视频处理库FFmpeg和OpenCV,还有视频渲染和音频…

若依前端框架增删改查

1.下拉列表根据数据库加载 这个是用来查询框 绑定了 change 事件来处理站点选择变化后的查询逻辑。 <el-form-item label"站点选择" prop"stationId" v-has-permi"[ch:m:y]"><el-select v-model"queryParams.stationId" pl…

Java 第十一章 GUI编程(3)

目录 内部类 内部类定义 内部类的特点 匿名内部类 格式&#xff1a; 内部类的意义 实例 内部类 ● 把类定义在另一个类的内部&#xff0c;该类就被称为内部类。 ● 如果在类 Outer 的内部再定义一个类 Inner&#xff0c;此时类 Inner 就称为内部类 &#xff08;或称为嵌…

Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测

Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测 目录 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预…

3DMAX曲线生成器插件CurveGenerator使用方法

1. 脚本功能简介 3DMAX曲线生成器插件CurveGenerator是一个用于 3ds Max 的样条线生成工具&#xff0c;用户可以通过简单的UI界面输入参数&#xff0c;快速生成多条样条线。每条样条线的高度值随机生成&#xff0c;且可以自定义以下参数&#xff1a; 顶点数量&#xff1a;每条…

LiteratureReading:[2023] GPT-4: Technical Report

文章目录 一、文献简明&#xff08;zero&#xff09;二、快速预览&#xff08;first&#xff09;1、标题分析2、作者介绍3、引用数4、摘要分析&#xff08;1&#xff09;翻译&#xff08;2&#xff09;分析 5、总结分析&#xff08;1&#xff09;翻译&#xff08;2&#xff09;…

vm_pwn入门 -- [GHCTF 2025]my_vm

先看基本逻辑 int __fastcall main(int argc, const char **argv, const char **envp) {unsigned __int16 IP; // [rspCh] [rbp-14h] BYREFunsigned __int16 SP; // [rspEh] [rbp-12h] BYREFunsigned __int16 cmd_count; // [rsp10h] [rbp-10h] BYREFunsigned __int16 i; // [r…

CA 机构如何防止中间人攻击

在现代互联网中&#xff0c;中间人攻击&#xff08;Man-in-the-Middle Attack&#xff0c;简称 MITM&#xff09;是一种常见的网络攻击方式&#xff0c;攻击者通过拦截和篡改通信双方的信息&#xff0c;进而窃取敏感数据或执行恶意操作。为了防止中间人攻击&#xff0c;证书颁发…

Elasticsearch快速上手与深度进阶:一站式实战教程

目录 1. Elasticsearch 简介 2. 安装与启动 方式 1&#xff1a;Docker 快速安装&#xff08;推荐&#xff09; 方式 2&#xff1a;手动安装 3. 基础操作 3.1 创建索引 3.2 插入文档 3.3 查询文档 3.4 更新文档 3.5 删除文档 4. 高级查询 4.1 布尔查询 4.2 范围查询…

闻所闻尽:穿透声音的寂静,照见生命的本真

在《楞严经》的梵音缭绕中&#xff0c;"闻所闻尽"四个字如晨钟暮鼓&#xff0c;叩击着每个修行者的心门。这个源自观世音菩萨耳根圆通法门的核心概念&#xff0c;既是佛门修行的次第指引&#xff0c;更蕴含着东方哲学对生命本质的终极叩问。当我们穿越时空的帷幕&…

回溯法经典练习:组合总和的深度解析与实战

回溯法经典练习&#xff1a;组合总和的深度解析与实战 引言 在算法世界里&#xff0c;回溯法&#xff08;Backtracking&#xff09;是解决 组合、排列、子集 等问题的神器。而 “组合总和”&#xff08;Combination Sum&#xff09; 问题&#xff0c;更是回溯算法中的经典代表…

传感器研习社:Swift Navigation与意法半导体(STMicroelectronics)合作 共同推出端到端GNSS汽车自动驾驶解决方案

自动驾驶系统单纯依赖感知传感器进行定位在遇到恶劣天气或缺乏车道标线的道路场景时很容易失效。此外&#xff0c;由于激光雷达&#xff08;LiDAR&#xff09;、视觉等传感器的成本高昂以及将众多不同组件整合为统一系统的复杂性&#xff0c;都可能增加产品研发成本或延迟产品上…

【人工智能】Ollama 的 API 操作指南:打造个性化大模型服务

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着人工智能技术的飞速发展,大型语言模型(LLM)在自然语言处理领域的应用日益广泛。然而,传统的云端模型服务往往面临数据隐私、成本高…

Linux关机重启二三事

、、 1概述 故障是高可用组最常接触的场景&#xff0c;其中包含了进程故障&#xff0c;网络故障、系统故障&#xff0c;硬件故障。掉电、关机和重启作为其中最常见的系统故障&#xff0c;具体的细节还是有些许差异的。本文将从操作系统与主板的行为讲解三者之间的联系与区别。…

算法1--两束求和

题目描述 解题思路 先说一种很容易想到的暴力解法 暴力解法的思路很简单&#xff0c;就是遍历数组&#xff0c;对于每一个元素&#xff0c;都去遍历数组中剩下的元素&#xff0c;判断是否有两个元素的和等于目标值&#xff0c;如果有&#xff0c;就返回这两个元素的下标。 c…

在Fedora-Workstation-Live-x86_64-41-1.4中使用最新版本firefox和腾讯翻译插件让英文网页显示中文翻译

在Fedora-Workstation-Live-x86_64-41-1.4中使用最新版本firefox和腾讯翻译插件让英文网页显示中文翻译 应用——系统工具——终端 suozhangfedora:~$ rpm -aq | grep firefox firefox-131.0.2-1.fc41.x86_64 firefox-langpacks-131.0.2-1.fc41.x86_64 fedora41系统自身安装有f…

android 接入google 登录

在 Android 应用中接入 Google 登录功能,可让用户使用他们的 Google 账号快速登录应用。以下是详细的接入步骤和示例代码: 步骤 1:创建 Google API 项目 访问 Google API 控制台,并使用你的 Google 账号登录。点击 “选择项目”,然后点击 “新建项目”,按照提示填写项目…

Redis缓存与数据库 数据一致性保障

为什么要保证数据一致性 只要使用redis做缓存&#xff0c;就必然存在缓存和DB数据一致性问题。若数据不一致&#xff0c;则业务应用从缓存读取的数据就不是最新数据&#xff0c;可能导致严重错误。比如将商品的库存缓存在Redis&#xff0c;若库存数量不对&#xff0c;则下单时…