Docker 是一个开源的容器化平台,用于开发、部署和运行应用程序。它通过将应用程序及其依赖项打包到一个轻量级的、可移植的容器中,实现了应用程序的快速部署和跨环境一致性。无论是开发人员、测试人员还是运维人员,都可以通过 Docker 提高工作效率。
Docker 的核心概念
- 容器(Container)
容器是一个轻量级的、独立的、可执行的软件包,包含运行应用程序所需的所有内容(代码、运行时、库、环境变量等)。
容器与宿主机共享操作系统内核,因此比虚拟机更轻量、启动更快。
- 镜像(Image)
镜像是容器的模板,是一个只读的文件系统,包含运行容器所需的代码和依赖。
镜像可以通过 Dockerfile 构建,也可以从 Docker Hub 等镜像仓库拉取。
- Dockerfile
Dockerfile 是一个文本文件,包含一系列指令,用于定义如何构建 Docker 镜像。
示例:
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/main.py"]
- Docker Hub
Docker Hub 是一个公共的镜像仓库,用户可以从中拉取官方或社区提供的镜像,也可以上传自己的镜像。
- Docker Compose
Docker Compose 是一个工具,用于定义和运行多容器应用程序。通过一个 docker-compose.yml 文件,可以管理多个容器的配置和依赖关系。
Docker 的优势
- 一致性
容器化确保应用程序在不同环境(开发、测试、生产)中运行一致,避免“在我机器上能运行”的问题。
- 轻量高效
容器共享宿主机的操作系统内核,比虚拟机更轻量,启动更快,资源占用更少。
- 可移植性
容器可以在任何支持 Docker 的平台上运行,包括物理机、虚拟机、云服务器等。
- 隔离性
每个容器都是独立的,拥有自己的文件系统、网络和进程空间,互不干扰。
- 快速部署
通过镜像可以快速启动容器,极大地简化了应用程序的部署流程。
Docker 的典型使用场景
- 微服务架构
每个微服务可以打包为一个独立的容器,便于开发、测试和部署。
- 持续集成/持续部署(CI/CD)
在 CI/CD 流水线中使用 Docker,确保构建和测试环境的一致性。
- 开发环境标准化
开发者可以通过 Docker 快速搭建一致的开发环境,避免环境配置问题。
- 云原生应用
Docker 是云原生应用的核心技术之一,常用于 Kubernetes、OpenShift 等平台。
- 快速原型开发
通过 Docker 可以快速启动各种服务(如数据库、消息队列等),方便开发和测试。
Docker 的基本工作流程
- 编写 Dockerfile 定义镜像。
- 使用 docker build 构建镜像。
- 使用 docker run 运行容器。
- 将镜像推送到 Docker Hub 或其他镜像仓库。
- 在其他环境中拉取镜像并运行容器。
镜像常用命令
1.拉取镜像
从 Docker Hub 或其他镜像仓库拉取镜像。
docker pull <镜像名>:<标签>
示例:
docker pull ubuntu:20.04
2.查看本地镜像
列出本地所有镜像。
docker images
3.删除镜像
删除本地镜像。
docker rmi <镜像名或ID>
4.构建镜像
根据 Dockerfile 构建镜像。
docker build -t <镜像名>:<标签>
示例:
docker build -t myapp:1.0 .
5.导出镜像
将镜像保存为 tar 文件。
docker save -o <文件名>.tar <镜像名>
6.导入镜像
从 tar 文件加载镜像。
docker load -i <文件名>.tar
容器相关命令
1.运行容器
基于镜像启动一个新容器。
docker run [选项] <镜像名>
常用选项:
-d: 后台运行( detached 模式)。
-p <主机端口>:<容器端口>: 端口映射。
-v <主机目录>:<容器目录>: 挂载卷。
--name <容器名>: 指定容器名称。
-e <环境变量>: 设置环境变量。
--rm: 容器退出后自动删除。
示例:
docker run -d -p 8080:80 --name mynginx nginx
2.查看运行中的容器
列出正在运行的容器。
docker ps
查看所有容器(包括已停止的):
docker ps -a
3.启动/停止/重启容器
docker start <容器名或ID>
docker stop <容器名或ID>
docker restart <容器名或ID>
4.进入容器
进入正在运行的容器的终端。
docker exec -it <容器名或ID> /bin/bash
5.查看容器日志
查看容器的日志输出。
docker logs <容器名或ID>
6.删除容器
删除已停止的容器。
docker rm <容器名或ID>
强制删除运行中的容器:
docker rm -f <容器名或ID>
7.查看容器详细信息
查看容器的配置和状态。
docker inspect <容器名或ID>
8.复制文件
在容器和主机之间复制文件。
docker cp <容器名或ID>:<容器路径> <主机路径> # 从容器复制到主机
docker cp <主机路径> <容器名或ID>:<容器路径> # 从主机复制到容器
网络相关命令
1.查看网络列表
列出所有 Docker 网络。
docker network ls
2.创建网络
创建一个自定义网络。
docker network create <网络名>
3.连接容器到网络
将容器连接到指定网络。
docker network connect <网络名> <容器名或ID>
4.断开容器与网络的连接
将容器从指定网络断开。
docker network disconnect <网络名> <容器名或ID>
5.查看网络详情
查看网络的详细信息。
docker network inspect <网络名>
卷相关命令
1.查看卷列表
列出所有 Docker 卷。
docker volume ls
2.创建卷
创建一个新的卷。
docker volume create <卷名>
3.查看卷详情
查看卷的详细信息。
docker volume inspect <卷名>
4.删除卷
删除未使用的卷。
docker volume rm <卷名>
其他常用命令
1.查看 Docker 版本
docker --version
2.查看 Docker 系统信息
docker info
3.清理未使用的资源
删除未使用的镜像、容器、网络和卷。
docker system prune
强制清理所有未使用的资源:
docker system prune -a
4.查看容器资源使用情况
查看容器的 CPU、内存等资源使用情况。
docker stats <容器名或ID>
5.查看 Docker 日志
查看 Docker 守护进程的日志。
journalctl -u docker.service
Docker Compose 常用命令
1.启动服务
根据 docker-compose.yml 启动服务。
docker-compose up
后台运行:
docker-compose up -d
2.停止服务
停止并删除容器。
docker-compose down
3.查看服务状态
查看当前服务的状态。
docker-compose ps
4.查看服务日志
查看服务的日志输出。
docker-compose logs
5.重启服务
重启服务。
docker-compose restart
以上是 Docker 的常用命令,涵盖了大部分日常操作场景。如果需要更详细的帮助,可以使用 docker --help 或 docker <命令> --help 查看具体命令的用法。
推荐学习资源:Docker 教程 | 菜鸟教程
Tags:重启容器