Skip to content

Docker 入门与实战

什么是 Docker?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

安装 Docker

Windows 安装

  1. 下载 Docker Desktop for Windows
  2. 安装并启动 Docker Desktop
  3. 验证安装:
bash
docker --version

macOS 安装

  1. 下载 Docker Desktop for Mac
  2. 安装并启动 Docker Desktop
  3. 验证安装:
bash
docker --version

Linux (Ubuntu) 安装

bash
# 更新包索引
sudo apt-get update

# 安装必要的包
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 设置稳定版仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker

Docker 基本命令

镜像操作

bash
# 搜索镜像
docker search [镜像名称]

# 拉取镜像
docker pull [镜像名称]:[标签]

# 查看本地镜像
docker images

# 删除镜像
docker rmi [镜像ID]

容器操作

bash
# 运行容器
docker run [选项] [镜像名称] [命令]

# 查看运行中的容器
docker ps

# 查看所有容器(包括停止的)
docker ps -a

# 停止容器
docker stop [容器ID]

# 启动容器
docker start [容器ID]

# 删除容器
docker rm [容器ID]

# 进入容器
docker exec -it [容器ID] /bin/bash

Dockerfile 基础

Dockerfile 是一个文本文件,包含了构建 Docker 镜像所需的所有指令。

基本指令

dockerfile
# 基础镜像
FROM node:16-alpine

# 设置工作目录
WORKDIR /app

# 复制文件到工作目录
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制应用代码
COPY . .

# 暴露端口
EXPOSE 3000

# 运行命令
CMD ["npm", "start"]

Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。

示例 docker-compose.yml

yaml
version: '3'

services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  
  db:
    image: mongo:latest
    ports:
      - "27017:27017"
    volumes:
      - mongo_data:/data/db

volumes:
  mongo_data:

常用命令

bash
# 启动服务
docker-compose up -d

# 停止服务
docker-compose down

# 查看日志
docker-compose logs

# 重新构建并启动
docker-compose up --build

最佳实践

  1. 使用官方基础镜像:优先选择官方维护的基础镜像
  2. 最小化镜像大小:使用 alpine 版本,减少不必要的包
  3. 多阶段构建:使用多阶段构建减少最终镜像大小
  4. 安全考虑:避免在镜像中存储敏感信息
  5. 适当设置健康检查:确保容器状态可监控

常见问题

端口冲突

bash
# 查看端口占用
netstat -tulpn | grep [端口号]

# 使用不同端口映射
docker run -p 8081:80 [镜像名称]

数据持久化

bash
# 使用卷挂载
docker run -v /本地路径:/容器路径 [镜像名称]

# 使用命名卷
docker volume create [卷名]
docker run -v [卷名]:/容器路径 [镜像名称]

参考资料