在当今的开发环境中,Docker 已经成为容器化技术的主流选择。它可以帮助开发者轻松地创建、部署和运行应用程序。本文将详细介绍如何在 Ubuntu 系统上安装 Docker 和 Docker Compose,并解决在安装过程中可能遇到的一些常见问题。


一、安装 Docker


1.卸载旧版本的 Docker(如果已安装)

```bash
sudo apt-get remove docker docker-engine docker.io containerd runc
```

2.安装 Docker 的前提条件

• 更新系统包:

```bash
  sudo apt-get update
  ```


• 安装必要的依赖包:

```bash
  sudo apt-get install -y ca-certificates curl gnupg
  ```

3.添加 Docker 的官方 GPG 密钥

```bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
```

4.设置 Docker 的 APT 软件源

```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
```

5.安装 Docker Engine

• 更新包索引:

```bash
  sudo apt-get update
  ```


• 安装 Docker Engine 和 containerd:

```bash
  sudo apt-get install -y docker-ce docker-ce-cli containerd.io
  ```

6.验证 Docker 是否安装成功
运行以下命令来验证 Docker 是否正常工作:

```bash
sudo docker run hello-world
```

如果安装成功,会看到类似以下的输出:

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

7.(可选)将用户添加到 Docker 组
默认情况下,Docker 命令需要管理员权限(即`sudo`)。为了能够以普通用户身份运行 Docker 命令,可以将用户添加到`docker`组:

```bash
sudo usermod -aG docker ${USER}
```

之后需要重新登录或重启系统,使组变更生效。


8.配置国内镜像源(可选)
由于国外的 Docker Hub 在国内访问速度较慢,可以配置国内的 Docker 镜像源来加速镜像的拉取。以下是配置阿里云镜像源的步骤:

• 创建或编辑 Docker 配置文件:

```bash
  sudo nano /etc/docker/daemon.json
  ```


• 在文件中添加以下内容:

```json
  {
      "registry-mirrors": ["https://<你的阿里云镜像地址>.mirror.aliyuncs.com"]
  }
  ```


• 保存文件并退出编辑器。

• 重新加载 Docker 配置并重启 Docker 服务:

```bash
  sudo systemctl daemon-reload
  sudo systemctl restart docker
  ```

二、安装 Docker Compose


方法 1:使用官方二进制文件安装(推荐)

• 下载 Docker Compose

• 打开终端,运行以下命令下载最新版本的 Docker Compose(以最新版本`v2.32.4`为例):

```bash
     sudo curl -L "https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
     ```


• 如果 GitHub 下载速度较慢,可以使用国内镜像源,例如 DaoCloud 的镜像:

```bash
     sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/v2.32.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
     ```

• 添加可执行权限

```bash
   sudo chmod +x /usr/local/bin/docker-compose
   ```

• 创建软链接(可选)

• 如果你希望在任何地方都能直接使用`docker-compose`命令,可以创建一个软链接:

```bash
     sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
     ```

• 验证安装

• 运行以下命令验证 Docker Compose 是否安装成功:

```bash
     docker-compose --version
     ```


• 如果安装成功,你会看到类似以下的输出:

```
     Docker Compose version v2.32.4
     ```

方法 2:使用包管理器安装(插件形式)
从 Docker 20.10 版本开始,Docker Compose 被集成到 Docker CLI 插件中,可以通过包管理器直接安装。


• 更新包索引

```bash
   sudo apt-get update
   ```

• 安装 Docker Compose 插件

```bash
   sudo apt-get install docker-compose-plugin
   ```

• 验证安装

• 运行以下命令验证 Docker Compose 插件是否安装成功:

```bash
     docker compose version
     ```


• 如果安装成功,你会看到类似以下的输出:

```
     Docker Compose version v2.32.4
     ```

三、解决安装过程中可能遇到的问题


1.Docker 镜像下载速度慢
即使配置了国内镜像源,Docker Compose 下载镜像仍然很慢,可能是由以下原因导致的:


• 镜像源选择问题:配置的镜像源可能不稳定或速度较慢。建议尝试更换其他国内镜像源,例如阿里云、网易云、腾讯云、中国科学技术大学等。

• 网络问题:网络不稳定或带宽不足,导致镜像下载速度慢。建议检查网络连接,或者使用代理服务器。

• Docker Hub 限流:Docker Hub 对未登录用户进行限流,导致下载速度慢。建议注册 Docker Hub 账号并登录,避免限流。

• 镜像体积过大:某些镜像体积较大,即使使用了加速源,下载时间也可能较长。建议尽量使用轻量级的镜像。


2.无法访问 DaoCloud 镜像源
如果你无法访问 DaoCloud 的镜像源,可以尝试以下替代方法:


• 使用 GitHub 官方链接:从 GitHub 的官方发布页面下载 Docker Compose。

• 离线安装:在有网络的设备上下载 Docker Compose 二进制文件,然后上传到目标服务器进行安装。

• 使用其他工具替代 Docker Compose:例如`nerdctl`是一个替代 Docker 和 Docker Compose 的工具,它支持类似的功能。

• 使用国内开源项目一键安装:例如[LinuxMirrors]()提供了一键安装 Docker 和 Docker Compose 的功能。


四、总结

通过上述步骤,你可以在 Ubuntu 系统上轻松安装并使用 Docker 和 Docker Compose。在安装过程中,如果遇到镜像下载速度慢或无法访问镜像源的问题,可以尝试更换镜像源、优化网络设置或使用离线安装等方法。希望本文能帮助你顺利搭建 Docker 环境,提升开发效率。

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

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

相关文章

【Qt】QxORM无法删除和更改主键值为0的行,否则报错:invalid primary key

1、问题描述 使用 QxORM 删除或者更改数据库时,当主键值为 0 时,报错: [QxOrm] invalid primary key2、原因分析 2.1 源码分析 查找打印错误提示的代码: #define QX_DAO_ERR_INVALID_PRIMARY_KEY "[QxOrm] invalid primary key" QSqlError IxDao_Help…

数学建模_线性规划

问题背景模型介绍matlab求解 示例 问题背景 模型介绍 matlab求解 max问题转化为min问题 > > >号转化为 < < <号 示例 看到多个线性规划目标 2个目标函数变成1个目标函数 后面省略

51单片机制作万年历

硬件设计 主控芯片&#xff1a;一般选用AT89C52单片机&#xff0c;它与MCS - 51单片机产品兼容&#xff0c;有8K字节在系统可编程Flash存储器、32个可编程I/O口线、三个16位定时器 / 计数器等。时钟芯片&#xff1a;常用DS1302时钟芯片&#xff0c;能提供实时时钟 / 日历、定时…

Oracle CTE递归实现PCB行业的叠层关系

1、需求背景&#xff0c;出货报告要实现叠板假层的处理&#xff0c;需求如下 表ID,layer,MEDIUM数据如下 第一种情况&#xff0c;layer有K的 IDlayerMEDIUM1L1-L2302L2-L3403L3-K1204K1-L4105L4-L5206L5-L6307L7-K2108K2-L8119L8-L91010L9-L1030 实现layer有K1的&#xff0c…

Kubernetes 服务发布基础学习

一、Service 概述&#xff08;一&#xff09;Service 的定义Service 是 Kubernetes 中的一种抽象概念&#xff0c;用于定义一组 Pod 以及访问这组 Pod 的策略。其核心作用是将一组 Pod 封装为一个虚拟服务&#xff0c;并为客户端提供统一的入口&#xff0c;从而实现服务的负载均…

【零基础学AI】第21讲:TensorFlow基础 - 神经网络搭建入门

本节课你将学到理解什么是TensorFlow&#xff0c;为什么要用它 掌握TensorFlow安装和基本操作 学会搭建第一个神经网络 完成手写数字识别项目 开始之前 环境要求 Python 3.8至少4GB内存网络连接&#xff08;用于下载数据集&#xff09; 前置知识 第1-8讲&#xff1a;Python基础…

STM32 串口USART通讯驱动

前言 本篇文章对串口Usart进行讲解&#xff0c;为后面的esp8266和语音模块控制打好基础。 1.串口USART USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff0c;通用同步 / 异步收发器&#xff09; 是一种常见的串行通信接口&#xff0c;广泛应…

pytorch版本densenet代码讲解

DenseNet 模型代码详解 下面是 DenseNet 模型代码的逐部分详细解析&#xff1a; 1. 导入模块 import re from collections import OrderedDict from functools import partial from typing import Any, Optionalimport torch import torch.nn as nn import torch.nn.functional…

前端常见设计模式深度解析

# 前端常见设计模式深度解析一、设计模式概述 设计模式是解决特定问题的经验总结&#xff0c;前端开发中常用的设计模式可分为三大类&#xff1a; 创建型模式&#xff1a;处理对象创建机制&#xff08;单例、工厂等&#xff09;结构型模式&#xff1a;处理对象组合&#xff08;…

React 学习(3)

核心API——React.creatElement()方法优点&#xff1a;将创建元素、添加属性和事件、添加内容和子元素等使用原生dom需要进行复杂操作才能实现的功能集成在一个API中。1.该方法接收三个参数第一个是要创建的元素的名称&#xff08;小写是因为如果&#xff0c;大写开头会被react…

倾斜摄影无人机飞行航线规划流程详解

在倾斜摄影测量项目中&#xff0c;航线规划的严谨性直接决定了最终三维模型的质量与完整性。照片覆盖不全、模型空洞、纹理模糊或分辨率不达标等问题&#xff0c;往往源于规划阶段对关键细节的疏忽。本文将系统梳理倾斜摄影无人机航线规划的核心流程与关键要点&#xff0c;旨在…

Minio大文件分片上传

一、引入依赖 <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.3.3</version></dependency> 二、自定义Minio客户端 package com.gstanzer.video.controller;import com.google.common.c…

Jenkins 插件深度应用:让你的CI/CD流水线如虎添翼 [特殊字符]

Jenkins 插件深度应用&#xff1a;让你的CI/CD流水线如虎添翼 &#x1f680; 嘿&#xff0c;各位开发小伙伴&#xff01;今天咱们来聊聊Jenkins的插件生态系统。如果说Jenkins是一台强大的引擎&#xff0c;那插件就是让这台引擎发挥最大威力的各种零部件。准备好了吗&#xff1…

密码学(斯坦福)

密码学笔记 \huge{密码学笔记} 密码学笔记 斯坦福大学密码学的课程笔记 课程网址&#xff1a;https://www.bilibili.com/video/BV1Rf421o79E/?spm_id_from333.337.search-card.all.click&vd_source5cc05a038b81f6faca188e7cf00484f6 概述 密码学的使用背景 安全信息保护…

代码随想录算法训练营第四十六天|动态规划part13

647. 回文子串 题目链接&#xff1a;647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 思路&#xff1a; 以dp【i】表示以s【i】结尾的回文子串的个数&#xff0c;发现递推公式推导不出来此路不通 以dp【i】【j】表示s【i】到s【j】的回…

基于四种机器学习算法的球队数据分析预测系统的设计与实现

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍项目展示随机森林模型XGBoost模型逻辑回归模型catboost模型每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 本项目旨在设计与实现…

http、SSL、TLS、https、证书

一、基础概念 1.HTTP HTTP (超文本传输协议) 是一种用于客户端和服务器之间传输超媒体文档的应用层协议&#xff0c;是万维网的基础。 简而言之&#xff1a;一种获取和发送信息的标准协议 2.SSL 安全套接字层&#xff08;SSL&#xff09;是一种通信协议或一组规则&#xf…

在 C++ 中,判断 `std::string` 是否为空字符串

在 C 中&#xff0c;判断 std::string 是否为空字符串有多种方法&#xff0c;以下是最常用的几种方式及其区别&#xff1a; 1. 使用 empty() 方法&#xff08;推荐&#xff09; #include <string>std::string s; if (s.empty()) {// s 是空字符串 }特性&#xff1a; 时间…

【Harmony】鸿蒙企业应用详解

【HarmonyOS】鸿蒙企业应用详解 一、前言 1、应用类型定义速览&#xff1a; HarmonyOS目前针对应用分为三种类型&#xff1a;普通应用&#xff0c;游戏应用&#xff0c;企业应用。 而企业应用又分为&#xff0c;企业普通应用和设备管理应用MDM&#xff08;Mobile Device Man…

Linux云计算基础篇(8)

VIM 高级特性插入模式按 i 进入插入模式。按 o 在当前行下方插入空行并进入插入模式。按 O 在当前行上方插入空行并进入插入模式。命令模式:set nu 显示行号。:set nonu 取消显示行号。:100 光标跳转到第 100 行。G 光标跳转到文件最后一行。gg 光标跳转到文件第一行。30G 跳转…