云计算百科
云计算领域专业知识百科平台

Docker部署应用入门教程(2026版):从安装到上线,一个例子跑通全流程

一、先给结论

  • Docker 把应用和它的运行环境打包在一起,换个机器也能一键跑起来;
  • 入门只需要掌握 6 个命令:pull、run、ps、logs、exec、stop;
  • 部署一个应用的标准姿势:写 Dockerfile → 构建镜像 → 跑容器 → 挂数据卷 → 映射端口;
  • 新手最大的两个坑:容器一重启数据就丢、端口被占用起不来——本文都会讲到;
  • 有服务器后装个 Docker,个人博客、笔记、图床这类小应用都能用它托管。

二、Docker 到底解决了什么问题

传统部署流程是这样的:买服务器 → 装环境(Python/Node/数据库)→ 传代码 → 手动启动。环境装一半、版本对不上、换台机器重来一遍,是家常便饭。

Docker 的思路是:把"代码 + 运行环境"打包成一个镜像,镜像启动就是容器。容器里的环境和开发时完全一致,换机器也只是"拉镜像 → 跑起来"两步。

一句话类比:以前搬家要重新装修,Docker 是连家具一起搬。

三、安装 Docker(三步)

以常见的 Linux 服务器为例(CentOS / Ubuntu 通用逻辑):

  • 更新系统包索引:sudo apt update
  • 安装 Docker 引擎(安装包来自官方源,装完自动注册为系统服务):curl -fsSL https://get.docker.com | sh
  • 验证安装:sudo docker version

    能看到 client 和 server 两段版本号,说明安装成功。server 段有输出才是真的装好了,只有 client 说明服务没起来,先 sudo systemctl start docker。

  • 国内服务器拉镜像慢是正常现象,可配置镜像加速器(各云厂商控制台都有说明,或参考 Docker 官方文档的 registry mirrors 配置)。

    四、6 个必会的命令

    命令作用示例
    docker pull <镜像名> 拉取镜像 docker pull nginx
    docker run -d –name web -p 8080:80 nginx 后台启动容器 把容器 80 端口映射到主机 8080
    docker ps 查看运行中的容器 加 -a 看所有(含已停止)
    docker logs -f web 看容器日志 排查启动失败首选
    docker exec -it web bash 进容器内部 相当于"远程进到容器里"
    docker stop web 停止容器 删掉用 docker rm web

    记不住没关系,把上面 6 个打印出来贴显示器旁边,前两周够用了。

    五、部署第一个应用:完整流程

    用一个静态网站(Nginx)做例子,走通"镜像 → 容器 → 端口"全链路:

    第 1 步:拉镜像

    docker pull nginx

    第 2 步:写一个最简单的页面
    新建 index.html:

    <h1>Hello Docker</h1>

    第 3 步:用 Dockerfile 告诉 Docker 怎么打包
    同目录新建 Dockerfile:

    FROM nginx
    COPY index.html /usr/share/nginx/html/

    两行就够了:基于 nginx 镜像,把页面拷进它默认的站点目录。

    第 4 步:构建镜像

    docker build -t my-site .

    -t my-site 是给镜像起名,最后的 . 表示用当前目录的 Dockerfile。

    第 5 步:启动容器

    docker run -d –name my-site -p 8080:80 my-site

    访问 http://服务器IP:8080,能看到 Hello Docker,第一个应用就上线了。

    六、新手必踩的两个坑(提前避开)

    坑 1:容器一停,数据全没了

    容器是"用完即弃"的设计,你写进容器里的文件,容器一删就没了。解决方案是挂数据卷:

    docker run -d –name my-site -p 8080:80 \\
    -v /data/my-site:/usr/share/nginx/html \\
    my-site

    -v 主机目录:容器目录 把主机的 /data/my-site 目录映射进容器,文件写在主机上,容器删了数据还在。任何有状态的应用(数据库、博客、笔记)都要挂数据卷,这是最重要的一个习惯。

    坑 2:端口被占用

    docker run 报 port is already allocated,说明 8080 被别的进程占了。先查占用:

    sudo lsof -i :8080

    换一个端口(比如 9090),或者停掉占用它的进程再重来。

    七、部署带数据库的应用(进阶模板)

    静态站只是热身,多数应用是"应用 + 数据库"两个容器。以常见的"笔记类 / 博客类"应用为例,标准姿势是用 docker-compose 一次拉起两个服务:

    # docker-compose.yml
    services:
    app:
    image: my–app
    ports:
    – "8080:80"
    volumes:
    – ./app–data:/app/data
    db:
    image: mysql:8
    environment:
    MYSQL_ROOT_PASSWORD: yourpassword
    volumes:
    – ./db–data:/var/lib/mysql

    启动:

    docker compose up -d

    两个容器一起起来,数据分别落在 app-data 和 db-data 两个主机目录,备份 = 拷贝这两个目录,换机器 = 把目录和配置带过去重新 up -d。

    八、常见问题速查

    现象原因处理
    docker ps 没有容器但明明启动了 容器秒退了 docker logs 容器名 看报错
    访问 IP:端口 打不开 端口没映射 / 防火墙没放行 检查 -p 参数;放行对应端口
    拉镜像超时 网络到官方源慢 配镜像加速器
    Permission denied 当前用户不在 docker 组 sudo usermod -aG docker 你的用户名 后重登

    九、行动清单

  • 装 Docker(官方脚本一条命令),docker version 确认 server 段正常;
  • 学 6 个必会命令,先拿 Nginx 跑通第一个容器;
  • 从第二步起就养成挂数据卷的习惯,别把数据写进容器;
  • 有状态的应用用 docker-compose 管理,数据目录独立出来方便备份迁移;
  • 遇到问题先 docker logs,八成答案都在日志里。
  • 说明:本文为 Docker 技术科普,命令与配置以 Docker 官方文档当期版本为准;具体服务器环境差异请以你的系统发行版文档为准。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Docker部署应用入门教程(2026版):从安装到上线,一个例子跑通全流程
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!