【Docker 从入门到实战全攻略(一):核心概念 + 命令详解 + 部署案例】
1. 是什么
Docker 是一个用于开发、部署和运行应用程序的开源平台,它使用 容器化技术 将应用及其依赖打包成独立的容器,确保应用在不同环境中一致运行。
2. Docker与虚拟机
2.1 Docker(容器化)
容器化是一种轻量级的虚拟化技术,它将应用程序及其依赖项打包成独立的容器,确保应用在不同环境中一致运行。与传统虚拟机相比,容器共享宿主操作系统的内核,因此更轻量、更高效。
- 核心技术:Linux 的 namespaces(隔离进程、网络等)和 cgroups(限制资源使用)。
- 工作方式:容器直接运行在宿主机的内核上,共享操作系统,仅封装应用的用户空间。
- 优点:资源效率高、启动快、部署简单。
- 缺点:隔离性较弱(共享内核),不适用于需要完全隔离内核的场景。
2.2 虚拟机(VM)
- 核心技术:Hypervisor(如 VMware、VirtualBox、KVM)模拟硬件资源。
- 工作方式:每个 VM 包含独立的操作系统、驱动程序和应用,通过 Hypervisor 访问物理硬件。
- 优点:完全隔离,安全性高,适用于不同操作系统或需要隔离内核的场景。
- 缺点:资源消耗大,启动慢,管理复杂。
暂时无法在飞书文档外展示此内容
2.3 对比
对比项 | Docker(容器化) | 虚拟机(VM) |
---|---|---|
底层依赖 | 共享宿主机的操作系统内核,仅封装应用和依赖库 | 每个 VM 包含完整的操作系统(内核 + 应用) |
隔离级别 | 进程级隔离(轻量级) | 硬件级隔离(重量级) |
资源利用率 | 高(无需额外操作系统开销) | 低(每个 VM 需要独立的操作系统资源) |
启动速度 | 秒级(直接启动应用进程) | 分钟级(需要启动完整的操作系统) |
3. 核心概念
3.1 镜像(Image)
- 只读的模板,包含应用代码、依赖库、环境变量等,类似 “应用的快照”。类似于“菜谱”
- 例如:
cr2.fit2cloud.com/1panel/maxkb
就是一个镜像
3.2 容器(Container)
- 镜像的运行实例,可被启动、停止、删除。类似于按菜谱做出的菜
- 容器间相互隔离,共享宿主机的操作系统内核
3.3 仓库(Repository)镜像源
- 存储镜像的地方,分为公有仓库(如 Docker Hub)和私有仓库(如
cr2.fit2cloud.com
)。类似于菜谱分享平台
[图片]
4 Docker常用命令
4.1 帮助命令
docker verision
# 显示版本信息docker info
# 显示系统信息docker 命令 --help
# 帮助命令
官方帮助文档:https://docs.docker.com/reference/cli/docker/
4.2 镜像命令
4.2.1 docker images 查看所有镜像
docker images [选项] [镜像名[:版本标签TAG]]
- 常用选项
-a, --all
#列出所有镜像
-q,--quiet
#只显示镜像的id
4.2.2 docker search 搜索镜像
docker search [选项] TERM
4.2.3 docker pull 拉取镜像
docker pull [选项] 镜像名[:版本标签|@DIGEST]
4.2.4 docker rmi 删除镜像
docker rmi [选项] IMAGE [IMAGE...]
docker rmi -f 镜像id 镜像id
#删除指定的镜像docker rmi -f $(docker images -aq)
#删除全部的镜像
4.2.5 docker commit 保存镜像
docker commit [选项] 容器ID或名称 [新镜像名[:标签]]
- 容器转镜像工具:将单个容器的当前状态保存为新镜像,
- 常用选项
-a, --author
指定镜像作者信息--author="John Doe <john@example.com>"
-m, --message
添加提交信息--message="Installed Apache"
-p, --pause
提交时暂停容器(默认开启)--pause=false
(不暂停容器) docker commit abc123 my-ubuntu-python:v1
4.3 容器命令
- 有了镜像才可以创建容器
docker pull centos:7
#需指定下载版本,若直接pull centos ,CentOS 官方已 移除 latest 标签,或镜像源中未同步 latest 版本,会导致拉取失败
4.3.1 docker run 新建容器并启动
docker run [参数] image
- 常用选项
--name="Name"
#为容器命名,用来区分容器
-d
#以后台方式运行
-it
#使用交互方式运行,进入容器查看内容
-p
主机端口:容器端口 #指定容器的端口 - 示例:启动并进入
4.3.2 exit 从容器退回到主机
exit
# 停止容器并退回到主机
Ctrl
+P
+ Q
# 容器不停止退回到主机
4.3.3 docker ps 或 docker top查看服务器进程
docker ps [选项]
- 常用选项
-a
#列出当前正在运行以及历史运行过的容器
-n=1
#显示最近1次创建的容器
-q
#只显示容器编号
docker top 容器id
4.3.4 docker rm 删除容器
docker rm [选项,] 容器id [容器id...]
docker rm 容器id
#删除指定容器,但无法删除正在运行的容器docker rm -f $(docker ps -aq)
#删除所有容器docker ps -a -q | xargs docker rm
#删除所有容器docker rm $(docker ps -a -q)
#删除所有停止的容器
4.3.5 启动和停止容器
docker start 容器id
#启动容器
docker restart 容器id
#重启容器
docker stop 容器id
#停止当前正在运行的容器
docker kill 容器id
#停止当前正在运行的容器
4.4 常用其它命令
4.4.1 docker run -d 后台启动容器
docker run -d 镜像名
- docker 容器使用后台运行,必须要有一个前台进程,若 docker 发现没有应用,就会自动停止
4.4.2 docker logs 查看日志
docker logs [选项] 容器
- 常用选项
-tf
#显示带时间戳的日志
--tail 1
#显示1条日志
#没有日志可以自己编写一段 shell 脚本
docker run -d centos /bin/sh -c "while true;do echo ronghaha;sleep 1;done"
#每隔一秒输出一次 ronghaha
#再进行日志的查看
4.4.3 docker inspect查看源数据
docker inspect 容器id
[{"Id": "4d9c107c8975344c1188cd5d27351bbcca812f5ecf6600e9cc975dcfab805415","Created": "2025-05-23T10:03:37.047169586Z","Path": "/bin/sh","Args": ["-c","while true;do echo ronghaha;sleep 1;done"],-----------------------后续内容省略----------------------
4.4.4 docker exec 或 docker attach进入当前正在运行的容器
我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
- 方式一:docker exec 进入容器后开启一个新终端,可进行操作(常用)
docker exec -it 容器id bash
- 方式二:docker attach 进入容器正在执行的终端,不会启动新的进程
docker attach 容器id
4.4.5 docker cp从容器拷贝文件至主机
docker cp [选项] 容器id:文件路径 拷贝文件路径
4.5 练习
4.5.1 部署nginx
- Step1:
docker search nginx
或者直接去 dockerhub 上查找对应版本和使用手册 - Step2: 下拉镜像:pull
docker pull nginx:1.27
- Step3: 运行测试
docker run -d -p 3344:80 nginx:1.27
#-d后台运行 -p宿主机端口:容器内部端口,将容器的 80 端口映射到主机的 3344 端口
curl localhost:3344
#测试本地网络连接和服务可用性
curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
看到Welcome to nginx!证明测试成功
- Step4: 进入容器
→~ docker exec -it df8d23b39485 /bin/bash`
root@df8d23b39485:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
4.5.2 部署tomcat
-
官方的下载:
--rm
一般用来测试,用完删除
docker run -it --rm tomcat:9.0
-
下载再启动
docker pull tomcat:11.0
#拉取镜像
docker run -d -p 3355:8080 --name tomcat:11.0 tomcat:11.0
-
测试访问无问题
-
进入容器
docker exec -it tomcat /bin/bash
创作不易,点个赞支持一下ヾ(✿゚▽゚)ノ
相关文章:

【Docker 从入门到实战全攻略(一):核心概念 + 命令详解 + 部署案例】
1. 是什么 Docker 是一个用于开发、部署和运行应用程序的开源平台,它使用 容器化技术 将应用及其依赖打包成独立的容器,确保应用在不同环境中一致运行。 2. Docker与虚拟机 2.1 Docker(容器化) 容器化是一种轻量级的虚拟化技术…...

github 提交失败,连接不上
1. 第一种情况,开了加速器,导致代理错误 删除hosts文件里相关的github代理地址 2. 有些ip不支持22端口连接,改为443连接 ssh -vT gitgithub.com // 命令执行结果 OpenSSH_for_Windows_9.5p1, LibreSSL 3.8.2 debug1: C…...

系统架构设计师(一):计算机系统基础知识
系统架构设计师(一):计算机系统基础知识 引言计算机系统概述计算机硬件处理器处理器指令集常见处理器 存储器总线总线性能指标总线分类按照总线在计算机中所处的位置划分按照连接方式分类按照功能分类 接口接口分类 计算机软件文件系统文件类…...
VMware安装Ubuntu全攻略
VMware安装Ubuntu实战分享大纲 准备工作 列出安装前的必要条件和工具,包括硬件要求、软件下载链接等。 VMware Workstation Pro/Player的安装与激活Ubuntu镜像文件下载(官方推荐版本)确保主机系统满足虚拟化技术(VT-x/AMD-V)要求创建虚拟机 详细描述在VMware中创建新虚…...

清理 pycharm 无效解释器
1. 起因, 目的: 经常使用 pycharm 来调试深度学习项目,每次新建虚拟环境,都是显示一堆不存在的名称,删也删不掉。 总觉得很烦,是个痛点。决定深入研究一下。 2. 先看效果 效果是能行,而且清爽多了。 3. …...
精益数据分析(92/126):指标基准化——如何判断你的数据表现是否足够优秀
精益数据分析(92/126):指标基准化——如何判断你的数据表现是否足够优秀 在创业过程中,面对纷繁复杂的指标数据,创业者常常困惑于“什么样的表现算优秀”“我的数据是否达标”。今天,我们将通过WP Engine的…...

手机如何压缩文件为 RAR 格式:详细教程与工具推荐
在如今这个数字化时代,手机已经成为我们生活中不可或缺的工具。随着我们使用手机的频率越来越高,手机中的文件也越来越多,照片、视频、文档等各种类型的文件不断占据着手机的存储空间。 据统计,普通用户的手机存储空间中…...
Elasticsearch集群管理的相关工具介绍
Elasticsearch 集群管理涉及节点监控、配置管理、故障排查、性能优化等多个环节,依赖一系列官方工具和社区方案实现高效运维。以下从 官方工具链、生态集成工具、社区辅助工具 三个维度介绍核心工具及其应用场景: 一、官方核心工具链 1. Elasticsearch 内置功能 _cluster 接…...
基于多尺度卷积和扩张卷积-LSTM的多变量时间序列预测
时间序列预测是机器学习和数据分析中的重要领域,广泛应用于金融、气象、交通等领域。本文将介绍一种结合多尺度卷积、扩张卷积和LSTM的混合神经网络模型,用于多变量时间序列预测,并提供完整的代码实现和详细讲解。 1. 模型架构概述 我们提出的模型结合了三种强大的神经网络…...

Java 注解式限流教程(使用 Redis + AOP)
Java 注解式限流教程(使用 Redis AOP) 在上一节中,我们已经实现了基于 Redis 的请求频率控制。现在我们将进一步升级功能,使用 Spring AOP 自定义注解 实现一个更优雅、可复用的限流方式 —— 即通过 RateLimiter 注解…...

C# XAML 基础:构建现代 Windows 应用程序的 UI 语言
在现代 Windows 应用程序开发中,XAML (eXtensible Application Markup Language) 扮演着至关重要的角色。作为一种基于 XML 的声明性语言,XAML 为 WPF (Windows Presentation Foundation)、UWP (Universal Windows Platform) 和 Xamarin.Forms 应用程序提…...
Linux运维笔记:服务器感染 netools 病毒案例
文章目录 背景排查过程1. 发现异常2. 检测隐藏进程3. 尝试终止进程4. 深入分析进程 处理步骤1. 禁用 Cron 任务2. 删除恶意文件3. 终止恶意进程4. 重启系统 注意事项总结 提示:本文记录了一起 Linux 服务器感染恶意软件(疑似挖矿病毒)的排查与…...
(面试)获取View宽高的几种方式
Android 中获取 View 宽高的几种方式,以及它们的适用场景和注意事项: 1. View.getWidth() 和 View.getHeight() 原理: 直接从 View 对象中获取已经计算好的宽度和高度。 优点: 简单直接。 缺点: 在 onCreate()、onStart() 等生命周期方法中࿰…...

【Linux】进程地址空间揭秘(初步认识)
10.进程地址空间(初步认识) 文章目录 10.进程地址空间(初步认识)一、进程地址空间的实验现象解析二、进程地址空间三、虚拟内存管理补充:数据的写时拷贝(浅谈)补充:页表(…...

设计模式——备忘录设计模式(行为型)
摘要 备忘录设计模式是一种行为型设计模式,用于在不破坏封装性的前提下,捕获对象的内部状态并在需要时恢复。它包含三个关键角色:原发器(Originator)、备忘录(Memento)和负责人(Car…...
吴恩达:构建自动化评估并不需要大量投入,从一些简单快速的示例入手,然后逐步迭代!
吴恩达老师又来信了。 这次他分享了一个重要观点:构建自动化评估并不需要大量投入。从一些简单快速的示例入手,然后逐步迭代! 以下是我对原文的翻译: 亲爱的朋友们: 我注意到,许多生成式 AI 应用项目在系…...
鸿蒙OSUniApp内存管理优化实战:从入门到精通#三方框架 #Uniapp
UniApp内存管理优化实战:从入门到精通 在开发 UniApp 应用时,特别是针对鸿蒙设备的开发过程中,内存管理往往成为影响应用性能的关键因素。本文将结合实际项目经验,深入探讨 UniApp 应用的内存优化策略,帮助开发者构建…...
Vue-5-基于JavaScript和plotly.js绘制数据分析类图表
文章目录 1 折线图示例1.1 网页基本结构1.2 绘图流程1.2.1 type图表类型1.2.2 mode显示方式1.2.3 marker数据点的样式1.3 横坐标为时间戳1.3.1 xaxis.type坐标值类型1.3.2 xaxis.tickformat格式1.4 悬停时展示毫秒数2 一个变量2.1 箱线图2.2 小提琴图2.3 直方图3 两个变量3.1 折…...

UI自动化测试的革新,新一代AI工具MidScene.js实测!
前言 AI已经越来越深入地走入我们的实际工作,在软件测试领域,和AI相关的新测试工具、方法也层出不穷。在之前我们介绍过结合 mcp server 实现 AI 驱动测试的案例,本文我们将介绍一个近期崭露头角的国产AI测试工具 Midscene.js Midscene.js简介 MidScene.js 是由字节跳动 w…...
StarRocks的几种表模型
## 一、引言:OLAP场景下的表模型挑战 在实时分析领域,数据表的设计直接影响查询性能、存储效率和更新灵活性。StarRocks作为新一代极速全场景MPP数据库,针对不同的业务场景提供了多样化的表模型解决方案。每种模型通过独特的存储结构和预计算…...

4. Qt对话框(2)
在上节中已经学习了对话框的确认和取消,本节内容继续接上节完成登录对话框实例并得到登录信息。 本文部分ppt、视频截图原链接:[萌马工作室的个人空间-萌马工作室个人主页-哔哩哔哩视频] 1 实现登录对话框 1.1 功能需要 得到登录信息,需要…...
2025-5-31-C++ 学习 字符串(终)
字符串 2025-5-31-C 学习 字符串(终)P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1 输入输出样例 #2输入 #2输出 #2 说明/提示题解代码 P1597 语句解析题目背景题目描述输入格式输出格式输入…...

Android Studio 2022.2.1.20 汉化教程
查看Android Studio 版本 Android Studio Flamingo | 2022.2.1 Patch 2 下载:https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions/stable...
第17讲、odoo18可视化操作代码生成模块
1. 模块概述 代码框架生成模块是一个专为Odoo开发者设计的工具,旨在简化模块开发过程中的重复性工作。该模块允许开发者通过定义模型名称和字段,自动生成相应的Python代码、XML视图和CSV权限配置文件,从而大幅提高开发效率。通过这种方式&am…...

golang -- slice 底层逻辑
目录 一、前言二、结构三、创建3.1 根据 make创建3.2 通过数组创建 四、内置append追加元素4.1 追加元素4.2 是否扩容4.2.1 不扩容4.2.2 扩容 总结 一、前言 前段时间学了go语言基础,过了一遍之后还是差很多,所以又结合几篇不同资料重新学习了一下相关…...

SOC-ESP32S3部分:26-物联网MQTT连云
飞书文档https://x509p6c8to.feishu.cn/wiki/IGCawAgqFibop7kO83KcsDFBnNb ESP-MQTT 是 MQTT 协议客户端的实现,MQTT 是一种基于发布/订阅模式的轻量级消息传输协议。ESP-MQTT 当前支持 MQTT v5.0。 特性 支持基于 TCP 的 MQTT、基于 Mbed TLS 的 SSL、基于 WebSo…...
从前端工程化角度解析 Vite 打包策略:为何选择 Rollup 而非 esbuild。
文章目录 前言一、esbuild 与 Rollup 的技术特性对比1、esbuild:极速开发利器,功能尚待完善2、Rollup:专业打包工具,功能全面强大 二、Vite 打包策略的工程化考量因素1、开发阶段与生产阶段的需求差异2、功能完整性与生态兼容性3、…...
三层架构 vs SOA vs 微服务:该选谁?
三层架构 vs SOA vs 微服务:该选谁? 一、从单体到分布式:架构演进的必然性 最早的系统架构通常是单体架构(Monolithic Architecture),所有功能都打包在一个应用里,部署方便,但扩展性和灵活性有限。后来,为了让系统更具可维护性,三层架构成为主流。但当业务变得复杂…...

制造业的未来图景:超自动化与劳动力转型的双重革命
市场现状:传统制造业的转型阵痛 当前全球制造业正站在历史性变革的十字路口。埃森哲对552位工厂经理的全球调研显示,60%的受访者将劳动力转型视为首要战略任务,而63%的工厂正在加速部署自动化技术[1]。超过75%的工厂经理认为&…...
使用Haproxy搭建Web群集
一、基础环境准备 服务器规划 67 HAProxy调度器:1台 (2核4G,CentOS 7/8) Web服务器:至少2台(如Nginx/Apache,建议192.168.1.101-102) 客户端测试机:1台(Windows/Linux)…...