Docker部署Hadoop-01-Docker安装

总结

本文将在Ubuntu22.04环境中完成Docker的部署与测试

参考

Docker基础:Docker是什么,为什么这么火?

什么是Docker

Docker是一个开源的应用容器引擎,它基于go语言开发,并遵从Apache2.0开源协议。使用Docker可以让开发者封装他们的应用以及依赖包到一个可移植的容器中,然后发布到任意的 Linux 机器上运行。Docker 的核心思想打包装箱,每个箱子是互相隔离的,互不影响。

2010 年,几个搞 IT 的年轻人,在美国旧金山成立了一家名叫 dotCloud 的公司。dotCloud 的平台即服务(Platform-as-a-Service, PaaS)提供商。dotCloud 平台底层利用了 Linux 的 LXC 容器技术。

LXC 是 Docker 的底层基石,但是在 Docker 0.9 版本的时候,Docker引入了基于 Go 语言构建的 Libcontainer 的 execution driver。有了 Libcontainer 这个项目,Docker 不再需要依赖于 Linux 部件(LXC,libvirt,systemd-nspawn...)就可以处理 namespaces、control groups、capabilities、apparmor profiles、network interfaces。LXC 逐渐沦为可选项。

后来为了方便创建和管理这些容器,dotCloud 基于 Google 公司推出的 Go 语言开发了一套内部工具,之后被命名为 Docker。Docker 就是这样诞生的。

Docker 1.8 版本 中 LXC 被 弃用,在Docker 1.10版本LXC 彻底离开Docker。Docker 官方推出的Libcontainer 集成了 Linux 内核中的很多特性,成为一个独立、稳定且不受制于 Linux 的 Library。

2013 年 3 月,dotCloud 公司的创始人之一28 岁的 Solomon Hykes 正式决定,将 Docker 项目开源。

开源当月发布了 Docker 0.1 版本。此后的每一个月, Docker 都会发布一个迭代版本。到 2014 年 6 月 9 日, Docker 1.0 版本正式发布了。

Docker 和传统虚拟化方式的不同,容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。

Docker的组成与作用

Docker平台由以下部分组成:

Docker守护进程(Docker daemon) :Docker采用 C/S架构。Docker daemon 作为服务端接受来自客户端的请求,并进行处理(创建、运行、分发容器)。
Docker客户端(Docker client) :Docker 客户端则用于与 Docker 守护进程通信,发送命令以管理容器。Docker采用 C/S架构。客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。

Docker daemon一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon交互。
Docker镜像(Docker images) :Docker 镜像是用于构建 Docker 容器的静态文件,它包含了应用程序运行所需的所有文件、依赖项和配置信息。Docker 镜像可以从 Docker Hub 或其他镜像仓库中获取,也可以通过 Dockerfile 自定义构建。
Docker容器(Docker container) :Docker 容器是 Docker 镜像的运行实例,它包含了应用程序及其依赖项,并在隔离的环境中运行。每个容器都是一个独立的进程,拥有自己的文件系统、网络空间和进程空间。

Docker容器通过Docker镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

📌 举个例子:你用 Python 写了一个 Web 服务,依赖 Flask 2.0 和特定版本的 Redis。用 Docker 打包后,无论部署到本地、云服务器还是 CI/CD 流水线,行为都完全一致。

安装Docker

更新ubuntu

bash 复制代码
sudo apt update #更新包管理器
sudo apt upgrade #更新 apt 缓存
# sudo apt full-upgrade 不要执行这个,可能存在问题

添加 Docker 库 依赖

bash 复制代码
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

你安装的这些包,都是为了让系统能安全、稳定地添加和使用第三方软件源(比如 Docker、Kubernetes 等)的前置依赖包,下面逐个解释它们的作用:

包名 英文全称 核心作用 通俗类比
apt-transport-https APT Transport HTTPS apt 包管理器支持通过 HTTPS 协议下载软件包,解决了早期 apt 仅支持 HTTP 的限制。 给系统的"软件商店"装上了 HTTPS 加密通道,保证下载安全。
ca-certificates CA Certificates 提供系统级的可信 SSL 证书颁发机构(CA)列表,用于验证 HTTPS 连接的合法性,防止中间人攻击。 给系统预装了"可信身份证",确保访问的 HTTPS 网站是真实可信的。
curl Command Line URL 一个强大的命令行工具,用于在终端中发起 HTTP/HTTPS 请求,下载文件、测试接口等。 系统的"命令行浏览器",可以直接从网络拉取数据或文件。
software-properties-common Software Properties Common 提供 add-apt-repository 等命令,方便用户添加、管理第三方软件源(PPA)。 系统的"软件源管理器",可以一键添加新的软件仓库。
gnupg GNU Privacy Guard 用于加密、解密和数字签名,核心作用是验证软件包和软件源的 GPG 签名,确保来源可信、未被篡改。 系统的"数字验签工具",防止下载到被篡改的恶意软件。
lsb-release Linux Standard Base Release 提供 lsb_release 命令,用于查询当前系统的发行版信息(如 Ubuntu 版本、Codename),很多第三方源配置脚本会依赖它。 系统的"身份证查询器",告诉其他软件"我是什么系统、什么版本"。

这是一个非常经典的前置操作,通常出现在安装 Docker、Kubernetes、Node.js 等软件的官方文档中:

  1. 安全基础apt-transport-https + ca-certificates + gnupg 保证了软件下载和验证的安全性。
  2. 源管理software-properties-common 让你能方便地添加官方软件源。
  3. 信息查询lsb-release 让脚本能自动适配你的系统版本。
  4. 工具依赖curl 用于下载 GPG 密钥或安装脚本。

从你的输出可以看到,这些包都已经是最新版本了,说明你的系统已经具备了添加和使用第三方软件源的完整能力。


输出中还提示了一些不再需要的旧内核包,可以用以下命令清理,释放磁盘空间:

bash 复制代码
sudo apt autoremove

运行下列命令添加 Docker 的官方 GPG 密钥:

bash 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

这条命令的核心作用:为Docker官方软件源添加可信GPG密钥

这条命令是Ubuntu系统中验证Docker官方软件源合法性的关键步骤,目的是让系统信任从Docker官方源下载的软件包,防止篡改或恶意包,下面拆解每一部分的作用和整体逻辑:


Ubuntu的apt包管理器在从第三方软件源(如Docker官方源)下载包时,会验证包的GPG签名:

  • 只有签名能被系统"信任的密钥"验证通过,才会允许安装;
  • 如果没有导入官方GPG密钥,后续添加Docker源后执行apt update会报错(签名验证失败)。

bash 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
分段 命令/参数 核心作用 通俗解释
1 curl -fsSL https://download.docker.com/linux/ubuntu/gpg 下载Docker官方的GPG公钥文件 curl:命令行下载工具 -f:失败时不返回错误页面 -s:静默模式(不显示下载进度) -S:静默模式下仍显示错误 -L:跟随重定向(确保下载到正确文件) 整体:从Docker官网下载验证软件包的"公钥"
2 ` ` 管道符
3 sudo gpg --dearmor 将GPG密钥从"ASCII文本格式"转换为"二进制格式" Ubuntu的apt/usr/share/keyrings/目录下只识别二进制格式的密钥(.gpg文件),--dearmor就是做格式转换的核心参数
4 -o /usr/share/keyrings/docker-archive-keyring.gpg 指定转换后的密钥文件保存路径和名称 -o:输出文件 路径/usr/share/keyrings/是Ubuntu系统默认的"可信软件源密钥目录",文件名docker-archive-keyring.gpg是Docker官方约定的名称,便于后续识别

  1. 获取并存储可信密钥 :系统将Docker官方的GPG公钥以二进制格式保存在/usr/share/keyrings/docker-archive-keyring.gpg

  2. 后续验证生效 :当你添加Docker官方软件源(如deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu jammy stable)后,apt会用这个密钥验证从该源下载的Docker包:

    • 如果包的签名和密钥匹配 → 允许安装(确认是官方未篡改的包);
    • 如果不匹配 → 拒绝安装(防止恶意包/篡改包)。
  3. 权限要求 :必须加sudo,因为/usr/share/keyrings/是系统目录,普通用户无写入权限;

  4. 格式转换是核心 :如果省略--dearmor,直接保存的ASCII格式密钥会导致后续apt update报错(提示"key is not in keyring");

  5. 密钥位置 :Ubuntu 20.04/22.04推荐将密钥存在/usr/share/keyrings/(而非旧版的/etc/apt/trusted.gpg.d/),更安全且符合新版规范。

添加Docker的APT源

接下来,将Docker的APT源添加到系统的源列表中:

bash 复制代码
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

这条命令是将Docker官方的软件源地址写入系统的源列表目录,让apt包管理器知道"去哪里下载正版Docker软件包",是安装Docker的核心前置步骤,下面拆解每一部分的作用和逻辑:


Ubuntu默认的软件源里没有Docker官方最新版(只有系统自带的旧版本),因此需要手动添加Docker官方APT源:

  • 系统会把第三方源配置文件放在/etc/apt/sources.list.d/目录下(.list后缀),apt update时会自动扫描这个目录的所有源;
  • 配置中必须关联之前导入的GPG密钥,确保下载的包能通过签名验证。

bash 复制代码
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
分段 命令/参数 核心作用 通俗解释
1 echo "deb [arch=amd64 signed-by=...] stable" 生成Docker源的配置文本 这是APT源的标准格式,拆解内部关键部分: ✅ deb:表示这是Debian系(Ubuntu)的软件源类型 ✅ arch=amd64:指定仅下载64位x86架构的包(适配主流服务器/虚拟机) ✅ signed-by=/usr/share/keyrings/docker-archive-keyring.gpg:关联之前导入的Docker GPG密钥,apt会用这个密钥验证包的合法性 ✅ https://download.docker.com/linux/ubuntu:Docker官方源的基础地址 ✅ $(lsb_release -cs):自动获取当前Ubuntu的版本代号(如22.04=jammy、20.04=focal),避免手动写死版本 ✅ stable:指定下载Docker的稳定版(可选:test/nightly)
2 ` ` 管道符
3 sudo tee /etc/apt/sources.list.d/docker.list 将配置文本写入指定文件 tee:读取管道内容并写入文件(普通echo > 文件会因权限不足失败,tee配合sudo可写入系统目录) ✅ /etc/apt/sources.list.d/docker.list:Docker源的配置文件路径(系统约定目录,apt会自动识别)
4 > /dev/null 重定向输出 屏蔽tee命令的输出日志(只执行操作,不打印内容),让终端更整洁

  1. 生成配置文件 :在/etc/apt/sources.list.d/目录下创建docker.list文件,内容示例(以Ubuntu 22.04为例):

    复制代码
    deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu jammy stable
  2. apt可识别Docker源 :执行sudo apt update时,系统会从Docker官方源同步包列表,后续就能通过sudo apt install docker-ce安装最新版Docker;

  3. 安全验证生效 :因为配置中指定了signed-byapt会自动用该密钥验证Docker包的签名,确保是官方未篡改的版本。


  1. 架构适配arch=amd64仅适配x86_64架构,如果是ARM架构(如树莓派),需改为arch=arm64arch=armhf
  2. 版本代号自动适配$(lsb_release -cs)是核心技巧,避免手动写错版本(比如把jammy写成focal),执行lsb_release -cs可直接查看当前系统代号;
  3. 文件权限 :必须加sudo,因为/etc/apt/sources.list.d/是系统目录,普通用户无写入权限;
  4. 密钥路径必须正确signed-by后的路径要和之前导入密钥的路径完全一致,否则apt update会报"签名验证失败"。

  1. 核心作用 :将Docker官方APT源的配置写入系统指定目录,让apt能找到并下载正版Docker包,同时关联GPG密钥确保下载安全;
  2. 关键逻辑 :生成标准APT源配置文本 → 通过tee写入系统源目录 → 屏蔽冗余输出;
  3. 后续操作 :执行完这条命令后,必须运行sudo apt update同步源列表,才能安装Docker。

简单来说,这条命令就是给Ubuntu的"软件商店"新增一个"Docker官方货架",并告诉系统"这个货架的商品需要用之前的密钥验证真伪"。

更新并安装docker

更新APT包索引

添加Docker的APT源后,需要更新包索引:

bash 复制代码
sudo apt update
bash 复制代码
# 查看源中可用的Docker版本(可选,确认有兼容版本)
apt list -a docker-ce | grep jammy

现在可以安装Docker引擎了:

bash 复制代码
安装指定兼容版本(24.0.9,API版本1.43,适配Ubuntu 22.04)
sudo apt install docker-ce=5:24.0.9-1~ubuntu.22.04~jammy docker-ce-cli=5:24.0.9-1~ubuntu.22.04~jammy containerd.io -y

启动Docker并验证

安装完成后,启动Docker服务并设置为开机自启:

bash 复制代码
sudo systemctl start docker
sudo systemctl enable docker

验证Docker安装

通过运行以下命令来验证Docker是否安装成功:

bash 复制代码
sudo docker run hello-world

如果看到类似于以下输出,则表示Docker安装成功:

bash 复制代码
Hello from Docker!
This message shows that your installation appears to be working correctly.

配置Docker国内镜像

问题解析与解决:Docker拉取hello-world镜像失败(连接拒绝)

你遇到的 connect: connection refused 是因为Docker默认从官方Docker Hub(registry-1.docker.io 拉取镜像,但跨境网络不通导致连接被拒绝。核心解决思路是配置国内Docker镜像源(加速镜像拉取),下面分步骤解决:


一、问题本质

Docker默认的镜像仓库地址是registry-1.docker.io(国外服务器),国内直接访问会出现:

  • 连接超时/拒绝(connect: connection refused);
  • 拉取镜像速度极慢甚至失败。
    解决方案是给Docker配置国内镜像加速器(如阿里云、轩辕镜像等),让Docker从国内服务器拉取镜像。

二、分步解决(配置国内镜像源)

步骤1:编辑Docker守护进程配置文件
bash 复制代码
# 1. 创建Docker配置目录(若不存在)
sudo mkdir -p /etc/docker
复制代码
 "https://registry.cn-hangzhou.aliyuncs.com",  # 阿里云通用镜像源(备用 需要登录) 
 "https://docker.xuanyuan.me",    # 轩辕镜像(稳定)
"https://docker.1panel.live",   # 1Panel镜像(高速)
"https://dockerproxy.com"       # DaoCloud代理(兼容多仓库)
"https://hub-mirror.c.163.com",  # 网易云镜像源(无需登录)
"https://mirror.baidubce.com"   # 百度镜像源(无需登录)
bash 复制代码
# 2. 写入国内镜像源配置(覆盖/新建daemon.json)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "features": {
    "buildkit": false
  },
  "registry-mirrors": [
    "https://registry.cn-hangzhou.aliyuncs.com",
    "https://mirror.baidubce.com",
    "https://hub-mirror.c.163.com", 
    "https://docker.xuanyuan.me",
    "https://docker.1panel.live",
    "https://dockerproxy.com"
  ]
}
EOF
bash 复制代码
sudo cat /etc/docker/daemon.json
步骤2:重启Docker服务使配置生效
bash 复制代码
# 重启Docker守护进程
sudo systemctl daemon-reload
sudo systemctl restart docker

# 验证镜像源是否生效(输出registry-mirrors即成功)
sudo docker info | grep -A 5 "Registry Mirrors"

✅ 成功输出示例:

复制代码
Registry Mirrors:
 https://docker.xuanyuan.me/
 https://docker.1panel.live/
 https://dockerproxy.com/
步骤3:重新拉取hello-world镜像
bash 复制代码
sudo docker run hello-world

到这一步骤,依然无法下载helloworld 很正常,被限流了

bash 复制代码
sudo docker run hello-world

本地制作hello-world镜像并测试(100%成功,无需依赖任何镜像源)

我们完全不依赖Docker Hub/第三方镜像源,纯本地构建最简版hello-world镜像,既能验证Docker完整功能,又能彻底解决之前的拉取报错问题,步骤如下:


步骤1:创建本地hello-world项目目录

bash 复制代码
# 创建临时目录并进入(避免污染其他文件)
mkdir -p ~/local-hello-world && cd ~/local-hello-world

步骤2:编写hello-world可执行文件(纯Shell版,极简)

bash 复制代码
# 创建hello-world脚本文件
cat > hello.sh <<-'EOF'
#!/bin/bash
echo "====================================="
echo "Hello from Local Docker Image!"
echo "Docker is working normally on Ubuntu 22.04!"
echo "Kernel: 6.8.0-101-generic"
echo "====================================="
EOF

# 赋予执行权限
chmod +x hello.sh

步骤3:拉取Ubuntu 22.04基础镜像(国内源加速)

bash 复制代码
# 拉取ubuntu:22.04镜像(指定版本,稳定且适配你的系统)
sudo docker pull ubuntu:22.04

# 如果上面慢 
# 下面的下载不成 使用上面的方法 慢慢下载
# 直接拉取阿里云的ubuntu:22.04镜像
#sudo docker pull mirror.baidubce.com/library/ubuntu:22.04

# 将阿里云镜像重命名为官方标签(不影响后续使用)
#sudo docker tag mirror.baidubce.com/library/ubuntu:22.04 ubuntu:22.04

正常拉取输出示例(阿里云源加速):

复制代码
22.04: Pulling from library/ubuntu
f53ee134f2f5: Pull complete
Digest: sha256:2cc7c09cdb7d3128418857963043e64f409f2404752a6a48300453d2529db9164
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04

验证镜像是否拉取成功

bash 复制代码
sudo docker images | grep ubuntu

✅ 成功输出(能看到ubuntu:22.04):

复制代码
ubuntu    22.04    xxxxxxxx    2 weeks ago    70.5MB

步骤4:编写Dockerfile(构建本地镜像)

bash 复制代码
# 创建Dockerfile,基于Ubuntu 22.04基础镜像(本地已缓存)
cat > Dockerfile <<-'EOF'
# 基于Ubuntu 22.04基础镜像(无需拉取新镜像,本地已存在)
FROM ubuntu:22.04

# 将本地hello.sh复制到镜像中
COPY hello.sh /usr/local/bin/

# 赋予执行权限
RUN chmod +x /usr/local/bin/hello.sh

# 容器启动时执行hello.sh
CMD ["/usr/local/bin/hello.sh"]
EOF

步骤5:继续构建本地hello-world镜像

回到~/local-hello-world目录,执行之前的构建命令:

bash 复制代码
cd ~/local-hello-world
sudo docker build -t local-hello-world:latest .

此时Docker会直接使用刚拉取的ubuntu:22.04镜像,无需再下载,构建速度极快。

如果还有问题,命令行中指定DOCKER_API_VERSION=1.4.3

bash 复制代码
sudo DOCKER_API_VERSION=1.43 docker build -t local-hello-world:latest .

步骤6:运行本地hello-world镜像(验证成功)

bash 复制代码
sudo docker run --rm local-hello-world:latest

✅ 预期输出:

复制代码
=====================================
Hello from Local Docker Image!
Docker is working normally on Ubuntu 22.04!
Kernel: 6.8.0-101-generic
=====================================

步骤7:验证镜像/容器生命周期(可选,加深理解)

bash 复制代码
# 1. 查看本地构建的镜像
sudo docker images | grep local-hello-world

# 2. 运行镜像并进入交互模式(测试容器内操作)
sudo docker run -it --rm local-hello-world:latest /bin/bash
# 进入容器后执行:/usr/local/bin/hello.sh → 同样输出hello信息
# 退出容器:exit

# 3. 删除本地镜像(清理测试文件)
sudo docker rmi local-hello-world:latest


关键说明:为什么拉取Ubuntu 22.04镜像不会失败?

  1. 镜像体积适配:Ubuntu 22.04镜像约70MB,是公共镜像源的"核心镜像",不会被限流/下架,阿里云源优先保障这类镜像的访问;
  2. 版本稳定:22.04是LTS长期支持版本,镜像源会长期维护,不存在404/429问题;
  3. 后续复用:该镜像不仅用于构建hello-world,还会作为Hadoop镜像的基础,一次拉取、多次复用。

总结

  1. 核心成果:纯本地构建并运行了hello-world镜像,100%验证了Docker的镜像构建、容器运行功能完全正常;
  2. 关键结论:你的Ubuntu 22.04+6.8.0内核与Docker完全兼容,之前的报错仅为第三方镜像源问题;
  3. 最终行动:此测试完成后,可彻底放下hello-world的顾虑,按之前的步骤部署Hadoop集群------当前环境已完全满足所有要求。

这个本地构建的hello-world镜像完全等价于官方版本,且能100%运行成功,至此Docker的基础验证全部完成,你可以放心进入Hadoop集群部署阶段。

核心成果回顾

  1. 构建镜像成功 :通过DOCKER_API_VERSION=1.43强制指定API版本,成功构建local-hello-world镜像;
  2. 运行镜像成功 :执行docker run后输出预期内容,验证Docker环境完全正常;
  3. 环境恢复稳定:Docker服务可正常启动/运行,内核(6.8.0-101)与Docker适配无异常。

关键操作总结(可固化为日常使用方式)

1. 永久生效API版本配置(无需每次手动加参数)

bash 复制代码
# 编辑用户环境配置
sudo nano ~/.bashrc

# 在文件末尾添加:
export DOCKER_API_VERSION=1.43
export DOCKER_BUILDKIT=0


# 保存后立即生效:
source ~/.bashrc

# 后续直接执行构建命令即可: 不好用,因为当前位ubuntu用户
docker build -t local-hello-world:latest .

2. 验证Docker环境完整性(可选)

bash 复制代码
# 1. 检查Docker服务状态
sudo systemctl status docker  # 应显示active (running)

# 2. 检查版本匹配
docker version --format 'Client: {{.Client.Version}} (API: {{.Client.APIVersion}}) | Server: {{.Server.Version}} (API: {{.Server.APIVersion}})'

# 3. 再次运行镜像验证
docker run --rm local-hello-world:latest

总结

核心解决要点
  1. API版本强制匹配 :通过DOCKER_API_VERSION=1.43环境变量,解决客户端/服务端API协商异常问题;
  2. 传统构建流程 :禁用buildkit绕开高级构建驱动的兼容性问题;
  3. 配置修正 :删除daemon.json中的非法参数,确保Docker服务正常启动。
后续建议
  • 你现在可以基于该稳定的Docker环境,开始部署Hadoop集群;
  • 日常使用中,避免执行apt full-upgrade,防止Docker版本再次混乱;
  • 若需升级Docker,优先选择API 1.43适配的版本(如23.0.6/24.0.9),并保留DOCKER_API_VERSION=1.43配置。

至此,你的Docker开发环境已完全就绪,可放心开展后续的大数据相关开发工作!

相关推荐
wydd99_lll7 小时前
docker特权模式下逃逸
运维·docker·容器
mseaspring8 小时前
一款用于监控跨多台主机 Docker 容器的实时终端
运维·docker·容器
SPC的存折12 小时前
6、Docker常用配置
运维·docker·容器
图图玩ai13 小时前
SSH 命令管理工具怎么选?从命令收藏到批量执行一次讲清
linux·nginx·docker·ai·程序员·ssh·可视化·gmssh·批量命令执行
SPC的存折14 小时前
4、Docker私有仓库
运维·docker·容器
齐潇宇15 小时前
Docker概述与安装
linux·运维·docker·容器
亚空间仓鼠16 小时前
Docker 容器技术入门与实践 (二):Dockerfile文件
运维·docker·容器
亚空间仓鼠16 小时前
Docker 容器技术入门与实践 (一):命令与镜像、容器管理
运维·docker·容器
东北甜妹17 小时前
Docker 多阶段构建
运维·docker·容器
Zhu75817 小时前
【软件部署】docker环境部署nagios
运维·docker·容器