最新!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.rhkb.cn/news/38128.html

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

相关文章

ubuntu系统/run目录不能执行脚本问题解决

目录 前言 一、问题现象 二、原因分析 三、解决办法 总结 前言 在使用 Ubuntu 系统的过程中,我们有时会遇到在 /run 目录下无法执行脚本的情况。这篇博客将详细探讨该问题的原因,并提供有效的解决方案。。 一、问题现象 当尝试在 /run 目录下执行一个…

万用表测MOS好坏

测N MOS好坏 1,首先用万用表表笔把G D S全部短接放电。 2,万用表打到二极管档位 3,红笔接S(源极),黑笔接D(漏极),万用表会显示0.5V左右的电压(内部二极管压降…

clamav服务器杀毒(Linux服务器断网状态下如何进行clamav安装、查杀)

ClamAV服务器杀毒(服务器断网状态也可以使用该方法) 服务器因为挖矿病毒入侵导致断网,进行离线的clamav安装并查杀 安装包下载网址:https://www.clamav.net/downloads 安装.deb,如果服务器处于断网状态,可以…

Linux:基础IO---文件描述符

文章目录 1. 前言1.1 C语言文件知识回顾 2. 文件2.1 文件基础知识 3. 被打开的文件3.1 以C语言为主,先回忆一下C文件接口3.2 过渡到系统,认识文件系统调用3.3 访问文件的本质3.4 重定向&&缓冲区 序:在深入了解了进程的内容后&#xf…

LINUX基础 [二] - 进程概念

目录 前言 什么是进程 如何管理进程 描述进程 组织进程 如何查看进程 通过 ps 命令查看进程 通过 ls / proc 命令查看进程 通过系统调用 获取进程标示符 前言 在学习了【Linux系统编程】中的 ​ 操作系统 和 冯诺依曼体系结构 之后,我们已经对系统应该有…

word使用自带的公式

文章目录 Word公式中word公式快捷键:word2016公式框输入多行word 公式加入空格:word公式如何输入矩阵:公式图片转为Latex语法word 能直接输入 latex 公式么 word文本中将文字转为上标的快捷键 Tips几个好用的网站: 适用于:我的wor…

LSM-Tree(Log-Structured Merge-Tree)详解

1. 什么是 LSM-Tree? LSM-Tree(Log-Structured Merge-Tree)是一种 针对写优化的存储结构,广泛用于 NoSQL 数据库(如 LevelDB、RocksDB、HBase、Cassandra)等系统。 它的核心思想是: 写入时只追加写(Append-Only),将数据先写入内存缓冲区(MemTable)。内存数据满后…

车载以太网网络测试-21【传输层-DOIP协议-4】

目录 1 摘要2 DoIP entity status request/response(0x4001、0x4002)2.1 使用场景2.2 报文结构2.2.1 0x4001:DoIP entity status request2.2.2 0x4002:DoIP entity status response 3 Diagnostic power mode information request/…

CSS学习笔记

【1】CSS样式规则 【2】CSS样式表引入方式 1、行内式 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"/><meta name"vi…

医学交互作用分析步骤和目的(R语言)

医学交互作用分析的目的和用途&#xff08;R语言&#xff09; 医学交互作用分析一直是医学数据分析的组成部分&#xff0c;总结最近的一些认识。 目的&#xff1a; 在独立危险因素鉴定的研究中&#xff0c;&#xff08;独立危险因素的&#xff09;交互作用可以作为独立危险因…

『uniapp』简单文本复制文字 富文本内容复制文字(详细图文注释)

目录 text组件错误代码示例成功代码总结 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 text组件 官方文档可知app端用selectable可实现文本选中进而可复制,也就是说text标签内部的文本就可以复制了 https://uniapp.dclou…

C# SolidWorks 二次开发 -各种菜单命令增加方式

今天给大家讲一讲solidworks中各种菜单界面&#xff0c;如下图&#xff0c;大概有13处&#xff0c;也许还不完整哈。 1.CommandManager选项卡2.下拉选项卡3.菜单栏4.下级菜单5.浮动工具栏6.快捷方式工具栏7.FeatureManager工具栏区域8.MontionManager区域 ModelView?9.任务窗…

SAP Commerce(Hybris)PCM模块(一):商品批量导入导出

PCM&#xff08;Product Content Management&#xff09;是一个基于Backoffice&#xff0c;利于管理员直接页面操作的Hybris商品管理模块。 前置准备 在启动Hybris项目后&#xff0c;可以在backoffice控制台选择商品模块 但是&#xff0c;仅仅是以初始化状态启动是不够的&…

Apache Doris

Apache Doris介绍 Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库&#xff0c;以极速易用的特点被人们所熟知&#xff0c;仅需亚秒级响应时间即可返回海量数据下的查询结果&#xff0c;不仅可以支持高并发的点查询场景&#xff0c;也能支持高吞吐的复杂分析场…

go:前后端分离

1.前端代码 新建一个前端文件夹&#xff0c;在该文件夹下新建一个.html文件&#xff0c;写入自己的html代码。 前端搞定。 2.后端代码 其核心是挂载路由接受前端传来的数据核心代码如下&#xff1a; func main() { // 服务运行提示 fmt.Println("go web server is runn…

CUDA 学习(2)——CUDA 介绍

GeForce 256 是英伟达 1999 年开发的第一个 GPU&#xff0c;最初用作显示器上渲染高端图形&#xff0c;只用于像素计算。 在早期&#xff0c;OpenGL 和 DirectX 等图形 API 是与 GPU 唯一的交互方式。后来&#xff0c;人们意识到 GPU 除了用于渲染图形图像外&#xff0c;还可以…

C语言【文件操作】详解中

引言 介绍和文件操作中文件的顺序读写相关的函数 看这篇博文前&#xff0c;希望您先仔细看一下这篇博文&#xff0c;理解一下文件指针和流的概念&#xff1a;C语言【文件操作】详解上-CSDN博客文章浏览阅读606次&#xff0c;点赞26次&#xff0c;收藏4次。先整体认识一下文件是…

损失函数理解(二)——交叉熵损失

损失函数的目的是为了定量描述不同模型&#xff08;例如神经网络模型和人脑模型&#xff09;的差异。 交叉熵&#xff0c;顾名思义&#xff0c;与熵有关&#xff0c;先把模型换成熵这么一个数值&#xff0c;然后用这个数值比较不同模型之间的差异。 为什么要做这一步转换&…

学习笔记--基于Sa-Token 实现Java项目单点登录+同端互斥检测

目录 同端互斥登录 单点登录SSO 架构选型 模式二: URL重定向传播 前后端分离 整体流程 准备工作 搭建客户端 搭建认证中心SSO Server 环境配置 开放认证接口 启动类 跨域处理 同端互斥登录 同端互斥登陆 模块 同端互斥登录指&#xff1a;同一类型设备上只允许单地…

蓝桥杯 小球反弹

问题描述 有一个长方形&#xff0c;长为 343720 单位长度&#xff0c;宽为 233333 单位长度。 在其内部左上角顶点有一小球&#xff08;无视其体积&#xff09;&#xff0c;其初速度方向如图所示&#xff0c;且保持运动速率不变。分解到长宽两个方向上的速率之比为&#xff1…