🐳 Docker 命令:从入门到精通,面向 DevOps 工程师
介绍
Docker是一个用于在容器内开发、交付和运行应用程序的平台。它为软件开发和部署提供了一个轻量级、可移植且一致的环境。本指南涵盖了从入门到高级的基本 Docker 命令,帮助 DevOps 工程师有效地管理其容器化应用程序。
🎯 关键概念
在深入了解命令之前,让我们先回顾一些 Docker 的基本概念:
- 镜像:一个轻量级、独立且可执行的软件包,其中包含运行软件所需的一切。
- 容器:Docker 镜像的运行时实例。
- Dockerfile:一个包含一系列关于如何构建 Docker 镜像的指令的脚本。
- Docker Compose:用于定义和运行多容器 Docker 应用程序的工具。
🏁 初级命令
1. 安装
检查 Docker 版本
docker --version
显示已安装的 Docker 版本。
2. Docker镜像
列出 Docker 镜像
docker images
列出本地计算机上的所有 Docker 镜像。
拉取 Docker 镜像
docker pull <image_name>
从镜像仓库(例如 Docker Hub)拉取 Docker 镜像。
移除 Docker 镜像
docker rmi <image_name>
从本地计算机中删除 Docker 镜像。
3. Docker容器
列出正在运行的容器
docker ps
列出所有正在运行的 Docker 容器。
列出所有容器
docker ps -a
列出所有 Docker 容器,包括已停止的容器。
运行容器
docker run -d --name <container_name> <image_name>
以分离模式运行来自 Docker 镜像的容器。
阻止容器
docker stop <container_name>
停止正在运行的 Docker 容器。
启动容器
docker start <container_name>
启动已停止的 Docker 容器。
移除容器
docker rm <container_name>
删除 Docker 容器。
查看容器日志
docker logs <container_name>
显示 Docker 容器的日志。
4. Docker 网络
列出 Docker 网络
docker network ls
列出所有 Docker 网络。
创建 Docker 网络
docker network create <network_name>
创建一个新的 Docker 网络。
将容器连接到网络
docker network connect <network_name> <container_name>
将容器连接到 Docker 网络。
断开容器与网络的连接
docker network disconnect <network_name> <container_name>
断开容器与 Docker 网络的连接。
🚀 中级命令
1. Docker 卷
列出 Docker 卷
docker volume ls
列出所有 Docker 卷。
创建 Docker 卷
docker volume create <volume_name>
创建一个新的 Docker 卷。
移除 Docker 卷
docker volume rm <volume_name>
删除 Docker 卷。
将卷挂载到容器
docker run -d --name <container_name> -v <volume_name>:/path/in/container <image_name>
将 Docker 卷挂载到容器。
2. Docker Compose
安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/<version>/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
安装 Docker Compose。
检查 Docker Compose 版本
docker-compose --version
显示已安装的 Docker Compose 版本。
Docker Compose 文件示例
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
使用 Docker Compose 定义多容器应用程序。
运行 Docker Compose
docker-compose up -d
以分离模式运行 Docker Compose 应用程序。
停止 Docker Compose
docker-compose down
停止并移除 Docker Compose 应用程序。
3. Dockerfile
Dockerfile 示例
# Use an official Python runtime as a parent image
FROM python:3.8-slim
# Set the working directory in the container
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["python", "app.py"]
为 Python 应用程序定义 Dockerfile。
构建 Docker 镜像
docker build -t <image_name> .
根据 Dockerfile 构建 Docker 镜像。
4. Docker Swarm
初始化 Docker Swarm
docker swarm init
初始化 Docker Swarm。
列出集群节点
docker node ls
列出 Docker Swarm 中的所有节点。
在 Swarm 中部署堆栈
docker stack deploy -c <compose-file> <stack_name>
在 Docker Swarm 中部署堆栈。
从 Swarm 中移除堆栈
docker stack rm <stack_name>
从 Docker Swarm 中移除一个堆栈。
5. Docker 秘籍
创建 Docker Secret
echo "my_secret_value" | docker secret create <secret_name> -
创建一个新的 Docker 密钥。
列出 Docker 密钥
docker secret ls
列出所有 Docker 密钥。
移除 Docker Secret
docker secret rm <secret_name>
删除 Docker 密钥。
🧠 高级命令
1. Docker Inspect
检查 Docker 容器
docker inspect <container_name>
显示有关 Docker 容器的详细信息。
检查 Docker 镜像
docker inspect <image_name>
显示有关 Docker 镜像的详细信息。
2. Docker 统计信息
查看容器统计信息
docker stats <container_name>
显示 Docker 容器的实时统计信息。
3. Docker 事件
查看 Docker 事件
docker events
显示来自 Docker 服务器的实时事件。
4. Docker 导出和导入
出口集装箱
docker export <container_name> -o <file_name>.tar
将 Docker 容器导出到 tar 文件。
导入容器
docker import <file_name>.tar
从 tar 文件导入容器。
5. Docker 保存和加载
保存 Docker 镜像
docker save -o <file_name>.tar <image_name>
将 Docker 镜像保存到 tar 文件。
加载 Docker 镜像
docker load -i <file_name>.tar
从 tar 文件加载 Docker 镜像。
6. Docker Prune
删除未使用的数据
docker system prune
删除未使用的 Docker 数据(镜像、容器、网络、卷)。
7. Docker 上下文
列出 Docker 上下文
docker context ls
列出所有 Docker 上下文。
创建 Docker 上下文
docker context create <context_name>
创建一个新的 Docker 上下文。
使用 Docker 上下文
docker context use <context_name>
切换到特定的 Docker 上下文。
8. Docker 构建工具包
启用 BuildKit
export DOCKER_BUILDKIT=1
docker build -t <image_name> .
启用 Docker BuildKit 以提高构建性能。
📊 最佳实践
使用版本控制
- 将您的 Dockerfile、Compose 文件和其他配置存储在版本控制系统(例如 Git)中,以便跟踪更改并与团队成员协作。
保持图像轻量级
- 通过使用多阶段构建和删除不必要的文件和依赖项来最小化 Docker 镜像的大小。
使用标签
- 使用有意义且特定于版本的标签标记 Docker 镜像,以便轻松识别和管理它们。
安全镜像和容器
- 扫描您的 Docker 镜像是否存在漏洞,并使用安全最佳实践来保护您的容器。
自动化构建和部署
- 将 Docker 与 CI/CD 流水线集成,以自动化构建、测试和部署容器化应用程序。
监控和日志
- 持续监控 Docker 容器并收集日志,以便进行故障排除和性能分析。
使用 Docker Compose 管理多容器应用程序
- 使用 Docker Compose 定义和管理多容器应用程序,使部署和扩展服务变得更加容易。
定期清理未使用的资源
- 定期清理未使用的镜像、容器、网络和卷,以释放磁盘空间并保持干净的 Docker 环境。
🚀 结论
对于 DevOps 工程师而言,掌握从入门到高级的 Docker 命令至关重要,这有助于他们高效地管理和自动化容器化应用程序。本指南全面详尽,是您驾驭 Docker 环境的宝贵参考。遵循最佳实践并充分利用这些命令,您可以确保构建强大高效的容器编排环境。
Docker 化愉快! 🎉
感谢阅读我的博客……:)
©版权所有: ProDevOpsGuy