1| 2|Docker 容器入门指南 - 天天学习技术

Docker 容器入门指南

Docker 已经成为现代软件开发和部署的必备工具。通过容器化技术,你可以轻松地打包、分发和运行应用程序,无需担心环境差异。本指南将带你从零开始掌握 Docker 的核心概念和常用操作。

什么是 Docker?

Docker 是一个开源的容器化平台,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中。与虚拟机不同,Docker 容器共享宿主机的操作系统内核,因此启动更快、资源占用更少。

  • 镜像(Image):容器的蓝图,包含运行应用所需的一切。
  • 容器(Container):镜像的运行实例,相互隔离。
  • 仓库(Registry):存储和分发镜像的地方,如 Docker Hub。

安装 Docker

在 Ubuntu 系统上一键安装 Docker:

1
2
curl -fsSL https://get.docker.com | bash
sudo usermod -aG docker $USER

安装完成后,验证是否成功:

1
docker --version

常用命令速查

镜像操作

1
2
3
4
docker pull nginx:latest          # 拉取镜像
docker images # 查看本地镜像
docker rmi nginx:latest # 删除镜像
docker build -t myapp:v1 . # 构建镜像

容器操作

1
2
3
4
5
6
7
docker run -d -p 8080:80 --name web nginx  # 启动容器
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器
docker stop web # 停止容器
docker start web # 启动已停止的容器
docker rm web # 删除容器
docker exec -it web bash # 进入容器内部

编写 Dockerfile

Dockerfile 是构建镜像的配方。以下是一个 Node.js 应用的典型示例:

1
2
3
4
5
6
7
8
9
10
11
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

最佳实践提示:

  • 使用 .dockerignore 文件排除 node_modules 等不需要的文件。
  • 合并 RUN 指令减少镜像层数。
  • 优先使用官方基础镜像(如 node:18-alpine)。

Docker Compose 多容器编排

对于需要多个服务协作的项目,Docker Compose 可以通过一个 YAML 文件定义所有服务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: example

一键启动所有服务:

1
docker-compose up -d

实用技巧

  1. 清理无用资源:定期运行 docker system prune -a 清理未使用的镜像、容器和网络。
  2. 查看日志:使用 docker logs -f container_name 实时跟踪容器日志。
  3. 数据持久化:通过 -v /host/path:/container/path 挂载卷来持久化数据。
  4. 网络模式:使用 --network host 共享宿主机网络,或创建自定义网络实现容器间通信。

总结

Docker 极大地简化了应用的部署流程:"一次构建,到处运行"。掌握上述基础操作后,你可以进一步学习 Docker Swarm、Kubernetes 等容器编排工具,构建更强大的基础设施。

容器化是云原生时代的基石,现在就开始你的 Docker 之旅吧!

作者

HanLee

发布于

2025-05-11

更新于

2025-05-11

许可协议