← 返回首页
🔧

Docker基础:容器技术入门

📂 devops ⏱ 2 min 307 words

Docker基础:容器技术入门

什么是Docker

Docker是一个开源的容器化平台,允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中。容器在任何支持Docker的环境中都能以相同方式运行。

核心概念

镜像(Image)

镜像是只读模板,包含运行应用所需的所有内容:代码、运行时、库、环境变量和配置文件。

容器(Container)

容器是镜像的运行实例,可以被创建、启动、停止、删除。

仓库(Registry)

仓库是存储和分发镜像的服务,Docker Hub是最大的公共仓库。

安装Docker

# Ubuntu/Debian
curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker

# CentOS/RHEL
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker

# 验证安装
docker --version
docker run hello-world

基本命令

镜像操作

# 搜索镜像
docker search nginx

# 拉取镜像
docker pull nginx:latest
docker pull ubuntu:22.04

# 查看本地镜像
docker images
docker image ls

# 删除镜像
docker rmi nginx:latest
docker image prune -a  # 清理无用镜像

容器操作

# 运行容器
docker run -d --name mynginx -p 80:80 nginx

# 查看运行中的容器
docker ps

# 查看所有容器
docker ps -a

# 停止容器
docker stop mynginx

# 启动容器
docker start mynginx

# 进入容器
docker exec -it mynginx bash

# 查看容器日志
docker logs -f mynginx

# 删除容器
docker rm mynginx
docker container prune  # 清理已停止容器

数据持久化

# 创建数据卷
docker volume create nginx-data

# 使用数据卷运行容器
docker run -d \
  --name mynginx \
  -v nginx-data:/usr/share/nginx/html \
  -p 80:80 \
  nginx

# 查看数据卷
docker volume ls
docker volume inspect nginx-data

网络管理

# 查看网络
docker network ls

# 创建自定义网络
docker network create mynet

# 使用网络运行容器
docker run -d --name mynginx --network mynet nginx

# 容器间通信
docker run -d --name app --network mynet myapp
# app容器可以通过容器名"mynginx"访问nginx

资源限制

# 限制CPU和内存
docker run -d \
  --name mynginx \
  --cpus="1.5" \
  --memory="512m" \
  -p 80:80 \
  nginx

# 查看资源使用
docker stats mynginx

实践:部署Web应用

# 创建工作目录
mkdir -p ~/myapp && cd ~/myapp

# 创建Dockerfile
cat > Dockerfile << 'EOF'
FROM nginx:alpine
COPY html/ /usr/share/nginx/html/
EXPOSE 80
EOF

# 创建HTML文件
mkdir html
echo "<h1>Hello Docker!</h1>" > html/index.html

# 构建镜像
docker build -t myweb:1.0 .

# 运行容器
docker run -d --name web -p 8080:80 myweb:1.0

# 验证
curl http://localhost:8080

Docker Compose简介

# docker-compose.yml
version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - redis
  redis:
    image: redis:alpine
# 启动服务
docker-compose up -d

# 查看状态
docker-compose ps

# 停止服务
docker-compose down

常见问题排查

# 查看容器详细信息
docker inspect mynginx

# 查看容器资源使用
docker stats --no-stream mynginx

# 导出容器文件系统
docker export mynginx > mynginx.tar

# 导入为镜像
docker import mynginx.tar mynginx:backup

总结

Docker容器技术是现代DevOps的基石。掌握Docker基础命令和概念,将为后续学习Kubernetes等编排工具打下坚实基础。