Docker入门指南:概念、安装与基本使用

Docker技术入门指南
1. Docker简介
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows机器上。
1.1 核心概念
- 容器(Container):独立运行的一个或一组应用
- 镜像(Image):用于创建容器的模板
- 仓库(Repository):用于存放镜像的地方
- Docker引擎(Docker Engine):用于运行和管理容器的核心组件
1.2 Docker架构
┌─────────────────────┐
│ Docker Client │
└─────────┬───────────┘
│
┌─────────▼───────────┐
│ Docker Daemon │
└─────────┬───────────┘
│
┌─────────▼───────────┐
│ Containers│Images │
└─────────────────────┘
2. 安装Docker
2.1 Ubuntu安装
# 更新包索引
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=amd64 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引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
2.2 CentOS安装
# 安装必要的系统工具
sudo yum install -y yum-utils
# 添加软件源信息
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io
3. Docker基本操作
3.1 服务管理
# 启动Docker服务
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
# 查看Docker状态
sudo systemctl status docker
3.2 镜像操作
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx:latest
# 列出本地镜像
docker images
# 删除镜像
docker rmi nginx:latest
3.3 容器操作
# 创建并启动容器
docker run -d --name mynginx -p 80:80 nginx
# 列出运行中的容器
docker ps
# 列出所有容器
docker ps -a
# 停止容器
docker stop mynginx
# 启动容器
docker start mynginx
# 删除容器
docker rm mynginx
4. Docker网络配置
4.1 网络类型
- bridge:默认网络驱动程序
- host:容器使用主机网络
- none:禁用所有网络
- overlay:用于Docker Swarm服务
# 创建自定义网络
docker network create mynetwork
# 列出网络
docker network ls
# 查看网络详情
docker network inspect mynetwork
5. 数据管理
5.1 数据卷(Volumes)
# 创建数据卷
docker volume create mydata
# 使用数据卷运行容器
docker run -d \
--name devtest \
-v mydata:/app \
nginx:latest
5.2 绑定挂载(Bind Mounts)
# 将主机目录挂载到容器
docker run -d \
--name webserver \
-v /src/webapp:/usr/share/nginx/html \
nginx:latest
6. Docker Compose基础
# docker-compose.yml示例
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
7. 最佳实践
-
安全性建议
- 使用非root用户运行Docker守护进程
- 定期更新Docker版本
- 使用安全的基础镜像
-
性能优化
- 合理使用多阶段构建
- 优化镜像大小
- 使用合适的存储驱动
-
开发建议
- 使用.dockerignore文件
- 编写清晰的Dockerfile
- 合理使用缓存机制
8. 常见问题排查
8.1 容器启动失败
# 查看容器日志
docker logs container_id
# 查看容器详细信息
docker inspect container_id
8.2 存储空间问题
# 清理未使用的对象
docker system prune
# 查看Docker使用的磁盘空间
docker system df
8.3 网络连接问题
# 检查容器网络
docker network inspect bridge
# 进入容器进行网络诊断
docker exec -it container_id /bin/bash