【KWDB 创作者计划】_上位机知识篇---Docker容器


文章目录

  • 前言
  • 1. Docker 容器是什么?
    • 隔离性
    • 轻量级
    • 可移植性
    • 可复用性
  • 2. Docker 核心概念
    • 镜像
    • 容器
    • 仓库
    • Dockerfile
  • 3. Docker 基本使用
    • (1) 安装 Docker
    • (2) 容器生命周期管理
    • (3) 镜像管理
    • (4) 进入容器内部
    • (5) 数据持久化(挂载卷)
    • (6) 网络管理
  • 4. Dockerfile 示例
  • 5. Docker 典型使用场景
    • 快速部署应用
    • 微服务架构
    • CI/CD流水线
    • 开发环境隔离
  • 6. 常见问题
    • 权限问题
    • 清理资源
    • 查看日志
  • 总结


前言

本文简单介绍了Docker容器的概念以及使用。


1. Docker 容器是什么?

Docker 容器是一种轻量级、可移植的虚拟化技术,允许开发者将应用程序及其依赖环境打包成一个独立的运行单元。容器基于 Docker 镜像运行,具有以下特点:

隔离性

隔离性:每个容器运行在独立的用户空间,互不干扰(基于 Linux 的 cgroups 和 namespaces)。

轻量级

轻量级:与虚拟机(VM)相比,容器共享主机 OS 内核,无需额外运行完整的操作系统,启动更快、占用资源更少。

可移植性

可移植性:容器可以在任何支持 Docker 的环境中运行(开发、测试、生产环境一致)。

可复用性

可复用性:容器镜像可以存储在仓库(如 Docker Hub)中,供他人下载使用

2. Docker 核心概念

镜像

镜像(Image) 只读模板,包含运行容器所需的代码、库、环境变量等(如 ubuntu:20.04)。

容器

容器(Container) 镜像的运行实例,具有可写层(存储运行时数据)。

仓库

仓库(Registry) 存储镜像的服务,如 Docker Hub(公共仓库)或私有仓库(如 Harbor)。

Dockerfile

Dockerfile 文本文件,定义如何构建镜像(通过 docker build 命令)。

3. Docker 基本使用

(1) 安装 Docker

Linux(Ubuntu):
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
Windows/macOS:下载 Docker Desktop。验证安装:
docker --version  # 查看版本
docker run hello-world  # 运行测试容器

(2) 容器生命周期管理

命令 作用

docker run <镜像>	创建并启动容器(如 docker run nginx)
docker start <容器ID>	启动已停止的容器
docker stop <容器ID>	停止运行中的容器
docker restart <容器ID>	重启容器
docker rm <容器ID>	删除容器
docker ps	查看运行中的容器(加 -a 显示所有)

示例:

docker run -d -p 80:80 --name my_nginx nginx  # 后台运行Nginx并映射端口80
docker ps  # 查看容器
docker stop my_nginx  # 停止容器

(3) 镜像管理

命令 作用

docker pull <镜像名>	下载镜像(如 docker pull ubuntu)
docker images	查看本地镜像
docker rmi <镜像ID>	删除镜像
docker build -t <镜像名> .	通过 Dockerfile 构建镜像(需在Dockerfile所在目录运行)

示例:

docker pull alpine:latest  # 下载Alpine Linux镜像
docker images  # 列出镜像
docker rmi alpine  # 删除镜像

(4) 进入容器内部

docker exec -it <容器ID> /bin/bash  # 交互式进入容器
参数说明:
-i:保持交互式输入。
-t:分配伪终端(TTY)。
/bin/bash:启动Shell(根据镜像可能为 /bin/sh)。

(5) 数据持久化(挂载卷)

容器默认是临时存储,重启后数据丢失。需通过卷(Volume)或绑定挂载持久化数据:

docker run -v /宿主机路径:/容器路径 <镜像>  # 绑定挂载
docker run -v 卷名:/容器路径 <镜像>        # 使用Docker卷
示例:
docker run -v /home/user/data:/var/www/html nginx  # 挂载主机目录

(6) 网络管理

命令 作用

docker network ls	查看网络列表
docker network create	创建自定义网络
docker run --network	指定容器网络(如 --network=host 使用主机网络)

示例:

docker network create my_net  # 创建网络
docker run --network=my_net --name app1 my_app  # 容器使用自定义网络

4. Dockerfile 示例

通过 Dockerfile 自定义镜像:

# 基于Ubuntu镜像
FROM ubuntu:20.04# 安装依赖
RUN apt update && apt install -y python3# 复制本地文件到容器
COPY app.py /app/
# 设置工作目录
WORKDIR /app
# 定义启动命令
CMD ["python3", "app.py"]
构建镜像:
docker build -t my_python_app .

5. Docker 典型使用场景

快速部署应用

快速部署应用:**一键运行数据库(MySQL)、Web服务器(Nginx)**等。

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:5.7

微服务架构

微服务架构:每个服务运行在独立容器中,通过网络通信。

CI/CD流水线

CI/CD 流水线:在容器中运行测试和构建,确保环境一致。

开发环境隔离

开发环境隔离:避免“在我机器上能运行”问题。

6. 常见问题

权限问题

权限问题:在 Linux 上,非 root 用户需加入 docker 组

sudo usermod -aG docker $USER

清理资源

清理资源:

docker system prune  # 删除无用镜像、容器、网络

查看日志

查看日志:

docker logs <容器ID>

总结

Docker 容器通过标准化环境,极大提升了开发、部署的效率
核心步骤:
1.拉取镜像 → 2. 运行容器 → 3. 管理生命周期 → 4. 自定义镜像(Dockerfile) → 5. 持久化数据/配置网络。
掌握这些基础操作后,可进一步学习 Docker Compose(多容器编排)和 Kubernetes(容器集群管理)。


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

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

相关文章

树莓派练习

1.守护进程 守护进程含义&#xff1a;守护进程在树莓派上电后开始运行&#xff0c;断电后结束运行的进程&#xff0c;即使你的终端退出也不会停止&#xff0c;我们可以手动关闭它 使用nohup创建守护进程 先创建一个c语言文件&#xff08;long_task.c&#xff09; #include …

详细解释浏览器是如何渲染页面的?

渲染流程概述 渲染的目标&#xff1a;将HTML文本转化为可以看到的像素点 当浏览器的网络线程收到 HTML 文档后&#xff0c;会产生一个渲染任务&#xff0c;并将其传递给渲染主线程的消息队列。在事件循环机制的作用下&#xff0c;渲染主线程取出消息队列中的渲染任务&#xff0…

java+postgresql+swagger-多表关联insert操作(九)

入参为json&#xff0c;然后根据需要对多张表进行操作&#xff1a; 入参格式&#xff1a; {"username": "车主01","usertel": "11111111111","useridtype": "2","useridcard": null,"proname&qu…

JavaSpring 中使用 Redis

创建项目 配置 Redis 服务地址 创建 Controller 类 由于当前只是些简单的测试代码&#xff0c;所以就不进行分层了&#xff0c;只创建一个 Controller 来实现 jedis 通过 jedis 对象里的各种方法来操作 Redis 此处通过 StringRedisTemplate 来操作 Redis 最原始提供的类是 Re…

AI文生图工具推荐

一、AI文生图技术实现原理 AI文生图&#xff08;Text-to-Image&#xff09;基于生成对抗网络&#xff08;GAN&#xff09;或扩散模型&#xff08;Diffusion Model&#xff09;实现&#xff0c;通过深度学习将文本描述转化为图像。其核心流程包括&#xff1a; 文本编码&#xf…

数据结构——快排和归并排序(非递归)

快速排序和归并排序一般都是用递归来实现的&#xff0c;但是掌握非递归也是很重要的&#xff0c;说不定在面试的时候面试官突然问你快排或者归并非递归实现&#xff0c;递归有时候并不好&#xff0c;在数据量非常大的时候效率就不好&#xff0c;但是使用非递归结果就不一样了&a…

【笔记】网络安全管理

计算机硬件中,运算器和控制器通常集成在一块芯片内,一般称为()。 数据库DB、数据库系统DBS、数据库管理系统DBMS,三者之间的关系是()。 OSI/RM体系结构中的网络层与TCP/IP体系结构中的()功能相同。 三级系统应按照等保2.0要求采用密码技术通信过程中数据的()。 …

.net core web api 数据验证(DataAnnotations)

目录 一、什么是 DataAnnotations&#xff1f; 二、扩展验证逻辑&#xff08;自定义验证器&#xff09; 一、什么是 DataAnnotations&#xff1f; DataAnnotations 是一组特性&#xff08;Attributes&#xff09;&#xff0c;用于在模型类上定义验证规则。主要用于属性级别的…

小白从0学习网站搭建的关键事项和避坑指南

以下是针对小白从零学习网站搭建时需要注意的关键事项和避坑指南&#xff0c;帮助你高效学习、少走弯路&#xff1a; 一、学习路径注意事项 不要跳过基础 误区&#xff1a;直接学习框架&#xff08;如 React、Laravel&#xff09;而忽视 HTML/CSS/JS 基础。 正确做法&#xff…

深入剖析JavaScript内存泄漏:识别、定位与实战解决

在JavaScript的世界里&#xff0c;开发者通常不必像使用C那样手动管理内存的分配和释放&#xff0c;这得益于JavaScript引擎内置的垃圾回收&#xff08;Garbage Collection, GC&#xff09;机制。然而&#xff0c;这并不意味着我们可以完全忽视内存管理。“自动"不等于&qu…

2025-04-19 Python 强类型编程

文章目录 1 方法标注1.1 参数与返回值1.2 变参类型1.3 函数类型 2 数据类型2.1 内置类型2.2 复杂数据结构2.3 类别选择2.4 泛型 3 标注方式3.1 注释标注3.2 文件标注 4 特殊情形4.1 前置引用4.2 函数标注扩展4.3 协变与逆变4.4 dataclass 5 高级内容5.1 接口5.2 泛型的协变/逆变…

ETF价格相关性计算算法深度分析

1. 引言 在金融市场中&#xff0c;相关性就像是资产之间“跳舞”的默契程度。想象一下两位舞者&#xff08;ETF&#xff09;&#xff0c;有时步伐一致&#xff0c;有时各跳各的。对于管理大规模资金的投资组合而言&#xff0c;准确理解ETF之间的“舞步同步性”对于风险管理、资…

上海人工智能实验室:LLM无监督自训练

&#x1f4d6;标题&#xff1a;Genius: A Generalizable and Purely Unsupervised Self-Training Framework For Advanced Reasoning &#x1f310;来源&#xff1a;arXiv, 2504.08672 &#x1f31f;摘要 &#x1f538;推进LLM推理技能引起了广泛的兴趣。然而&#xff0c;当前…

【WPF】 在WebView2使用echart显示数据

文章目录 前言一、NuGet安装WebView2二、代码部分1.xaml中引入webview22.编写html3.在WebView2中加载html4.调用js方法为Echarts赋值 总结 前言 为了实现数据的三维效果&#xff0c;所以需要使用Echarts&#xff0c;但如何在WPF中使用Echarts呢&#xff1f; 一、NuGet安装WebV…

2025年3月 Python编程等级考试 2级真题试卷

2025年3月青少年软件编程Python等级考试&#xff08;二级&#xff09;真题试卷 题目总数&#xff1a;37 总分数&#xff1a;100 选择题 第 1 题 单选题 老师要求大家记住四大名著的作者&#xff0c;小明机智地想到了可以用字典进行记录&#xff0c;以下哪个选项的字典…

6. 话题通信 ---- 使用自定义msg,发布方和订阅方cpp,python文件编写

1)在功能包下新建msg目录&#xff0c;在msg目录下新建Person.msg,在Person.msg文件写入&#xff1a; string name uint16 age float64 height 2)修改配置文件 2.1) 功能包下package.xml文件修改 <build_depend>message_generation</build_depend><exec_depend…

多线程使用——线程安全、线程同步

一、线程安全 &#xff08;一&#xff09;什么是线程安全问题 多个线程&#xff0c;同时操作同一个共享资源的时候&#xff0c;可能会出现业务安全的问题。 &#xff08;二&#xff09;用程序摹拟线程安全问题 二、线程同步 &#xff08;一&#xff09;同步思想概述 解决线…

4. 话题通信 ---- 发布方和订阅方cpp文件编写

本节对应赵虚左ROS书籍的2.1.2 以10hz,发布消息和消息的订阅 1) 在功能包的src文件夹下&#xff0c;新建cpp文件&#xff0c;并且写入 #include "ros/ros.h" #include "std_msgs/String.h" int main(int argc, char *argv[]) {setlocale(LC_ALL,"&…

有哪些哲学流派适合创业二

好的&#xff0c;让我们更深入地探讨如何将‌哲学与数学‌深度融合&#xff0c;构建一套可落地的创业操作系统。以下从‌认知框架、决策引擎、执行算法‌三个维度展开&#xff0c;包含具体工具和黑箱拆解&#xff1a; ‌一、认知框架&#xff1a;用哲学重构商业本质‌ 1. ‌本体…

【后端】【python】Python 爬虫常用的框架解析

一、总结 Python 爬虫常用的框架主要分为 三类&#xff1a; 轻量级请求库&#xff1a;如 requests、httpx&#xff0c;用于快速发请求。解析与处理库&#xff1a;如 BeautifulSoup、lxml、pyquery。爬虫框架系统&#xff1a;如 Scrapy、pyspider、Selenium、Playwright 等&am…