docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈

简介: Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈源、安装 Docker 包、验证安装- 适用场景:开发、测试、生产环境通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。

docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈

docker介绍

首先我们要知道docker的官网
https://www.docker.com/

这是docker官网,是不是觉得有点似曾相识,看起来和git 对应的代码托管平台 GitHub gitee 很类似,但是他们是有区别的。

  • docker基于容器技术,利用 Linux 内核的命名空间(Namespaces)和控制组(cgroups)等功能来创建独立的运行环境。容器共享主机操作系统的内核,当启动一个 Docker 容器时,Docker 引擎会根据容器所基于的镜像来创建一个隔离的文件系统、进程空间、网络接口等。例如,在一台服务器上可以同时运行多个基于不同操作系统(如 Ubuntu、CentOS 等)的容器,这些容器相互独立,就像运行在不同的服务器上一样,但实际上它们共享主机的内核资源。

而gitee和Github基于版本控制系统(如 Git)构建。它通过存储库(Repository)来管理代码。

扩展知识:

一、Docker 是什么

  1. 定义
  • Docker 是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包成一个称为容器的标准化单元。容器是轻量级、可移植的执行环境,在任何支持 Docker 的操作系统上都能以相同的方式运行。
  • 简单类比,就像是把应用程序和它运行所需要的所有东西(如库、配置文件等)都装在一个 “盒子”(容器)里,这个 “盒子” 可以很方便地在不同的地方(不同的服务器、开发环境、测试环境等)移动和运行,而且里面的东西(应用程序的运行环境)不会受到外部环境的干扰。
  1. 核心概念
  • 镜像(Image):镜像是一个只读的模板,包含了运行容器所需的文件系统和配置。例如,一个基于 Ubuntu 操作系统的 Web 服务器应用镜像,会包含 Ubuntu 操作系统的文件系统,以及安装好的 Web 服务器软件(如 Nginx)及其配置文件。可以把镜像看作是容器的 “蓝图”。
  • 容器(Container):容器是从镜像创建的运行实例。它是一个独立的运行环境,有自己的进程空间、网络接口和文件系统。以刚才的 Web 服务器为例,根据 Web 服务器镜像创建的容器,就是实际运行 Web 服务器应用的地方。容器可以被启动、停止、删除等操作。
  • 仓库(Repository):仓库是用于存储和分发镜像的地方,类似于代码仓库。Docker Hub 是最常用的公共仓库,上面有大量官方和社区维护的镜像。开发者可以将自己创建的镜像推送到仓库中,也可以从仓库中拉取别人创建的镜像来使用。
  1. 优势
  • 一致性环境:确保应用在不同的环境(开发、测试、生产)中以相同的方式运行,减少了因环境差异导致的 “在我机器上可以运行” 的问题。
  • 轻量级和高效:相比于传统的虚拟机,容器更加轻量级。因为容器共享主机操作系统的内核,不需要像虚拟机那样运行完整的操作系统,从而节省了大量的系统资源,启动速度也更快。
  • 易于部署和扩展:可以通过简单的命令快速部署容器,并且可以很容易地根据应用的负载情况进行扩展,比如启动多个相同的容器来处理更多的请求。

安装部署

https://docs.docker.com/desktop/setup/install/linux/

这里是 docker的下载地址,优雅草目前采用的系统均为Linux Ubuntu ,因此本文优雅草央千澈也就以Ubuntu为示范

这里我们点击来到了详细说明,这里我们大意是要安装docker 桌面

第一步:gnome-terminal安装

docker这里提示对于非Gnome桌面环境,gnome-terminal必须安装。

扩展知识:

在 Ubuntu 系统中,非 Gnome 桌面环境是指除了 Gnome 之外的其他桌面环境。

一、常见的非 Gnome 桌面环境

  1. KDE Plasma
  • 特点
  • 高度可定制性。它提供了丰富的桌面小部件,用户可以根据自己的喜好对桌面进行个性化设置,比如可以在桌面上添加天气小部件、系统资源监视器小部件等。
  • 具有美观的视觉效果。KDE Plasma 的主题和图标设计精美,并且支持多种主题切换,能给用户带来舒适的视觉体验。
  • 功能强大的文件管理器。Dolphin 是 KDE Plasma 的默认文件管理器,它支持强大的文件搜索功能、标签式浏览以及网络共享功能等。
  • 适用场景:适合那些追求高度定制化、需要强大的文件管理功能和美观界面的用户,特别是对设计、多媒体等工作有需求的用户。例如,平面设计师可以利用其定制功能将桌面设置成符合自己工作流程的样式,方便快速访问设计工具和素材。
  1. XFCE
  • 特点
  • 资源占用少。相比 Gnome 和 KDE Plasma,XFCE 对系统资源的要求较低,在老旧设备或者资源有限的计算机上也能流畅运行。
  • 简单易用。它的界面简洁,操作逻辑清晰,对于初学者或者只是需要一个基本桌面环境来完成日常任务(如浏览网页、处理文档)的用户来说非常友好。
  • 稳定性高。XFCE 经过长期的发展,其稳定性得到了很好的验证,很少出现崩溃等问题。
  • 适用场景:适用于低配置设备,如老旧的笔记本电脑或者服务器的桌面管理。也适合那些不需要复杂功能,只希望有一个稳定、简单桌面环境的用户。
  1. LXQt/LXDE
  • 特点
  • 轻量级。这是其最显著的特点,它的设计目标是在资源有限的系统上提供基本的桌面功能。它的内存占用非常小,能够在低性能的硬件上快速启动和运行。
  • 快速高效。启动速度快,应用程序的响应时间也较短,为用户提供了高效的操作体验。
  • 简洁的界面。界面设计简洁明了,没有过多的装饰,专注于提供基本的桌面组件和功能。
  • 适用场景:主要用于嵌入式系统、小型设备(如树莓派)或者对性能要求极高的低配置计算机,如一些用于网络监控或简单数据采集的设备。

二、与 Gnome 桌面环境的对比

  1. 设计理念
  • Gnome 桌面环境注重简洁和易用性,采用了现代的设计风格,以简洁的界面和直观的操作方式为主要特点。例如,Gnome 的活动概览功能可以让用户方便地在多个工作区和应用程序之间切换。
  • 非 Gnome 桌面环境各有其设计重点。如 KDE Plasma 注重定制和功能丰富性,用户可以对桌面的每一个细节进行定制;XFCE 更偏向于简单和资源效率,提供基本的桌面功能而没有过多的复杂设计。
  1. 资源占用
  • Gnome 桌面环境在资源占用方面相对较高,特别是在较旧的硬件设备上可能会出现性能下降的情况。
  • 非 Gnome 桌面环境如 XFCE 和 LXQt/LXDE 则在资源占用上有优势,能够在较低配置的设备上良好运行。
  1. 功能和定制程度
  • Gnome 提供了一套相对固定的功能和操作方式,虽然也有一定的扩展性,但定制程度相对有限。
  • 非 Gnome 桌面环境的功能和定制程度差异较大。KDE Plasma 的定制功能非常强大,用户可以改变桌面的几乎所有方面;XFCE 的定制程度适中,提供了基本的定制选项来满足用户的日常需求;LXQt/LXDE 则主要提供基本的桌面功能定制。

如何来检测一下我们的服务器是否是非Gnome桌面环境,

在终端中输入 echo $XDG_CURRENT_DESKTOP ,如果输出不是 ubuntu:GNOME ,则不是 Gnome 桌面环境。例如输出为 ubuntu:XFCE ,就表明使用的是 XFCE 桌面环境.

这个就是官网整体的安装描述,我们直接执行安装:

第一步,更新apt库

执行
sudo apt-get update


我们可以看到显示了腾讯云的镜像,如果你们是阿里云应该会显示阿里。

第二步,执行安装

sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

中途会提示是否继续,输入Y即可,以上步骤官方的解释就是# Add Docker’s official GPG key: 添加gpgkey,下一步

第三步:# Add the repository to Apt sources 说是把库添加进apt 资源

执行

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

第四步:安装docker包

执行
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

第五步:检测是否安装成功

执行
sudo docker run hello-world

报错如下:

Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.

经过阅读,修改 文件
执行
vim /etc/docker/daemon.json
编辑这个文件

打开后 加入

{
“registry-mirrors”: [
https://mirror.ccs.tencentyun.com
]
}

保存输入:wq 退出

提示我不能修改这个文件 那就是没权限,执行
:q!
不保存修改退出,优雅草央千澈懒得跟他墨迹,直接登录服务器手改

再次执行
sudo docker run hello-world

完美,成功,在ubuntu上面安装了 docker,本文结束,下文主要介绍使用docker安装一个开源项目(个人认为非常有用的项目),

目录
相关文章
|
3天前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
140 91
|
4天前
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
1月前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
222 93
|
18天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
11天前
|
JavaScript 前端开发 Docker
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
70 44
|
4天前
|
网络协议 API Docker
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
36 23
|
3天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
83 15
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
58 23
|
22天前
|
SQL Java Maven
docker部署apollo
docker部署apollo步骤
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
49 22