当前位置: 首页 > news >正文

快速上手 Docker:从入门到安装的简易指南(Mac、Windows、Ubuntu)

PS:笔者在五一刚回来一直搞Docker部署AI项目,发现从开发环境迁移到生成环境时,Docker非常好用。但真的有一定上手难度,推荐读者多自己尝试踩踩坑。
本篇幅有限,使用与修改另起篇幅。

一、Docker是什么

#1. Docker是什么?

Docker是一个开源软件(平台),通过容器技术能够自动化应用程序的部署、扩展和管理

其中,容器Container是一种轻量级、便携且自给自足的软件打包格式,它包含了运行软件所需的一切(栗如运行环境、配置文件、代码等)。

这里笔者直接进入一个Docker容器,让读者快速感受一下。如下图所示:
在这里插入图片描述
如上图所示,笔者通过docker exec命令进入了一个容器,并进入根目录/打印所有目录。我们可以看到,就是一个Linux目录嘛,不过容器和虚拟机有点不同,下面的#2.会讲到。


#2. 了解一些Docker的关键概念

1️⃣镜像 (Image):
  • Docker镜像是一个只读的模板,用于创建 Docker 容器。它包含运行应用程序所需的所有信息和依赖项。镜像可以从公共存储库中获取,可以自己进行构建。
2️⃣容器 (Container):
  • 容器是镜像的一个可执行实例。它们是隔离的进程,可以在同一主机上并行运行多个容器。容器与传统虚拟机不同,因为它们共享操作系统的内核,而不是每个容器都运行一个完整的操作系统实例,所以更省资源。
3️⃣文件Dockerfile
  • 是一个文本文件,包含了一系列命令,用于自动化地构建 Docker 镜像。这些命令定义了镜像的基础、要安装的软件、环境变量设置,以及启动容器时需要执行的指令。
4️⃣公共资源库Docker Hub
  • Docker Hub 是一个云端的镜像存储库服务,允许用户发布、存储和下载 Docker 镜像。官方网址是:https://hub.docker.com/。
5️⃣编排工具(咳咳,笔者还没有用过,想着开始自己手敲了解一下后面再借助工具):
  • Docker Swarm 和 Kubernetes 等工具可用于容器的编排和管理。这些工具提供了自动化部署、负载均衡、扩展以及故障恢复等功能。

#3. 为什么要用Docker(这里仅讲到笔者的使用感受)

1️⃣部署方便

开发人员可以使用 Dockerfile 定义开发环境,一行代码生成运行环境,拿到生产环境开包即用。

2️⃣节约资源

相较于虚拟机,Docker共享主机操作系统的内核,因此更节省资源。

3️⃣具有备份与回滚功能

每个 Docker 镜像都有其特定版本,可以随时回滚或更新。



二、Mac&Windows以图形化界面安装Docker

安装程序下载地址:https://www.docker.com/products/docker-desktop/

Mac安装后的界面如下图所示:
在这里插入图片描述



三、Ubuntu以命令行安装Docker

Docker镜像搜索:https://hub.docker.com/

#1. 安装依赖

# (可选)删除默认的旧版本docker
sudo apt-get remove docker docker-engine docker.io containerd runc# 安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release apt-transport-https software-properties-common

#2. 添加“官方密钥”与“国内软件源”

# 添加官方GPG密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -# 添加Docker软件源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

#3. 安装Docker

# 安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io# 将用户添加到docker组
sudo usermod -aG docker $USER# 查看版本验证安装
docker version

出现以下界面即安装成功:
在这里插入图片描述



四、Ubuntu下配置国内镜像

#1. 配置国内镜像源

sudo vim /etc/docker/daemon.json# daemon.json
{"registry-mirrors":[ "https://docker.m.daocloud.io", "https://docker.imgdb.de", "https://docker-0.unsee.tech", "https://docker.hlmirror.com", "https://docker.1ms.run", "https://func.ink", "https://lispy.org", "https://docker.xiaogenban1993.com" ]
}# 重新启动
sudo systemctl daemon-reload && sudo systemctl restart docker# 查看镜像生效
docker info

#2. 连接错误的处理

但有时国内镜像更新不及时,比如这种报错:
ERROR: failed to solve: node:lts-alpine: failed to do request: Head "https://registry.docker-cn.com/v2/library/node/manifests/lts-alpine?ns=docker.io": net/http: TLS handshake timeout

解析报错:其中registry.docker-cn.com就是国内的镜像站。这时候有两个选择:

  1. 继续上网找镜像站,然后尝试(笔者最后采用的是该方法)

  2. 走代理(但笔者挂代理也请求不到资源,最后也没时间确认原因)


#3. 拉取「测试镜像hello-world」来测试一下(假设你已经解决了连接错误的问题):

sudo docker run hello-world		# 该命令先寻找本地的镜像,然后去镜像源寻找。找到后构建。

出现以下信息即成功:
在这里插入图片描述

如果这篇文章对您有些许帮助,请帮忙点个赞👍或收个藏📃。您的支持是我继续创作的动力💪!


不要害怕,不要着急。保持每日的前进☀️与积极的内心❤️,命运总在曲折中馈赠最好的礼物。

相关文章:

  • 【java】使用iText实现pdf文件增加水印功能
  • Postman最佳平替, API测试工具Bruno实用教程(一):基础篇
  • 广告屏蔽插件的内部细节EasyList 规则详解:为什么广告屏蔽不直接用 CSS/JS?​(彩蛋)
  • Flink + Kafka 数据血缘追踪与审计机制实战
  • 开发搭载阿里云平台的物联网APP(支持数据接收与发送)
  • 日常开发中,iOS 性能调优我们怎么做?
  • SQL Server To Paimon Demo by Flink standalone cluster mode
  • 多线服务器具有什么优势
  • 【Science Advances】普林斯顿大学利用非相干光打造可重构纳米光子神经网络
  • Easy云盘总结篇-文件分享
  • vue3的新特性
  • Frida使用java.lang.reflect.Array类打印Java反射数组
  • Mkdocs页面如何嵌入PDF
  • 【Prometheus】业务指标与基础指标的标签来源差异及设计解析(扩展版)
  • 【Prometheus】深入解析 Prometheus 特殊标签 `__param_<name>`:动态抓取参数的艺术
  • var、let、const的区别
  • WPF MVVM入门系列教程(六、ViewModel案例演示)
  • 华为设备链路聚合实验:网络工程实战指南
  • Notepad++中XML格式化插件介绍
  • GPT与LLaMA:两大语言模型架构的深度解析与对比
  • 韩国执政党总统候选人更换方案被否决,金文洙候选人资格即刻恢复
  • 构建菌株有效降解有机污染物,上海交大科研成果登上《自然》
  • 习近平出席俄罗斯纪念苏联伟大卫国战争胜利80周年庆典
  • 浙江一民企拍地后遭政府两次违约,“民告官”三年又提起民事诉讼
  • 援藏博士张兴堂已任西藏农牧学院党委书记、副校长
  • 深圳下调公积金利率,209万纯公积金贷款总利息减少9.94万