插件窝 干货文章 如何进入Docker的世界

如何进入Docker的世界

Docker 容器 镜像 sudo 382    来源:    2025-04-28

欢迎进入Docker的世界!作为现代IT基础设施的核心技术之一,Docker能极大提升开发部署效率。以下是系统化的学习路径和实战指南:


一、理解Docker核心概念

  1. 容器与虚拟机的区别

    • 容器共享主机OS内核,轻量级且秒级启动
    • 虚拟机需要完整OS,资源占用大
    • 图示理解:Host OS → Docker Engine → Containers (App+A)
  2. 关键术语

    • 镜像(Image):只读模板(如ubuntu:20.04
    • 容器(Container):镜像的运行实例
    • Dockerfile:构建镜像的配方文件
    • Registry:镜像仓库(默认Docker Hub)

二、环境搭建(以Ubuntu为例)

# 1. 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 2. 安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# 3. 添加官方GPG密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 4. 设置仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 5. 安装Docker引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 6. 验证安装
sudo docker run hello-world

三、必备命令速查

类别 命令示例 说明
镜像管理 docker pull nginx:alpine 拉取镜像
docker build -t myapp:v1 . 构建镜像
容器操作 docker run -d -p 80:80 nginx 启动容器(后台模式)
docker exec -it [ID] bash 进入运行中的容器
状态查看 docker ps -a 查看所有容器
docker logs [ID] 查看容器日志
网络 docker network create my_net 创建自定义网络

四、第一个Docker化应用实战

  1. 创建Node.js示例应用

    // app.js
    const http = require('http');
    const server = http.createServer((req, res) => {
     res.end('Hello Docker!');
    });
    server.listen(3000);
    
  2. 编写Dockerfile

    FROM node:18-alpine
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    EXPOSE 3000
    CMD ["node", "app.js"]
    
  3. 构建并运行

    docker build -t my-node-app .
    docker run -p 3000:3000 -d my-node-app
    

    访问 http://localhost:3000 查看结果


五、进阶学习路线

  1. 容器编排
    • Docker Compose(多容器管理) ```yaml # docker-compose.yml version: '3' services: web: build: . ports:
      • "3000:3000" redis: image: "redis:alpine" ```
  • Kubernetes(生产级编排)
  1. 镜像优化技巧

    • 使用多阶段构建
    • 选择Alpine等小型基础镜像
    • 合并RUN指令减少镜像层
  2. 安全实践

    • 定期扫描镜像漏洞(docker scan
    • 使用非root用户运行容器
    • 限制容器资源(CPU/Memory)

六、学习资源推荐

  • 官方文档docs.docker.com
  • 交互式教程Play with Docker
  • 书籍:《Docker Deep Dive》
  • 实战项目
    1. 将传统应用容器化
    2. 搭建LNMP完整环境
    3. 实现CI/CD流水线

常见问题解决方案

  1. 权限问题:将用户加入docker组

    sudo usermod -aG docker $USER
    newgrp docker  # 立即生效
    
  2. 清理磁盘空间

    docker system prune -a --volumes
    
  3. 国内加速镜像

    // /etc/docker/daemon.json
    {
     "registry-mirrors": ["https://registry.docker-cn.com"]
    }
    

掌握这些内容后,你已经跨入Docker的大门。接下来可以通过实际项目深化理解,比如尝试将公司的微服务架构容器化,或搭建自己的私有镜像仓库。遇到具体问题时,欢迎随时交流!