【Docker 从入门到实战全攻略(一):核心概念 + 命令详解 + 部署案例】

news2025/7/24 9:07:22

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

创作不易,点个赞支持一下ヾ(✿゚▽゚)ノ

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

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

相关文章

github 提交失败,连接不上

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

系统架构设计师(一):计算机系统基础知识

系统架构设计师&#xff08;一&#xff09;&#xff1a;计算机系统基础知识 引言计算机系统概述计算机硬件处理器处理器指令集常见处理器 存储器总线总线性能指标总线分类按照总线在计算机中所处的位置划分按照连接方式分类按照功能分类 接口接口分类 计算机软件文件系统文件类…

清理 pycharm 无效解释器

1. 起因&#xff0c; 目的: 经常使用 pycharm 来调试深度学习项目&#xff0c;每次新建虚拟环境&#xff0c;都是显示一堆不存在的名称&#xff0c;删也删不掉。 总觉得很烦&#xff0c;是个痛点。决定深入研究一下。 2. 先看效果 效果是能行&#xff0c;而且清爽多了。 3. …

手机如何压缩文件为 RAR 格式:详细教程与工具推荐

在如今这个数字化时代&#xff0c;手机已经成为我们生活中不可或缺的工具。随着我们使用手机的频率越来越高&#xff0c;手机中的文件也越来越多&#xff0c;照片、视频、文档等各种类型的文件不断占据着手机的存储空间。 据统计&#xff0c;普通用户的手机存储空间中&#xf…

Java 注解式限流教程(使用 Redis + AOP)

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

C# XAML 基础:构建现代 Windows 应用程序的 UI 语言

在现代 Windows 应用程序开发中&#xff0c;XAML (eXtensible Application Markup Language) 扮演着至关重要的角色。作为一种基于 XML 的声明性语言&#xff0c;XAML 为 WPF (Windows Presentation Foundation)、UWP (Universal Windows Platform) 和 Xamarin.Forms 应用程序提…

【Linux】进程地址空间揭秘(初步认识)

10.进程地址空间&#xff08;初步认识&#xff09; 文章目录 10.进程地址空间&#xff08;初步认识&#xff09;一、进程地址空间的实验现象解析二、进程地址空间三、虚拟内存管理补充&#xff1a;数据的写时拷贝&#xff08;浅谈&#xff09;补充&#xff1a;页表&#xff08;…

设计模式——备忘录设计模式(行为型)

摘要 备忘录设计模式是一种行为型设计模式&#xff0c;用于在不破坏封装性的前提下&#xff0c;捕获对象的内部状态并在需要时恢复。它包含三个关键角色&#xff1a;原发器&#xff08;Originator&#xff09;、备忘录&#xff08;Memento&#xff09;和负责人&#xff08;Car…

UI自动化测试的革新,新一代AI工具MidScene.js实测!

前言 AI已经越来越深入地走入我们的实际工作,在软件测试领域,和AI相关的新测试工具、方法也层出不穷。在之前我们介绍过结合 mcp server 实现 AI 驱动测试的案例,本文我们将介绍一个近期崭露头角的国产AI测试工具 Midscene.js Midscene.js简介 MidScene.js 是由字节跳动 w…

4. Qt对话框(2)

在上节中已经学习了对话框的确认和取消&#xff0c;本节内容继续接上节完成登录对话框实例并得到登录信息。 本文部分ppt、视频截图原链接&#xff1a;[萌马工作室的个人空间-萌马工作室个人主页-哔哩哔哩视频] 1 实现登录对话框 1.1 功能需要 得到登录信息&#xff0c;需要…

Android Studio 2022.2.1.20 汉化教程

查看Android Studio 版本 Android Studio Flamingo | 2022.2.1 Patch 2 下载&#xff1a;https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions/stable

golang -- slice 底层逻辑

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

SOC-ESP32S3部分:26-物联网MQTT连云

飞书文档https://x509p6c8to.feishu.cn/wiki/IGCawAgqFibop7kO83KcsDFBnNb ESP-MQTT 是 MQTT 协议客户端的实现&#xff0c;MQTT 是一种基于发布/订阅模式的轻量级消息传输协议。ESP-MQTT 当前支持 MQTT v5.0。 特性 支持基于 TCP 的 MQTT、基于 Mbed TLS 的 SSL、基于 WebSo…

制造业的未来图景:超自动化与劳动力转型的双重革命

市场现状&#xff1a;传统制造业的转型阵痛 当前全球制造业正站在历史性变革的十字路口。埃森哲对552位工厂经理的全球调研显示&#xff0c;60%的受访者将劳动力转型视为首要战略任务​​&#xff0c;而63%的工厂正在加速部署自动化技术[1]。超过​75%的工厂经理​​认为&…

【Unity】相机 Cameras

1 前言 主要介绍官方文档中相机模块的内容。 关于“9动态分辨率”&#xff0c;这部分很多API文档只是提了一下&#xff0c;具体细节还需要自己深入API才行。 2 摄像机介绍 Unity 场景在三维空间中表示游戏对象。由于观察者的屏幕是二维屏幕&#xff0c;Unity 需要捕捉视图并将…

如何在 Solana 上发币,并创建初始流动性让项目真正“动”起来?

在 Solana 上发行代币如今已不再是技术门槛&#xff0c;而是市场策略和执行效率的较量。如果你只是简单发了一个代币&#xff0c;却没为它建立流动性和市场机制&#xff0c;那么它就只是一个“死币”。 本文将带你一步步理解&#xff0c;如何从发币到建立流动性池&#xff0c;…

核心机制:滑动窗口

TCP 协议 1.确认应答 可靠传输的核心机制 2.超时重传 可靠传输的核心机制 3.连接管理 TCP/网络 最高的面试题 三次握手,建立连接(必须是 三次) 四次挥手,断开连接(可能是 三次) 核心机制四:滑动窗口 算法中的"滑动窗口" 出自 TCP 前面的三个…

苹果电脑深度清理,让老旧Mac重焕新生

在日常使用苹果电脑的过程中&#xff0c;随着时间推移&#xff0c;系统内会积累大量冗余数据&#xff0c;导致电脑运行速度变慢、磁盘空间紧张。想要让设备恢复流畅&#xff0c;苹果电脑深度清理必不可少。那么&#xff0c;如何进行苹果电脑深度清理呢&#xff1f;接下来为你详…

微服务面试(分布式事务、注册中心、远程调用、服务保护)

1.分布式事务 分布式事务&#xff0c;就是指不是在单个服务或单个数据库架构下&#xff0c;产生的事务&#xff0c;例如&#xff1a; 跨数据源的分布式事务跨服务的分布式事务综合情况 我们之前解决分布式事务问题是直接使用Seata框架的AT模式&#xff0c;但是解决分布式事务…

高性能MYSQL(三):性能剖析

一、性能剖析概述 &#xff08;一&#xff09;关于性能优化 1.什么是性能&#xff1f; 我们将性能定义为完成某件任务所需要的时间度量&#xff0c;换句话说&#xff0c;性能即响应时间&#xff0c;这是一个非常重要的原则。 我们通过任务和时间而不是资源来测量性能。数据…