Docker快速入门上手教程(保姆式),含docker所有常用命令大全(详细)!

Docker快速入门上手教程(保姆式),含docker所有常用命令大全(详细)!

目录

一、Docker 是什么?为什么需要它?

二、核心概念:镜像、容器、仓库

三、"保姆式"实战:5分钟部署你的第一个Nginx网站

步骤一:搜索并拉取 Nginx 镜像

步骤二:查看本地镜像

步骤三:运行容器

步骤四:验证容器运行

步骤五:查看容器日志

步骤六:进入容器内部

步骤七:停止并删除容器

步骤八:删除镜像

四、Docker 常用命令大全(超详细)

(一) 镜像相关命令 (Image Commands)

(二) 容器相关命令 (Container Commands)

(三) 其他常用命令

五、总结


大家好,作为一名开发者,你是否曾被这样的场景困扰:

你辛苦开发完一个项目,在自己电脑上运行得好好的,一部署到服务器就各种报错?同事接手你的项目,光是配开发环境就花了两天,还配不出来?想在本地学习 Redis、MySQL、RabbitMQ 等技术,却要安装一大堆软件,把系统搞得一团糟?

如果你有过这些经历,那么恭喜你,Docker 就是终结这一切的“银弹”!它能彻底解决“在我电脑上明明可以运行啊!”这个世纪难题。

本文将以“保姆式”的风格,手把手带你从零入门 Docker,并通过一个 Nginx 网站的实战案例,让你真正掌握它。文章最后,还附上了一份超详细的 Docker 常用命令大全,建议点赞+收藏,绝对是居家旅行、开发必备!

一、Docker 是什么?为什么需要它?

想象一下,我们把开发好的应用程序及其所有依赖(比如代码、运行时、系统工具、库)全部打包到一个“集装箱”里。这个集装箱是标准化的,可以在任何支持 Docker 的机器上运行,无论这台机器是 Windows、macOS 还是 Linux,也无论它是什么版本。

这个“集装箱”,就是 Docker 容器 (Container)

Docker 的核心价值:

  1. 环境隔离与一致性: 确保开发、测试、生产环境完全一致,告别环境问题。
  2. 快速部署与启动: 容器是秒级启动,远快于传统的虚拟机。
  3. 资源利用率高: Docker 容器直接运行在宿主机内核上,几乎没有性能损耗。一台物理机可以运行成百上千个容器。
  4. 简化运维: 便于迁移、扩展和管理。

二、核心概念:镜像、容器、仓库

学习 Docker,必须理解这三个核心概念:

  • 镜像 (Image):
    • 是什么: 镜像是一个只读的模板,它包含了运行应用程序所需的一切:代码、运行时、库、环境变量和配置文件。
    • 类比: 你可以把镜像想象成一个面向对象编程中的“类”。
  • 容器 (Container):
    • 是什么: 容器是镜像的运行实例。镜像是静态的,而容器是动态的。我们对容器的任何修改(如创建、启动、停止、删除)都不会影响到镜像本身。
    • 类比: 如果镜像是“类”,那么容器就是这个“类”的一个“实例对象”。
  • 仓库 (Repository):
    • 是什么: 仓库是集中存放镜像文件的地方。
    • 类比: 你可以把它理解成代码界的 GitHub,只不过它存放的是镜像而不是代码。最著名的公共仓库是 Docker Hub

三者关系: 我们从 仓库pull (拉取) 镜像到本地,然后以这个镜像为模板,run (运行) 起一个或多个容器

三、"保姆式"实战:5分钟部署你的第一个Nginx网站

光说不练假把式!接下来,我们用一个完整的实战案例,带你体验 Docker 的魅力。

目标: 在 Docker 中运行一个 Nginx 容器,并通过浏览器访问它。

步骤一:搜索并拉取 Nginx 镜像

首先,我们从 Docker Hub 搜索官方的 Nginx 镜像。

# 搜索 Docker Hub 上的 nginx 镜像 docker search nginx 

你会看到很多结果,通常我们选择 OFFICIAL[OK] 的官方镜像。然后,使用 pull 命令把它拉取到本地。

# 拉取最新版的 nginx 镜像 docker pull nginx 
提示: 如果不指定版本号(如 nginx:1.21),默认会拉取 latest (最新) 版本的镜像。
步骤二:查看本地镜像

拉取成功后,我们可以用 images 命令查看本地已经存在的所有镜像。

docker images 

你会看到刚刚下载的 nginx 镜像信息,包括仓库名、标签(版本)、镜像ID、创建时间和大小。

步骤三:运行容器

这是最核心的一步!我们使用 run 命令来启动一个 Nginx 容器。

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

这条命令看起来有点复杂,别怕,我们来逐一拆解(这几个参数非常重要,一定要掌握):

  • docker run: 运行容器的命令。
  • --name my-nginx: 给你的容器起一个自定义的名字,叫 my-nginx。如果不指定,Docker 会随机分配一个。
  • -p 8080:80: 这是端口映射。
    • -p--publish 的缩写。
    • 8080:80 的意思是,将宿主机(你的电脑)的 8080 端口映射到容器的 80 端口。
    • Nginx 默认在容器内监听 80 端口,我们通过这个映射,就可以通过访问我们电脑的 8080 端口来访问容器里的 Nginx 服务。
  • -d: 这是 -detach 的缩写,表示在后台运行容器。如果不加这个参数,你的终端就会被容器的前台进程占据。
  • nginx: 指定要使用哪个镜像来创建容器。
步骤四:验证容器运行

现在,我们的 Nginx 容器已经在后台运行了。如何确认呢?

  1. 打开浏览器访问: 在你的浏览器地址栏输入 http://localhost:8080 并回车。如果看到了 Nginx 的欢迎页面 “Welcome to nginx!”,恭喜你,你已经成功部署了第一个 Docker 应用!

使用 ps 命令查看正在运行的容器:

docker ps 

你会看到名为 my-nginx 的容器正在运行,并且端口映射关系 0.0.0.0:8080->80/tcp 也清晰可见。

步骤五:查看容器日志

如果容器启动失败或运行异常,查看日志是排查问题的第一步。

# docker logs [容器名或容器ID] docker logs my-nginx 
步骤六:进入容器内部

有时候我们需要进入容器内部进行一些操作(比如修改配置文件)。

# docker exec -it [容器名或容器ID] /bin/bash docker exec -it my-nginx /bin/bash 
  • -i: 交互式操作 (interactive)。
  • -t: 分配一个伪终端 (tty)。
  • /bin/bash: 指定进入容器后要执行的命令,这里是启动一个 Bash Shell。

执行后,你的命令行提示符会变了,表示你已经成功进入了 my-nginx 容器的内部。你可以像在普通 Linux 系统里一样使用 ls, cd, cat 等命令。输入 exit 即可退出容器。

步骤七:停止并删除容器

如果想停止这个网站,可以 stop 容器。

docker stop my-nginx 

停止后的容器依然存在,只是不运行了。你可以用 docker ps -a 查看所有容器(包括已停止的)。如果确定不再需要它,可以用 rm 命令彻底删除。

# 删除前必须先停止容器 docker rm my-nginx 
步骤八:删除镜像

如果连 Nginx 镜像也不想要了,可以用 rmi 命令删除它。

# docker rmi [镜像名或镜像ID] docker rmi nginx 
注意: 如果有容器正在使用这个镜像,必须先删除所有依赖该镜像的容器,然后才能删除镜像。

至此,一个完整的“拉取->运行->交互->清理”的 Docker 生命周期你就体验完了!

四、Docker 常用命令大全(超详细)

掌握了上面的实战,你已经入门了。下面这份详细的命令大全,将是你日常工作中的得力助手。

(一) 镜像相关命令 (Image Commands)

命令

详细说明

常用示例

docker images

列出本地所有镜像。

docker images

-a, --all: 列出所有镜像(包括中间层镜像)。

docker images -a

-q, --quiet: 只显示镜像ID。

docker images -q

docker pull

从镜像仓库拉取镜像。

docker pull ubuntu:20.04

docker rmi

删除一个或多个本地镜像。

docker rmi nginx (按名) docker rmi 2d... (按ID前几位)

-f, --force: 强制删除镜像。

docker rmi -f nginx

docker build

从 Dockerfile 构建镜像。

docker build -t my-app:1.0 .

-t, --tag: 指定镜像的名字和标签。

docker build -t my-repo/my-app:v1 .

-f, --file: 指定 Dockerfile 文件路径。

docker build -f /path/to/Dockerfile .

docker search

在 Docker Hub 中搜索镜像。

docker search redis

--limit: 指定搜索结果的最大数量。

docker search --limit 5 tomcat

docker tag

为本地镜像打上一个新的标签。

docker tag nginx:latest my-nginx:v1.0

docker push

将本地镜像推送到镜像仓库。

docker push my-repo/my-app:v1

docker save

将指定镜像保存成 tar 归档文件。

docker save -o nginx.tar nginx:latest

docker load

从 tar 归档文件加载镜像。

docker load -i nginx.tar

(二) 容器相关命令 (Container Commands)

命令

详细说明

常用示例

docker run

创建并启动一个新容器(核心命令)。

docker run -it ubuntu /bin/bash

-d: 后台运行容器。

docker run -d nginx

-p 主机端口:容器端口: 端口映射。

docker run -d -p 80:80 nginx

-v 主机路径:容器路径: 卷挂载,实现数据持久化。

docker run -v /mydata:/data redis

--name: 指定容器名称。

docker run --name my-redis redis

-it: 交互模式并分配终端。

docker run -it centos /bin/bash

--rm: 容器停止后自动删除。

docker run --rm -it ubuntu bash

-e: 设置环境变量。

docker run -e MYSQL_ROOT_PASSWORD=1234 mysql

docker ps

列出正在运行的容器。

docker ps

-a, --all: 列出所有容器(包括已停止的)。

docker ps -a

-q, --quiet: 只显示容器ID。

docker ps -q

docker start

启动一个或多个已停止的容器。

docker start my-nginx

docker stop

停止一个或多个正在运行的容器。

docker stop my-nginx

docker restart

重启容器。

docker restart my-nginx

docker rm

删除一个或多个已停止的容器。

docker rm my-nginx

-f, --force: 强制删除正在运行的容器。

docker rm -f my-nginx

清理所有停止的容器:

docker rm $(docker ps -aq)

docker exec

在运行的容器中执行命令。

docker exec -it my-nginx bash

docker logs

获取容器的日志。

docker logs my-nginx

-f, --follow: 持续跟踪日志输出。

docker logs -f my-nginx

-t, --timestamps: 显示时间戳。

docker logs -t my-nginx

--tail: 只显示末尾N行日志。

docker logs --tail 100 my-nginx

docker inspect

获取容器/镜像的元数据(详细信息)。

docker inspect my-nginx

docker cp

在容器和宿主机之间复制文件。

docker cp foo.txt my-nginx:/foo.txt (本机->容器) docker cp my-nginx:/foo.txt . (容器->本机)

docker top

显示一个容器内正在运行的进程。

docker top my-nginx

(三) 其他常用命令

命令

详细说明

docker login

登录到一个 Docker 镜像仓库(如 Docker Hub)。

docker logout

登出镜像仓库。

docker version

显示 Docker 的版本信息。

docker info

显示 Docker 的系统级信息,包括镜像和容器数量等。

五、总结

Docker 是一项颠覆性的技术,是现代开发者的必备技能。它不仅解决了环境一致性的痛点,更是一种全新的软件打包和分发方式。希望这篇“保姆级”的入门教程能帮助你迈出坚实的第一步。

记住,学习技术最好的方式就是不断练习。赶紧打开你的终端,跟着文章的步骤和命令大全亲自敲一遍吧!

如果你觉得这篇文章对你有帮助,请不要吝啬你的点赞、收藏和关注,这是对我最大的鼓励!我们下期再见!

Read more

一文了解Blob文件格式,前端必备技能之一

一文了解Blob文件格式,前端必备技能之一

文章目录 * 前言 * 一、什么是Blob? * 二、Blob的基本特性 * 三、Blob的构造函数 * 四、常见使用场景 * 1. 文件下载 * 2. 图片预览 * 3. 大文件分片上传 * 四、Blob与其他API的关系 * 1. File API * 2. FileReader * 3. URL.createObjectURL() * 4. Response * 五、性能与内存管理 * 六、实际案例:导出Word文档 * 七、浏览器兼容性 * 八、总结 前言 最近在项目中需要导出文档时,我首次接触到了 Blob 文件格式。作为一个前端开发者,虽然经常听到 "Blob" 这个术语,但对其具体原理和应用场景并不十分了解。经过一番研究和实践,

By Ne0inhk
前端如何应对精确数字运算?用BigNumber.js解决JavaScript原生Number类型在处理大数或高精度计算时的局限性

前端如何应对精确数字运算?用BigNumber.js解决JavaScript原生Number类型在处理大数或高精度计算时的局限性

目录 前端如何应对精确数字运算?用BigNumber.js解决JavaScript原生Number类型在处理大数或高精度计算时的局限性 一、BigNumber.js介绍 1、什么是 BigNumber.js? 2、作用领域 3、核心特性 二、安装配置与基础用法 1、引入 BigNumber.js 2、配置 BigNumber.js 3、常用方法 ①创建 BigNumber 实例 ②基本运算 ③幂运算 ④绝对值 ⑤舍入 ⑥比较 ⑦格式化输出 ⑧链式调用 三、核心特性 1、大数精度丢失问题 2、小数运算精度问题 3、大数乘除法精度问题 四、总结         作者:watermelo37         ZEEKLOG万粉博主、

By Ne0inhk
离开舒适区之后:从三年前端到 CS 硕士——我在韩国亚大读研的得失

离开舒适区之后:从三年前端到 CS 硕士——我在韩国亚大读研的得失

过去一年多,我做了一个挺重要的决定:辞职,去韩国留学读研。 这段时间我几乎没怎么学习新的前端内容,但也没有停下来。我在韩国亚洲大学完成了计算机科学与技术(大数据)硕士的学习,在高强度的节奏里重新建立了自己的方法,也因为持续写博客获得了一些机会,担任本科 Web 实训课讲师。现在这段留学告一段落,我也准备重新回到前端领域,把这段经历当作一份额外的积累带回去。这篇复盘主要是想把这一路的收获、疲惫和一些值得记住的瞬间记录下来,留给未来的自己,也分享给路过的你。 文章目录 * 1、写在前面:我为什么会从前端转去读研 * 2、留学生活的关键词:卷、AI、被看见以及校庆的“放开玩” * 3、我的“结果卡片” * 4、得:这一年半我真正收获的东西 * 5、失:我付出的代价 * 6、期末周:我经历过的“高强度交付周” * 7、前端三年经验,如何在读研里“迁移复用” * 8、我在韩国的学习系统:

By Ne0inhk
Qt与Web混合编程:CEF与QCefView深度解析

Qt与Web混合编程:CEF与QCefView深度解析

Qt与Web混合编程:CEF与QCefView深度解析 * 1. 引言:现代GUI开发的融合趋势 * 2. Qt与Web集成方案对比 * 3. CEF核心架构解析 * 4. QCefView:Qt与CEF的桥梁 * 5. 实战案例:智能家居控制面板 * 6. 性能优化策略 * 7. 调试技巧大全 * 8. 安全加固方案 * 9. 未来展望:WebComponent集成 * 10. 结语 1. 引言:现代GUI开发的融合趋势 在当今的桌面应用开发领域,本地GUI框架与Web技术的融合已成为不可逆转的趋势。Qt作为成熟的跨平台C++框架,与Web技术的结合为开发者提供了前所未有的灵活性: * 本地性能 + Web动态性 = 最佳用户体验 * 快速迭代的Web前端 + 稳定可靠的本地后端 * 跨平台一致性 + 现代UI效果 35%25%20%20%混合应用优势分布开发效率UI表现力跨平台性性能平衡 2. Qt与Web集成方案对比 方案优点缺点适用场景Qt WebEngine官方支持,

By Ne0inhk