news 2026/6/14 4:42:40

docker 新手入门:10分钟搞定基础使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
docker 新手入门:10分钟搞定基础使用

上周我第一次正儿八经用 Docker,不是光跑个 hello-world,而是把一个 Spring Boot 项目塞进去跑起来了。整个过程其实没想象中那么玄乎,就是几个命令来回敲。今天我就用大白话,把我踩过的坑和走通的路写下来,保证你跟着做,10 分钟也能跑起来。


装完就跑个 Nginx 试试

Docker 装好之后,别急着看文档。先跑个现成的镜像感受一下:

docker run -d -p8080:80 nginx

然后打开浏览器,访问http://localhost:8080,看到 “Welcome to nginx!” 页面,说明成了。

这行命令啥意思?

  • docker run:启动一个容器
  • -d:后台运行(不占着终端)
  • -p 8080:80:把本机的 8080 端口映射到容器的 80 端口
  • nginx:镜像名,Docker 会自动去 Hub 拉

我认为,这一步最关键——它让你立刻看到效果,而不是对着命令行发呆。


自己写个 Java 项目打包进 Docker

假设你有个 Spring Boot 项目,打了个 jar 包,叫app.jar

在项目根目录新建一个文件,名字就叫Dockerfile(没有后缀):

FROM openjdk:17-jdk-slim WORKDIR /app COPY app.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"]

解释一下:

  • FROM:基于哪个基础镜像(这里用官方 OpenJDK 17)
  • WORKDIR:容器里的工作目录
  • COPY:把本地的 jar 复制进去
  • EXPOSE:声明容器会用 8080 端口(实际要不要映射,还得看 run 命令)
  • ENTRYPOINT:容器启动时执行的命令

然后在终端执行:

# 构建镜像,名字叫 myapp,版本 latestdocker build -t myapp:latest.# 启动容器,把本机 9090 映射到容器 8080docker run -d -p9090:8080 myapp:latest

现在访问http://localhost:9090,你的接口应该能用了。

我们的经验是:Dockerfile 别搞太复杂,先把最简版本跑通。后面再加日志、环境变量、多阶段构建什么的。


常用命令记这几个就够了

刚开始不用背所有命令,记住这几个就够日常用了:

# 查看正在运行的容器dockerps# 查看所有容器(包括停掉的)dockerps-a# 停止某个容器docker stop<容器ID或名字># 删除容器dockerrm<容器ID># 查看本地有哪些镜像docker images# 删除镜像docker rmi<镜像ID># 进入容器内部(调试用)dockerexec-it<容器ID>/bin/bash

比如你改了代码,重新打包 jar,想更新容器:

  1. docker stop 容器ID
  2. docker rm 容器ID
  3. 重新docker builddocker run

在我看来,这种“删了重来”的方式虽然粗暴,但对新手最安全,不容易搞混状态。


遇到的两个小坑

  1. Mac/Windows 上路径权限问题
    如果 COPY 文件报错,可能是 Docker 没权限访问你项目的目录。去 Docker Desktop 设置里,把项目所在盘加到“File Sharing”里就行。

  2. 端口被占用
    如果docker run报错说端口冲突,换个本机端口就行,比如-p 9091:8080。容器内部端口(8080)不用动,只要你的应用监听的是 8080。


别怕“浪费”镜像和容器

Docker 的好处之一就是“用完就扔”。你随便 build、run、rm,不会污染系统。
我一开始总担心删错了,后来发现:反正代码在本地,镜像随时能重建,容器就是个临时盒子

现在我们团队开发都这样:本地写代码 → 打包 → docker build → docker run 测试。比配一堆环境变量省心多了。


最后一句实在话

Docker 不是什么高深技术,它就是一个“打包+隔离运行”的工具。
你不需要懂 Linux 内核、cgroups、namespace,也能用它干活。
先跑起来,再慢慢理解原理——这是我最大的体会。

赶紧去装个 Docker,跑个 Nginx,你就已经入门了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 14:07:19

打卡信奥刷题(2554)用C++实现信奥 P2133 天作之合

P2133 天作之合 题目背景 生活就是一次 A*&#xff0c;你是我的第一个目标状态。——小明 题目描述 在小明的学校中&#xff0c;有若干个女生。小明认为每个女生的特征可以抽象为一个 666 位的数字串&#xff0c;其中不重复地包含 1∼61\sim61∼6 这 666 个数码。 在小明心中&a…

作者头像 李华
网站建设 2026/6/13 20:07:18

Kotaemon插件架构揭秘:轻松集成外部API和业务逻辑

Kotaemon插件架构揭秘&#xff1a;轻松集成外部API和业务逻辑 在企业级AI应用日益复杂的今天&#xff0c;一个智能对话系统是否“好用”&#xff0c;早已不再仅仅取决于它背后的语言模型有多强大。真正决定成败的&#xff0c;往往是那些看不见的工程细节&#xff1a;能否快速接…

作者头像 李华
网站建设 2026/6/9 18:31:05

Triple Removal Maximum Array 2

两场算法竞赛C题通关手记&#xff1a;最近刷竞赛题时遇到两道很有意思的C题&#xff0c;分别是Triple Removal和Maximum Array 2。一道考的是前缀和加二分的区间查询技巧&#xff0c;另一道则是围绕MEX和区间最小值展开的构造题&#xff0c;琢磨透这两道题的过程里&#xff0c;…

作者头像 李华
网站建设 2026/6/12 23:16:03

48、多线程编程全面解析

多线程编程全面解析 1. 计算机性能发展与多线程需求 在2004年之前,提升计算机性能主要依靠提高单个处理器的能力。然而,如今的硅微芯片技术受物理限制,使得单个处理器性能难以进一步提升,计算能力与散热的阈值趋于稳定,甚至出现了性能停滞和小幅度下降的情况。 尽管如此…

作者头像 李华
网站建设 2026/6/12 3:03:55

53、多线程编程中的同步、存储与异步模式解析

多线程编程中的同步、存储与异步模式解析 在多线程编程领域,存在着诸多复杂的问题和有效的解决方案。下面将详细介绍线程本地存储、定时器以及异步编程模型等关键内容。 线程本地存储 在某些情况下,使用同步锁会导致性能下降和可扩展性受限,或者对特定数据元素进行同步操…

作者头像 李华
网站建设 2026/6/12 9:17:15

9、量子力学原理与量子计算机:从理论到实践

量子力学原理与量子计算机:从理论到实践 量子力学基础 测量后的状态描述 在量子力学中,为了预测测量后的状态,我们会对初始状态向量进行改写。对于一个有 (n + 1) 个自由度的系统,初始状态向量 (|\psi\rangle_{n + 1}) 可以表示为: [|\psi\rangle_{n + 1} = \sqrt{p(0…

作者头像 李华