从零开始玩转Docker:镜像、容器与仓库实战指南

一、Docker简介:为何选择容器化技术?

Docker是一种开源的容器化技术,通过将应用程序及其依赖打包成独立的容器,实现跨平台、跨环境的快速部署。相较于传统虚拟机,Docker具有轻量级、启动快、资源占用少等优势,尤其适合微服务架构和持续集成/持续部署(CI/CD)场景。

核心优势

  • 环境一致性:开发、测试、生产环境完全一致,避免“在我机器上能运行”的问题。
  • 资源高效:容器共享主机内核,无需模拟完整操作系统,资源利用率更高。
  • 快速部署:秒级启动容器,支持横向扩展,适应高并发需求。

二、安装与配置:快速搭建Docker环境

1. 安装Docker

Linux系统(以Ubuntu为例)

  1. # 卸载旧版本(如有)
  2. sudo apt-get remove docker docker-engine docker.io containerd runc
  3. # 安装依赖
  4. sudo apt-get update
  5. sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  6. # 添加Docker官方GPG密钥
  7. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  8. # 添加稳定版仓库
  9. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  10. # 安装Docker引擎
  11. sudo apt-get update
  12. sudo apt-get install docker-ce docker-ce-cli containerd.io
  13. # 验证安装
  14. sudo docker run hello-world

Windows/macOS:下载Docker Desktop,按向导安装即可。

2. 配置Docker

  • 国内镜像加速:修改/etc/docker/daemon.json(Linux)或Docker Desktop设置(Windows/macOS),添加阿里云/腾讯云等镜像源:

    1. {
    2. "registry-mirrors": ["https://<your-mirror-id>.mirror.aliyuncs.com"]
    3. }

    重启Docker服务生效。

  • 用户组管理:将当前用户加入docker组,避免每次操作需sudo

    1. sudo usermod -aG docker $USER
    2. newgrp docker # 立即生效

三、镜像管理:构建与拉取

1. 镜像基础概念

镜像(Image)是容器的只读模板,包含应用程序、依赖库和配置文件。可通过docker images查看本地镜像列表。

2. 拉取官方镜像

  1. docker pull nginx:latest # 拉取最新版Nginx镜像
  2. docker pull ubuntu:20.04 # 拉取Ubuntu 20.04镜像

3. 自定义镜像构建

使用Dockerfile定义镜像构建步骤,示例:

  1. # 基于Ubuntu基础镜像
  2. FROM ubuntu:20.04
  3. # 设置维护者信息
  4. LABEL maintainer="yourname@example.com"
  5. # 安装Nginx
  6. RUN apt-get update && \
  7. apt-get install -y nginx && \
  8. rm -rf /var/lib/apt/lists/*
  9. # 复制配置文件
  10. COPY nginx.conf /etc/nginx/nginx.conf
  11. # 暴露端口
  12. EXPOSE 80
  13. # 启动Nginx
  14. CMD ["nginx", "-g", "daemon off;"]

构建镜像:

  1. docker build -t my-nginx:v1 . # -t指定标签

4. 镜像标签与推送

  • 打标签docker tag my-nginx:v1 myrepo/my-nginx:v1
  • 推送到仓库:需先登录Docker Hub或私有仓库:
    1. docker login
    2. docker push myrepo/my-nginx:v1

四、容器操作:运行与维护

1. 启动容器

  1. docker run -d --name my-nginx -p 8080:80 my-nginx:v1
  2. # -d 后台运行
  3. # --name 指定容器名
  4. # -p 主机端口:容器端口

2. 常用命令

  • 进入容器docker exec -it my-nginx /bin/bash
  • 查看日志docker logs -f my-nginx
  • 停止/启动容器docker stop/start my-nginx
  • 删除容器docker rm my-nginx(需先停止)

3. 数据管理

  • 绑定挂载:将主机目录映射到容器:
    1. docker run -v /host/path:/container/path my-nginx:v1
  • 数据卷:创建持久化存储:
    1. docker volume create my-vol
    2. docker run -v my-vol:/data my-nginx:v1

五、仓库管理:私有与公有

1. Docker Hub

公有仓库,免费存储公开镜像,付费可建私有仓库。操作步骤:

  1. 注册Docker Hub账号。
  2. 登录本地Docker:docker login
  3. 推送镜像:docker push username/repo:tag

2. 私有仓库搭建

使用官方registry镜像快速部署:

  1. docker run -d -p 5000:5000 --name registry registry:2

推送镜像到私有仓库:

  1. docker tag my-nginx:v1 localhost:5000/my-nginx:v1
  2. docker push localhost:5000/my-nginx:v1

六、进阶技巧:提升效率

1. Docker Compose

通过YAML文件定义多容器应用,示例docker-compose.yml

  1. version: '3'
  2. services:
  3. web:
  4. image: my-nginx:v1
  5. ports:
  6. - "8080:80"
  7. db:
  8. image: mysql:5.7
  9. environment:
  10. MYSQL_ROOT_PASSWORD: example

启动服务:

  1. docker-compose up -d

2. 网络配置

  • 自定义网络docker network create my-net
  • 连接容器docker run --network=my-net my-nginx:v1

3. 资源限制

  • CPU/内存限制
    1. docker run --cpus=1.5 --memory=512m my-nginx:v1

七、常见问题与解决

  1. 端口冲突:检查主机端口是否被占用,或更换映射端口。
  2. 镜像拉取慢:配置国内镜像加速源。
  3. 容器无法访问:检查防火墙规则及网络模式(bridge/host)。

八、总结与展望

本文从Docker安装到镜像、容器、仓库管理,覆盖了核心操作与进阶技巧。掌握Docker后,可进一步探索Kubernetes、Service Mesh等高级容器编排技术,构建现代化云原生应用。

行动建议

  • 立即实践:从拉取一个Nginx镜像并运行开始。
  • 参与社区:关注Docker官方文档及GitHub仓库,获取最新动态。
  • 持续优化:结合CI/CD流程,将Docker融入开发工作流。

Docker不仅是工具,更是提升开发效率的利器。从零开始,逐步深入,你将发现容器化技术的无限可能!