Docker容器实战指南:从镜像构建到服务部署

举报
yd_277255811 发表于 2026/10/25 08:49:07 2026/10/25
【摘要】 Docker已经成为现代应用开发和部署的标准工具。本文将从实际操作出发,介绍Docker镜像构建、容器运行、数据持久化和多容器编排的完整流程。一、Docker基本概念Docker使用容器技术将应用及其依赖打包成一个轻量级、可移植的镜像。与虚拟机不同,容器共享宿主机内核,启动速度快,资源占用少。核心概念:- 镜像(Image):只读模板,用于创建容器- 容器(Container):镜像的运行实...

Docker已经成为现代应用开发和部署的标准工具。本文将从实际操作出发,介绍Docker镜像构建、容器运行、数据持久化和多容器编排的完整流程。


一、Docker基本概念


Docker使用容器技术将应用及其依赖打包成一个轻量级、可移植的镜像。与虚拟机不同,容器共享宿主机内核,启动速度快,资源占用少。


核心概念:

- 镜像(Image):只读模板,用于创建容器

- 容器(Container):镜像的运行实例

- 仓库(Registry):存储镜像的服务,如Docker Hub


二、安装与基础命令


在Ubuntu上安装Docker:


sudo apt update

sudo apt install docker.io

sudo systemctl start docker

sudo systemctl enable docker


常用命令:


docker pull ubuntu:22.04

docker images

docker run -it --name mycontainer ubuntu:22.04 bash

docker ps -a

docker stop mycontainer

docker rm mycontainer


docker run参数说明:-it分配交互式终端,--name指定容器名称,-d后台运行,-p映射端口,-v挂载数据卷。


三、Dockerfile构建镜像


Dockerfile是构建自定义镜像的脚本。以一个Node.js应用为例:


FROM node:20-alpine

WORKDIR /app

COPY package*.json ./

RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["node", "server.js"]


构建命令:


docker build -t myapp:1.0 .


各指令含义:FROM选择基础镜像,WORKDIR设置工作目录,COPY复制文件,RUN执行构建命令,EXPOSE声明端口,CMD指定启动命令。


四、数据持久化


容器默认不持久化数据,需要使用数据卷:


docker volume create mydata

docker run -d -v mydata:/data nginx


数据卷由Docker管理,独立于容器生命周期。也可以绑定挂载主机目录:


docker run -d -v /host/path:/container/path nginx


五、端口映射与网络


将容器端口映射到宿主机:


docker run -d -p 8080:80 nginx


这样访问宿主机8080端口即可访问容器内80端口的Nginx服务。Docker默认创建bridge网络,容器间可通过容器名互相访问。


六、Docker Compose多容器编排


当应用需要多个容器协同工作时,使用docker-compose.yml:


version: '3'

services:

  web:

    build: .

    ports:

      - "3000:3000"

    depends_on:

      - db

  db:

    image: mysql:8.0

    environment:

      MYSQL_ROOT_PASSWORD: secret

    volumes:

      - db_data:/var/lib/mysql


volumes:

  db_data:


启动命令:docker-compose up -d,停止命令:docker-compose down。


七、镜像优化技巧


- 选择alpine版本基础镜像,体积更小

- 合理安排Dockerfile指令顺序,充分利用缓存

- 使用.dockerignore排除不需要的文件

- 多阶段构建减小最终镜像体积


总结


Docker极大地简化了应用的打包、分发和部署流程。掌握镜像构建、容器管理、数据持久化和Compose编排,就能应对大多数容器化场景。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。