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

Docker快速入门与应用

1. 什么是 Docker?

Docker 就像一个“魔法箱子”,可以把你开发的应用(代码、环境、配置)‌打包成一个标准化的容器‌,这个容器可以在任何支持 Docker 的系统上运行,无需担心环境差异导致的问题。

‌类比‌:想象你要搬家,把衣服、家具、电器全部装进标准尺寸的集装箱。无论用船、火车还是卡车运输,集装箱都能被统一处理。Docker 容器就是这个“集装箱”,你的应用是里面的物品,Docker 引擎是运输工具。

2. Docker 的核心概念

‌镜像(Image)‌:容器的“模板”,比如一个装好 Python 和代码的镜像。
‌容器(Container)‌:镜像运行时的实例(就像“启动一个程序”)。
‌仓库(Registry)‌:存储镜像的地方,比如 Docker Hub(类似手机的应用商店)。
如何在 Linux 上安装 Docker?

步骤 1:安装 Docker

以 ‌Ubuntu/Debian‌ 为例(其他系统类似):

1. 卸载旧版本(如有)

sudo apt remove docker docker-engine docker.io containerd runc

2. 安装依赖工具

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common

3. 添加 Docker 官方 GPG 密钥

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

4. 添加仓库

echo "deb [arch=$(dpkg --print-architecture) 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

5. 安装 Docker

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

6. 验证安装

sudo docker run hello-world

如果看到 Hello from Docker!,说明安装成功!

如何使用 Docker?

场景 1:运行一个 Nginx 容器

拉取镜像(从 Docker Hub)

docker pull nginx

运行容器(映射主机 8080 端口到容器的 80 端口)

docker run -d -p 8080:80 --name my-nginx nginx

访问 http://localhost:8080 即可看到 Nginx 欢迎页

场景 2:自定义镜像(Dockerfile)

1.创建一个 Dockerfile 文件:

# 使用 Python 官方镜像作为基础
FROM python:3.9
# 拷贝代码到容器
COPY app.py /app/
# 安装依赖
RUN pip install flask
# 设置启动命令
CMD ["python", "/app/app.py"]

2.构建镜像并运行:

docker build -t my-python-app .
docker run -d -p 5000:5000 my-python-app

场景 3:数据持久化(挂载目录)

将主机的 /data 目录挂载到容器的 /app/data

docker run -d -v /data:/app/data --name my-data-container nginx

常用命令速查

命令			作用
docker ps	查看运行中的容器
docker images	查看本地镜像
docker stop <容器名>	停止容器
docker rm <容器名>	删除容器
docker rmi <镜像名>	删除镜像

进阶工具:Docker Compose

用于管理多个容器(如同时运行 Web + 数据库):

1安装 Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2创建 docker-compose.yml 文件:

version: "3"
services:web:image: nginxports:- "8080:80"db:image: mysqlenvironment:MYSQL_ROOT_PASSWORD: 123456

启动服务:

docker-compose up -d

为什么用 Docker?
‌环境一致性‌:开发、测试、生产环境完全一致。
‌快速部署‌:秒级启动容器。
‌资源高效‌:多个容器共享系统内核,比虚拟机更轻量。

相关文章:

Docker快速入门与应用

1. 什么是 Docker&#xff1f; Docker 就像一个“魔法箱子”&#xff0c;可以把你开发的应用&#xff08;代码、环境、配置&#xff09;‌打包成一个标准化的容器‌&#xff0c;这个容器可以在任何支持 Docker 的系统上运行&#xff0c;无需担心环境差异导致的问题。 ‌类比‌…...

Spring Boot 启动原理的核心机制

一、核心启动流程概览 Spring Boot 的启动流程可概括为 ​7 个关键阶段​&#xff1a; 1. 加载启动类 (Main Class) 2. 初始化 SpringApplication 实例 3. 加载配置 & 准备环境 (Environment) 4. 创建 ApplicationContext&#xff08;容器&#xff09; 5. 刷新容器&#…...

spring中的@Lazy注解详解

一、核心功能与作用 Lazy 注解是 Spring 框架中用于延迟 Bean 初始化的核心工具&#xff0c;通过将 Bean 的创建推迟到首次使用时&#xff0c;优化资源利用和启动性能。其核心功能包括&#xff1a; 延迟初始化 默认情况下&#xff0c;Spring 在容器启动时立即初始化所有单例 …...

视觉-语言-动作模型:概念、进展、应用与挑战(上)

25年5月来自 Cornell 大学、香港科大和希腊 U Peloponnese 的论文“Vision-Language-Action Models: Concepts, Progress, Applications and Challenges”。 视觉-语言-动作 (VLA) 模型标志着人工智能的变革性进步&#xff0c;旨在将感知、自然语言理解和具体动作统一在一个计…...

语义分割模型部署到嵌入式终端的通用操作流程

以下是语义分割模型部署到嵌入式终端的通用操作流程&#xff0c;结合不同硬件平台&#xff08;如华为Atlas、地平线J5、树莓派等&#xff09;的共性需求整理而成&#xff1a; 一、环境准备与工具链配置 1. 嵌入式开发环境搭建 安装交叉编译工具链&#xff08;如ARM-GCC&…...

R1-Searcher:用强化学习解锁大语言模型检索新能力!

R1-Searcher&#xff1a;用强化学习解锁大语言模型检索新能力&#xff01; 大语言模型&#xff08;LLMs&#xff09;发展迅猛&#xff0c;却常因依赖内部知识而在复杂问题上“栽跟头”。今天解读的论文提出R1-Searcher框架&#xff0c;通过强化学习提升LLMs检索能力。它表现超…...

第一篇 世界观安全

目录 STRIDE模型 五大原则 一黑白名单 二最小权限原则 三纵深防御原则 四数据和代码分离 五不可预测原则 安全的问题本质是信任问题。 并且安全是一个持续的过程。 安全的三要素&#xff1a;机密性&#xff0c;完整性&#xff08;可以采用数字签名&#xff09;&#x…...

RNN(循环神经网络)原理与结构

1 RNN&#xff08;循环神经网络&#xff09;原理与结构 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一类专门用于处理序列数据&#xff08;如时间序列、文本、语音等&#xff09;的深度学习模型。与传统的前馈神经网络不同&#xff0c;RNN在每个时间…...

mac M2能安装的虚拟机和linux系统系统

目前网上的资料大多错误&#xff0c;能支持M2的很少。 推荐安装的改造过的centos7也无法进行yum操作&#xff0c;建议安装centos8 VMware Fusion下载地址&#xff1a; https://pan.baidu.com/s/14v3Dy83nuLr2xOy_qf0Jvw 提取码: jri4 centos8下载地址&#xff1a; https://…...

无偿帮写毕业论文

以下教程教你如何利用相关网站和AI免费帮你写一个毕业论文。毕竟毕业论文只要过就行&#xff0c;脱产学习这么多年&#xff0c;终于熬出头了&#xff0c;完成毕设后有空就去多看看亲人好友&#xff0c;祝好&#xff01; 一、找一个论文模板(最好是overleaf) 废话不多说&#…...

智能网联汽车“内外协同、虚实共生”的通信生态

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 钝感力的“钝”&#xff0c;不是木讷、迟钝&#xff0c;而是直面困境的韧劲和耐力&#xff0c;是面对外界…...

Linux操作系统从入门到实战(六)Linux开发工具(上)详细介绍什么是软件包管理器,Linux下如何进行软件和软件包的安装、升级与卸载

Linux操作系统从入门到实战&#xff08;六&#xff09;Linux开发工具&#xff08;上&#xff09;详细介绍什么是软件包管理器&#xff0c;Linux下如何进行软件和软件包的安装、升级与卸载 前言一、 软件包管理器1.1 传统安装方式的麻烦&#xff1a;从源代码说起1.2 软件包&…...

物流无人机自动化装卸技术解析!

一、自动化装卸技术模块的技术难点 1. 货物多样性适配 物流场景中货物包装类型、尺寸、材质差异大&#xff0c;如农产品、医疗物资、工业设备等&#xff0c;要求装卸模块具备高度柔性化设计。例如&#xff0c;单元货物需视觉识别系统进行单个抓取&#xff0c;而整托货物需大…...

基于构件的开发方法与传统开发方法的区别

在软件开发领域,基于构件的开发方法和传统开发方法有着截然不同的特点与应用效果,这些差异显著影响着项目的实施过程与最终成果。下面,我们将从多个关键维度展开对比分析。​ 一、开发模式:线性搭建与模块组装​ 传统开发方法遵循线性的、自顶向下的流程,就像搭建一座高楼…...

详解 IRC协议 及客户端工具 WeeChat 的使用

本文将详细介绍 Internet Relay Chat&#xff08;IRC&#xff09;协议及其历史、基本概念、核心功能&#xff0c;以及流行的 IRC 客户端 WeeChat 的安装、配置和使用方法。内容力求准确、详尽&#xff0c;涵盖 IRC 的技术背景、使用场景&#xff0c;以及 WeeChat 的高级功能和实…...

IOT藍牙探測 C2 架構:社會工程/節點分離防追尋

BMC 地址:https://github.com/MartinxMax/bmc/releases/tag/V1.5 藍牙 MAC 偵測節點的物聯網分散式 C2 架構&#xff0c;可與 S-Cluster 交互。 場景 A&#xff1a;潛伏偵測 駭客組織會將 BMC 裝置秘密部署在目標建築物周圍&#xff08;例如牆外、通風口或垃圾間等隱蔽地點&…...

Koa知识框架

一、核心概念 1. 基本特点 由 Express 原班人马开发的下一代 Node.js Web 框架 基于中间件的洋葱圈模型 轻量级核心&#xff08;仅约 600 行代码&#xff09; 完全使用 async/await 异步流程控制 没有内置任何中间件&#xff0c;高度可定制 2. 核心对象 Application (Ko…...

FreeRTOS学习记录(变量命名规则全解、文件介绍)

目录 FreeRTOS 变量命名规则详解​ ​一、变量命名前缀规则​ &#xff08;一&#xff09;数据类型相关前缀​ &#xff08;二&#xff09;功能模块相关前缀​ &#xff08;三&#xff09;宏定义 二、变量命名与文件的关系​ &#xff08;一&#xff09;核心源文件中的变…...

Qt 中 QWidget涉及的常用核心属性介绍

欢迎来到干货小仓库 一匹真正的好马&#xff0c;即使在鞭子的影子下&#xff0c;也能飞奔 1.enabled API说明isEnabled()获取到控件的可用状态setEnabled()设置控件是否可使用.true&#xff1a;可用&#xff0c;false&#xff1a;禁用 禁用&#xff1a;指该控件不能接收任何用…...

Open CASCADE学习|由大量Edge构建闭合Wire:有序与无序处理的完整解析

在CAD建模中,构建闭合的Wire(线框)是拓扑结构生成的基础操作。OpenCascade(OCCT)作为强大的几何建模库,支持从离散的Edge(边)构建Wire,但在实际应用中,边的有序性直接影响构建的成功率。本文将详细探讨有序与无序两种场景下的实现方法,并提供完整代码示例。 一、有序…...

linux 开发小技巧之git增加指令别名

众所周知&#xff0c;git的指令执行时都得敲好几个字符才能补充上来&#xff0c;比如常用的git status&#xff0c;是不是要将全部的字符一个个地在键盘敲上来&#xff0c;有没有更懒惰点办法&#xff0c;可以将经常用到的git命令通过其他的别名的方式填充&#xff0c;比如刚刚…...

一文读懂如何使用MCP创建服务器

如果你对MCP&#xff08;模型上下文协议&#xff09;一窍不通&#xff0c;在阅读本篇文章之前&#xff08;在获得对MCP深度认识之前&#xff09;&#xff0c;你可以理解为学习MCP就是在学习一个python工具库mcp&#xff0c;类似于其它python工具库一样&#xff0c;如numpy、sys…...

Python Day23 学习

继续SHAP图绘制的学习 1. SHAP特征重要性条形图 特征重要性条形图&#xff08;Feature Importance Bar Plot&#xff09;是 SHAP 提供的一种全局解释工具&#xff0c;用于展示模型中各个特征对预测结果的重要性。以下是详细解释&#xff1a; 图的含义 - 横轴&#xff1a;表示…...

VS Code 重磅更新:全新 MCP 服务器发现中心上线

目前各种 MCP 客户端层出不穷&#xff0c;但是安装 MCP 服务却格外繁琐&#xff0c;尤其 VS Code 中无界面化的 MCP 服务配置方式&#xff0c;效率较低。 Copilot MCP 是一个 VS Code 插件&#xff0c;在今天发布的新版本中&#xff0c;插件支持了自动发现与安装开源 MCP 服务…...

Ubuntu 服务器管理命令笔记

这份命令笔记涵盖了 Ubuntu 服务器管理的各个方面&#xff0c;包括系统更新、用户管理、安全配置、网络诊断等&#xff0c;适合日常使用与技术分享。 系统管理命令 sudo apt update && sudo apt upgrade -y # 更新系统 sudo reboot …...

web 自动化之 Unittest 四大组件

文章目录 一、如何开展自动化测试1、项目需求分析&#xff0c;了解业务需求 web 功能纳入自动化测试2、选择何种方式实现自动化测试 二、Unittest 框架三、TestCase 测试用例四、TestFixture 测试夹具 执行测试用例前的前置操作及后置操作五、TestSuite 测试套件 & TestLoa…...

一、网络基础

IPv4&#xff1a;32位二进制 -- 点分十进制标识 192.168.1.1&#xff08;连续的32位&#xff0c;为了好看方便每8位一段&#xff09; IPv6&#xff1a;128位二进制 IP&#xff08;Internet协议&#xff09; 洪泛&#xff1a;除流量进入接口外的所有接口的复制 OSI模型&#…...

基于HTML+JavaScript+CSS实现教学网站

摘要 21世纪是信息化的时代&#xff0c;信息化物品不断地涌入我们的生活。同时&#xff0c;教育行业也产生了重大变革。传统的身心教授的模式&#xff0c;正在被替代。互联网模式的教育开辟了一片新的热土。 这算是对教育行业的一次重大挑战。截至目前&#xff0c;众多教育行…...

告别卡顿,图片查看界的“速度与激情”

嘿&#xff0c;小伙伴们&#xff01;今天电脑天空给大家介绍一款超好用的图片查看神器——ImageGlass&#xff01;这可不是普通的图片查看软件哦&#xff0c;它简直就是图片界的“全能王”。首先&#xff0c;它能打开的图片格式多到让你眼花缭乱&#xff0c;什么PNG、JPEG、GIF…...

基于STM32、HAL库的RN8209C电能计量芯片驱动程序设计

一、简介: RN8209C是一款高精度电能计量芯片,主要应用于单相电能表、智能插座、电力监控等领域。它具有以下特点: 支持全差分输入,可测量电压、电流、有功功率、无功功率、视在功率、功率因数等参数 内置24位Σ-Δ ADC,提供高精度测量 支持SPI和UART通信接口 内置温度传感…...