Docker容器使用手册——入门篇(上)
目录
- 1. 简介
- 2. 基本概念
- 3. 安装与配置
- 4. 容器管理
- 5. 镜像管理
- 6. 网络配置
- 7. 存储管理
- 8. Docker Compose
- 9. 常见问题与解决方案
- 10. 最佳实践
- 附录:常用命令速查表
1. 简介
1.1 什么是Docker
Docker是一个开源的容器化平台,它允许开发者打包他们的应用及其依赖项到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
1.2 Docker的优势
- 简化部署:将应用及其依赖打包到容器中,保证环境一致性
- 隔离性:容器之间相互隔离,避免环境冲突
- 轻量级:容器共享主机内核,启动速度快,资源占用少
- 可移植性:容器可以在不同环境中一致运行
- 扩展性:易于实现容器编排和自动扩展
- 版本控制:可以对容器镜像进行版本管理
1.3 Docker的应用场景
- 应用程序容器化
- 微服务架构实现
- 持续集成/持续部署(CI/CD)
- 开发环境一致性保障
- 高可用系统构建
- 测试环境快速搭建
2. 基本概念
2.1 容器(Container)
容器是Docker的基本执行单元,是镜像的运行时实例。容器包含应用及其依赖,但共享主机操作系统内核。
2.2 镜像(Image)
镜像是一个只读的模板,包含运行容器所需的所有文件系统结构和内容。镜像可以基于其他镜像构建,通过Dockerfile定义构建过程。
2.3 Dockerfile
Dockerfile是一个文本文件,包含构建Docker镜像所需的一系列命令。每个命令在镜像中创建一个新的层。
2.4 仓库(Repository)
仓库是集中存放Docker镜像的地方,可以是公开的(如Docker Hub)或私有的。仓库分为公共仓库和私有仓库。
2.5 注册表(Registry)
注册表是存放仓库的服务器,如Docker Hub是最大的公共注册表。
2.6 卷(Volume)
卷是用于持久化数据的机制,允许数据在容器间共享或在容器停止后保留。
3. 安装与配置
3.1 在Windows上安装Docker
-
系统要求:
- Windows 10 64位专业版、企业版或教育版(1607+),或Windows 11
- 启用Hyper-V和容器功能
- 至少4GB RAM
-
安装步骤:
- 从Docker官网下载Docker Desktop安装包
- 运行安装程序,按照提示完成安装
- 安装完成后重启计算机
-
验证安装:
- 打开命令提示符或PowerShell
- 运行
docker version和docker run hello-world验证安装
3.2 在macOS上安装Docker
-
系统要求:
- macOS 11 Big Sur或更高版本
- 至少4GB RAM
-
安装步骤:
- 从Docker官网下载Docker Desktop for Mac安装包
- 拖动Docker应用到Applications文件夹
- 从Applications文件夹启动Docker
-
验证安装:
- 打开终端
- 运行
docker version和docker run hello-world验证安装
3.3 在Linux上安装Docker
-
Ubuntu/Debian安装:
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io -
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 docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker -
验证安装:
sudo docker version sudo docker run hello-world
3.4 配置Docker
-
配置国内镜像源:
- 编辑
/etc/docker/daemon.json(Linux)或在Docker Desktop的设置中配置
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","https://mirror.baidubce.com"] }- 重启Docker服务:
sudo systemctl restart docker(Linux)或重启Docker Desktop
- 编辑
-
配置用户权限:
sudo usermod -aG docker $USER- 重新登录以应用更改
4. 容器管理
4.1 创建与运行容器
-
基本命令:
docker run [选项] 镜像名 [命令] [参数] -
常用选项:
-d: 后台运行容器-p 主机端口:容器端口: 端口映射-v 主机路径:容器路径: 挂载卷--name 容器名: 指定容器名称-e 变量名=值: 设置环境变量--restart=always: 设置容器自动重启
-
示例:
# 运行一个Nginx容器,映射80端口,命名为my-nginx docker run -d -p 80:80 --name my-nginx nginx# 运行MySQL容器,设置密码,挂载数据卷 docker run -d -p 3306:3306 --name mysql \-e MYSQL_ROOT_PASSWORD=password \-v mysql-data:/var/lib/mysql \mysql:8.0
4.2 查看容器
-
列出所有运行中的容器:
docker ps -
列出所有容器(包括已停止的):
docker ps -a -
查看容器详情:
docker inspect 容器名或ID -
查看容器日志:
docker logs [选项] 容器名或ID # 实时查看日志 docker logs -f 容器名或ID -
查看容器内进程:
docker top 容器名或ID
4.3 容器的启动、停止、重启
-
启动容器:
docker start 容器名或ID -
停止容器:
docker stop 容器名或ID -
重启容器:
docker restart 容器名或ID -
强制停止容器:
docker kill 容器名或ID
4.4 进入容器
-
使用exec进入容器(推荐):
docker exec -it 容器名或ID /bin/bash # 对于Alpine基础的容器 docker exec -it 容器名或ID /bin/sh -
使用attach连接容器:
docker attach 容器名或ID
4.5 删除容器
-
删除单个容器:
docker rm 容器名或ID -
强制删除运行中的容器:
docker rm -f 容器名或ID -
删除所有已停止的容器:
docker container prune
5. 镜像管理
5.1 拉取镜像
# 拉取最新版本docker pull 镜像名
# 拉取指定版本
docker pull 镜像名:标签# 示例
docker pull nginx:latest
docker pull mysql:5.7
5.2 查看镜像
# 列出所有本地镜像
docker images# 查看镜像详情
docker inspect 镜像名或ID# 查看镜像历史
docker history 镜像名或ID
5.3 删除镜像
# 删除单个镜像
docker rmi 镜像名或ID# 强制删除镜像
docker rmi -f 镜像名或ID# 删除所有未使用的镜像
docker image prune -a
5.4 构建镜像
-
创建Dockerfile:
# 使用官方Python镜像作为基础镜像 FROM python:3.9-slim# 设置工作目录 WORKDIR /app# 复制requirements.txt到容器 COPY requirements.txt .# 安装依赖 RUN pip install --no-cache-dir -r requirements.txt# 复制应用代码 COPY . .# 暴露端口 EXPOSE 5000# 设置环境变量 ENV NAME World# 运行应用 CMD ["python", "app.py"] -
构建镜像:
docker build -t 镜像名:标签 路径 # 示例 docker build -t myapp:v1 . -
构建优化技巧:
- 使用多阶段构建减小镜像体积
- 按依赖变化频率排序Dockerfile指令
- 使用
.dockerignore文件排除不需要的文件 - 选择更小的基础镜像(如Alpine)
5.5 推送镜像
-
登录Docker Hub:
docker login -
标记镜像:
docker tag 本地镜像名:标签 用户名/仓库名:标签 -
推送镜像:
docker push 用户名/仓库名:标签
