什么是Docker
Docker 是一个开源平台,用于开发、交付和运行应用程序。它通过容器技术将应用程序及其依赖项打包在一个标准化的单元中,使得应用程序能够在不同的环境中一致地运行。容器是轻量级、可移植的,因此非常适合云计算、持续集成和微服务架构等场景。
Docker 的优势
它提供了轻量级、快速启动的容器化技术,使得应用能够在不同环境中保持一致性。通过将应用及其所有依赖打包成镜像,Docker 实现了高度的可移植性,无论是在本地开发、测试环境,还是在云端生产环境,都能够确保应用的行为一致。此外,Docker 支持微服务架构和自动化部署,能够大大简化持续集成/持续部署(CI/CD)流程,提升开发和运维效率。
Docker 的核心概念
-
容器 (Containers):
- 容器是 Docker 的核心概念,类似于一个轻量级的虚拟机,但与虚拟机不同的是,容器共享操作系统的内核,而不需要虚拟化整个操作系统。
- 每个容器运行一个独立的应用和它的所有依赖项,这样可以确保应用在开发、测试和生产环境中的一致性。
-
镜像 (Images):
- 镜像是一个包含操作系统、应用程序及其所有依赖项的只读模板。镜像可以理解为容器的蓝图,容器是镜像的实例。
- Docker 官方和社区提供了大量的预构建镜像,用户也可以自定义镜像来满足自己的需求。
-
Dockerfile:
- Dockerfile 是一种文本文件,其中包含了创建 Docker 镜像的所有指令和配置。这些指令可以包括基础镜像的选择、所需的软件包安装、应用配置等。
- 通过运行
docker build
命令,可以根据 Dockerfile 自动构建镜像。
Docker常用命令
1. 基本命令
-
查看 Docker 版本
docker --version
用于查看当前安装的 Docker 版本。
-
查看帮助文档
docker --help
显示 Docker 命令行的帮助信息。
2. 镜像相关命令
镜像是一个包含操作系统、应用程序及其所有依赖项的只读模板。镜像可以理解为容器的蓝图,容器是镜像的实例。
-
查看本地镜像
docker images
列出本地所有的 Docker 镜像,包括镜像的名称、标签、镜像ID、创建时间等信息。
-
拉取镜像
docker pull <image_name>:<tag>
从 Docker Hub 或其他 Docker 仓库拉取指定的镜像。例如:
docker pull ubuntu:20.04
-
删除本地镜像
docker rmi <image_id>
删除指定的镜像,
<image_id>
可以通过docker images
查看。 -
构建镜像
docker build -t <image_name>:<tag> <path_to_dockerfile>
从指定目录的
Dockerfile
构建一个新的 Docker 镜像。例如:docker build -t myapp:latest .
3. 容器相关命令
容器是 Docker 的核心概念,类似于一个轻量级的虚拟机,但与虚拟机不同的是,容器共享操作系统的内核,而不需要虚拟化整个操作系统。
-
查看本地容器
docker ps
列出当前运行的容器。如果想查看所有容器(包括停止的容器),可以加上
-a
:docker ps -a
-
启动容器
docker start <container_id>
启动已存在的容器。
-
停止容器
docker stop <container_id>
停止正在运行的容器。
-
创建并运行容器
docker run <options> <image_name>
从指定镜像启动一个容器并运行。例如:
docker run -d -p 8080:80 --name my_nginx nginx
其中,
-d
表示后台运行容器,-p
用于端口映射,--name
指定容器名称。 -
进入容器
docker exec -it <container_id> /bin/bash
进入一个正在运行的容器,
-it
参数表示交互模式,/bin/bash
打开容器内的 bash shell。 -
查看容器日志
docker logs <container_id>
查看指定容器的日志输出。
-
删除容器
docker rm <container_id>
删除一个已停止的容器。如果容器正在运行,需要先停止容器再删除:
docker stop <container_id> && docker rm <container_id>
-
查看容器内的进程
docker top <container_id>
4. 网络相关命令
-
查看 Docker 网络
docker network ls
列出所有 Docker 网络。
-
创建 Docker 网络
docker network create <network_name>
-
连接容器到网络
docker network connect <network_name> <container_id>
-
断开容器与网络的连接
docker network disconnect <network_name> <container_id>
5. 卷(Volumes)相关命令
-
查看 Docker 卷
docker volume ls
-
创建 Docker 卷
docker volume create <volume_name>
-
删除 Docker 卷
docker volume rm <volume_name>
-
挂载卷
docker run -v <host_path>:<container_path> <image_name>
6. 系统相关命令
-
查看 Docker 系统信息
docker info
显示 Docker 引擎的详细信息,包括存储驱动、网络设置、容器数等。
-
清理未使用的 Docker 资源
docker system prune
清理所有未使用的容器、网络、镜像等。可以加上
-a
选项清理所有未使用的镜像。
7. 容器日志与调试命令
-
docker logs <容器ID或容器名>
用于查看运行中的容器输出的标准输出(stdout)和标准错误(stderr)日志。docker logs <container_id>
常用选项:
-
-f
:实时跟踪日志输出(类似tail -f
)。docker logs -f <container_id>
-
--tail
:显示最后 N 行日志。docker logs --tail 100 <container_id>
-
--since
:从指定时间开始查看日志。docker logs --since "2024-11-22T12:00:00" <container_id>
-
--timestamps
:显示日志的时间戳。docker logs --timestamps <container_id>
-
-
容器的进程监控
docker stats
查看所有容器的实时资源使用情况(CPU、内存、网络等)。
8. Docker Compose 命令(如果使用 Docker Compose)
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过 Compose,用户可以使用一个简单的 YAML 文件来配置应用所需的多个容器、网络、卷等资源,并通过一个命令启动整个应用的环境。Docker Compose 使得管理多容器应用变得更加简单和高效,特别适用于微服务架构和开发、测试环境的搭建。
-
启动 Docker Compose 服务
docker-compose up
启动
docker-compose.yml
文件中定义的服务。 -
后台运行 Docker Compose 服务
docker-compose up -d
-
停止 Docker Compose 服务
docker-compose down
-
查看 Docker Compose 服务日志
docker-compose logs