Docker基础:容器技术入门
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等编排工具打下坚实基础。