📦 一、Docker 简介
Docker 是一个开源容器化平台,能将应用和依赖打包在一个标准化的镜像中,并在任意平台上运行。相比传统虚拟机,Docker 更轻量、启动速度更快。
🛠️ 二、Docker 安装与配置
1. Windows/macOS 安装
-
下载 Docker Desktop,按提示安装。
-
安装完成后,启动 Docker Desktop,确保状态为 Running。
2. Linux 安装(以 Ubuntu 为例)
bash
复制编辑
# 更新软件包 sudo apt update # 安装 Docker sudo apt install docker.io -y # 启动并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 验证版本 docker --version
🧰 三、Docker 核心概念
概念 | 描述 |
---|---|
镜像 | 类似系统快照,包含运行应用所需的所有环境 |
容器 | 基于镜像创建的实例,轻量且隔离 |
仓库 | 存放镜像的地方,分为公有仓库和私有仓库 |
Docker Hub | 官方公共镜像仓库,地址: hub.docker.com |
🖥️ 四、Docker 常用命令
1. 镜像操作
bash
复制编辑
# 搜索镜像 docker search nginx # 拉取镜像 docker pull nginx # 查看本地镜像 docker images # 删除镜像 docker rmi nginx
2. 容器操作
bash
复制编辑
# 运行容器 docker run -d -p 8080:80 --name webserver nginx # 查看运行的容器 docker ps # 停止容器 docker stop webserver # 删除容器 docker rm webserver
🌟 五、高级用法
1. Dockerfile 自定义镜像
创建 Dockerfile
:
dockerfile
复制编辑
# 使用官方基础镜像 FROM python:3.10 # 设置工作目录 WORKDIR /app # 拷贝代码 COPY . /app # 安装依赖 RUN pip install -r requirements.txt # 运行应用 CMD ["python", "app.py"]
构建镜像并运行:
bash
复制编辑
# 构建镜像 docker build -t my-python-app . # 启动容器 docker run -d -p 5000:5000 my-python-app
2. Docker Compose 编排多个容器
创建 docker-compose.yml
:
010.sh.cn choicytravel.com xxhxw.com loushitx.com fyzxbz.com yousmedia.com kaimendiqi.com dalizhaopin.com 87i.cn sdztzgjx.com xitianshan.com shuanghedq.com ace-trans.com nuantongzhijia.com zjaiduo.com
yaml
复制编辑
version: '3' services: web: image: nginx ports: - "8080:80" db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example
一键启动:
bash
复制编辑
docker-compose up -d
🛰️ 六、实战案例:部署一个 Node.js 应用
1. 目录结构
go
复制编辑
project/ ├── app.js ├── package.json ├── Dockerfile
2. Dockerfile
dockerfile
复制编辑
FROM node:18 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["node", "app.js"]
3. 构建并运行
bash
复制编辑
docker build -t my-node-app . docker run -d -p 3000:3000 my-node-app
访问:http://localhost:3000
🛡️ 七、常见问题排查
问题 | 解决方法 |
---|---|
容器无法访问外网 | 检查宿主机网络设置或代理配置 |
镜像过大 | 优化 Dockerfile,合并 RUN 指令 |
容器无法启动,提示“port already in use” | 修改端口映射,避免冲突 |