Docker容器化零基础入门教程:从安装到微服务部署的实战步骤详解

Docker容器化零基础入门教程:从安装到微服务部署的实战步骤详解 一

文章目录CloseOpen

后来我推荐他试试Docker,两周后他跑过来跟我说:“哥,这玩意儿也太香了!现在我把项目打包成容器,不管是本地、测试还是生产环境,一键运行,再也不用跟运维掰扯环境问题了。” 其实Docker没那么玄乎,今天我就把这套“零基础也能上手”的实操方法分享给你,不用懂太多底层原理,跟着步骤做,你也能从“容器小白”变成“部署高手”。

Docker基础:从安装到核心操作全流程

不同系统的Docker安装指南(附避坑技巧)

很多人卡在第一步——安装。其实Docker对主流系统支持都很好,但不同系统的安装细节有点区别,我整理了一份表格,你可以对着操作:

系统类型 安装命令 关键配置 常见问题
Windows 10/11专业版 官网下载Docker Desktop安装包,双击下一步 启用Hyper-V和容器功能 WSL 2未安装:在PowerShell中运行wsl install
Mac 官网下载Docker Desktop for Mac,拖到应用文件夹 芯片适配:M1/M2选Apple Silicon版 内存不足:偏好设置→Resources调大内存( 至少4GB)
Linux(Ubuntu) sudo apt-get install docker-ce docker-ce-cli containerd.io 添加用户到docker组:sudo usermod -aG docker $USER 权限报错:重启终端或注销重登录

我踩过的坑

:去年帮一个朋友在Linux服务器上装Docker,他直接用apt install docker装了,结果启动容器一直报错“no space left on device”。后来发现他装的是旧版本docker.io,不是官方推荐的docker-ce,镜像存储路径默认在系统盘,而系统盘只剩5GB空间了。你安装时一定要注意,Linux系统 用Docker官方源(” rel=”nofollow”),别用系统自带的旧版本,不然后面麻烦不断。

装好Docker后,第一件事是配置镜像加速。国内直接拉取Docker Hub的镜像会很慢,我一般用阿里云的镜像加速器(需要注册阿里云账号,在容器镜像服务里获取专属加速地址)。配置方法很简单,Windows/Mac在Docker Desktop的设置里填加速地址,Linux创建/etc/docker/daemon.json文件,写入:

{

"registry-mirrors": ["https://你的加速地址.mirror.aliyuncs.com"]

}

保存后重启Docker(sudo systemctl restart docker),这样拉取镜像速度能快10倍以上。

接下来是核心操作,你只要记住三个“老朋友”:镜像(Image)、容器(Container)、仓库(Repository)。我喜欢把镜像比作“食谱”,容器是“按食谱做出来的菜”,仓库就是“食谱大全”。你可以从仓库下载别人的“食谱”(拉取镜像),也可以自己写“食谱”(制作镜像),然后用“食谱”做出无数份“菜”(启动容器)。

最常用的命令

(这些我贴在桌面便利贴上,前两周每天都要查):

  • 拉取镜像:docker pull [镜像名]:[标签],比如拉取最新版Nginx:docker pull nginx:latest
  • 查看本地镜像:docker images
  • 启动容器:docker run -d -p 8080:80 name mynginx nginx,这里-d是后台运行,-p是端口映射(把容器的80端口映射到主机的8080端口),name给容器起个名字
  • 查看运行中的容器:docker ps,加-a能看所有容器(包括停止的)
  • 停止/删除容器:docker stop mynginxdocker rm mynginx
  • 新手必知

    :容器删除后,里面的数据也会跟着删!如果你要保存数据,一定要用“数据卷”(Volume)。比如启动MySQL时,我会用docker run -d -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 name mymysql mysql,这里-v mysql-data:/var/lib/mysql就是把容器的/var/lib/mysql目录挂载到名为mysql-data的数据卷,就算删了容器,数据还在数据卷里。

    微服务部署实战:用Docker Compose编排多容器应用

    如果你开发的是微服务项目,比如一个Web应用需要搭配数据库、Redis、消息队列,总不能一个个手动启动容器吧?这时候Docker Compose就派上用场了。它相当于一个“容器管家”,你写个配置文件(docker-compose.yml),告诉它要启动哪些容器、容器之间怎么连接、需要什么环境变量,然后一句docker-compose up -d就能把整个服务栈跑起来。

    我上个月做的一个小项目,用的是“Spring Boot后端 + Vue前端 + MySQL数据库 + Redis缓存”,四个服务用Docker Compose一键部署,比之前手动配Nginx反向代理、改数据库连接地址快多了。下面我带你写一个简单的docker-compose.yml,你跟着做一遍就明白了:

    version: '3'
    

    services:

    web: # Web服务

    image: nginx:latest

    ports:

  • "80:80"
  • volumes:

  • ./html:/usr/share/nginx/html # 挂载本地html目录到容器
  • depends_on:

  • db # 依赖db服务,会先启动db再启动web
  • db: # 数据库服务

    image: mysql:8.0

    environment:

  • MYSQL_ROOT_PASSWORD=123456 # 数据库密码
  • MYSQL_DATABASE=testdb # 自动创建数据库
  • volumes:

  • mysql-data:/var/lib/mysql # 数据卷持久化数据
  • volumes:

    mysql-data: # 定义数据卷

    这个配置文件定义了两个服务:web(Nginx)和db(MySQL)。depends_on确保db先启动,volumes挂载本地文件和数据卷,ports映射端口。你把这个文件保存到本地,在文件所在目录执行docker-compose up -d,Docker Compose就会自动拉取镜像、创建网络、启动容器,整个过程不到1分钟。

    服务间通信

    :你可能会问,web服务怎么连接db服务?Docker Compose会自动创建一个网络,容器之间可以用服务名互相访问。比如在Nginx的配置文件里,数据库连接地址可以写db:3306(服务名:端口),不用记IP地址,特别方便。 我 的技巧:写docker-compose.yml时,最好给每个服务加上restart: always,这样容器挂了会自动重启;环境变量多的话,用.env文件存(比如把数据库密码写在.env里,配置文件里用${MYSQL_PASSWORD}引用),别直接写在yml里,安全又好维护。

    如果你想自己制作镜像,需要写Dockerfile。比如你有个Node.js项目,Dockerfile可以这么写:

    FROM node:16 # 基础镜像
    

    WORKDIR /app # 工作目录

    COPY package*.json ./ # 复制依赖文件

    RUN npm install # 安装依赖

    COPY . . # 复制项目文件

    EXPOSE 3000 # 暴露端口

    CMD ["node", "app.js"] # 启动命令

    然后执行docker build -t mynodeapp .就能生成镜像。我之前帮一个前端同事把他的React项目做成镜像,他惊讶地说:“原来不用配Node环境,直接启动容器就能跑?” 是的,这就是Docker的魅力——把应用和依赖“打包”成一个独立的“快递箱”,扔到任何支持Docker的环境都能开箱即用。

    现在你可以试试:找个自己的小项目,按照上面的步骤用Docker跑起来,遇到问题别慌,Docker的错误提示通常很友好,比如“port is already allocated”就是端口被占用了,换个端口或者停掉占用的服务就行。如果实在解决不了,欢迎在评论区告诉我你的操作步骤和报错信息,我看到会回复。

    对了,Docker官方有个“Docker Hub”(” rel=”nofollow”),里面有几百万个现成的镜像,你要找什么服务(Redis、MongoDB、Elasticsearch)直接搜,基本都能找到官方镜像,记得看“Pulls”数,优先选下载量大的,靠谱!

    你按这些步骤操作时,有没有发现Docker其实没那么难?最开始我也觉得这是运维的活儿,不敢碰,后来逼着自己用了两周,现在开发新项目第一反应就是“这个用Docker怎么部署”。技术这东西,别怕,动手试试就会了。


    说实话,零基础学Docker,官方文档真得好好啃啃,但你可能会觉得纯文字有点枯燥——我当时就是这样,对着Docker官网的“Get Started”看了半小时,脑子里全是“镜像层”“联合文件系统”这些词,越看越晕。后来我发现个小技巧:先快速过一遍官方文档(” rel=”nofollow”)的目录,知道大概有哪些核心概念,不用死磕细节,然后去找配套的视频教程跟着操作。B站上“尚硅谷Docker教程”和“狂神说Docker”都挺适合新手,老师会一步步演示安装、拉镜像、启动容器,你跟着敲命令,边做边理解,比干看文档快多了。我记得有次跟着视频学“数据卷挂载”,老师用“给容器配个‘外挂硬盘’”来比喻,一下子就懂了——原来数据卷就是让容器里的数据“住”到主机上,就算容器删了,数据还在,这种生活化的解释特别好记。

    等你对基础操作有点感觉了,推荐看看《Docker实战》这本书,里面全是实战案例,比如怎么用Docker部署Java项目、怎么优化镜像大小,每个例子都有详细步骤,不像有些技术书光讲理论。我去年带的一个实习生,看完这本书第三章,就自己把他的Spring Boot小项目打包成了Docker镜像,还跑来跟我炫耀“现在部署只需要一条命令,比之前配Tomcat快10倍”。不过光看书还不够,一定要动手做自己的项目——哪怕是个简单的个人博客,用Docker跑起来Nginx+MySQL,过程中肯定会遇到问题:比如Nginx启动后访问不了,可能是端口没映射对;MySQL连不上,说不定是密码环境变量没设对。这时候别慌,去Docker Hub(” rel=”nofollow”)搜对应的镜像文档,比如你用MySQL,直接搜“mysql”,官方镜像页面里会写清楚启动命令、环境变量、数据卷挂载方法,甚至常见问题都有解答。要是还解决不了,Stack Overflow上搜报错信息,十有八九能找到类似问题,我之前遇到“容器启动后立即退出”的问题,就是在上面看到“得加交互参数或后台运行”的答案,一下子就解决了。


    安装Docker时电脑配置有什么要求?

    Docker对配置要求不高,主流电脑基本都能满足。Windows系统需要Windows 10 64位专业版/企业版(支持Hyper-V)或Windows 10家庭版配合WSL 2;Mac需要macOS 10.15+(Catalina及以上),M1/M2芯片需下载Apple Silicon版Docker Desktop;Linux系统推荐Ubuntu 18.04+、CentOS 7+等,内存 至少4GB(运行多个容器时 8GB+),硬盘预留10GB以上空间存放镜像和容器。

    Docker镜像和容器有什么区别?

    可以简单理解:镜像(Image)是“只读模板”,包含运行应用所需的代码、依赖、配置等,比如“Nginx镜像”“MySQL镜像”,相当于“食谱”;容器(Container)是镜像的“运行实例”,是动态的、可操作的,相当于“按食谱做出的菜”。一个镜像可以创建多个容器,容器删除后不影响镜像,镜像修改后需要重新创建容器才能生效。

    删除容器后,里面的数据会丢失吗?如何避免?

    默认情况下会丢失。因为容器本身是临时的,删除容器时,容器内的文件系统也会被删除。避免数据丢失的方法是使用“数据卷(Volume)”或“绑定挂载”:数据卷是Docker管理的持久化存储,通过-v 卷名:容器内路径挂载(如docker run -v mysql-data:/var/lib/mysql mysql);绑定挂载是将主机本地目录直接挂载到容器,通过-v 主机路径:容器内路径(如docker run -v /home/data:/app/data nginx),两种方式都能让数据独立于容器存在。

    什么时候需要用Docker Compose?和直接用docker run有什么区别?

    当你需要同时运行多个关联容器(比如Web服务+数据库+缓存)时,推荐用Docker Compose。直接用docker run需要手动执行多条命令,设置端口映射、网络连接、依赖顺序等,容易出错;而Docker Compose通过一个docker-compose.yml文件定义所有容器的配置(镜像、端口、 volumes、依赖关系等),执行docker-compose up -d就能一键启动所有服务,还支持docker-compose down一键停止并清理,适合本地开发、测试环境或简单的多容器部署场景。

    零基础学Docker,除了这篇教程,还有哪些推荐的学习资源?

    推荐从官方文档和实操结合学习:Docker官方文档(https://docs.docker.com/get-started/)有清晰的入门指南;B站“尚硅谷Docker教程”“狂神说Docker”等视频教程(适合喜欢看视频学习的同学);书籍方面,《Docker实战》《Docker容器与容器云》适合系统学习;另外可以多动手实践,比如用Docker部署自己的小项目(如个人博客、Demo应用),遇到问题查Docker Hub镜像文档(https://hub.docker.com/)或Stack Overflow,实战中进步最快。

    0
    显示验证码
    没有账号?注册  忘记密码?