# Docker的概念和常用命令整理 ## 一、Docker概述 ### 1.1 什么是Docker Docker是一个开源的**容器化平台**,允许开发者将应用程序及其依赖打包到轻量级、可移植的容器中。这些容器可以在任何支持Docker的环境中运行,实现了"一次构建,处处运行"的目标。 与传统虚拟化技术相比: - **虚拟机**:需要模拟完整操作系统,资源占用大 - **Docker容器**:共享主机内核,仅包含应用和依赖,启动更快(通常秒级) ### 1.2 核心概念 | 概念 | 说明 | |-------------|----------------------------------------------------------------------| | **镜像(Image)** | 只读模板,包含运行应用所需的所有文件系统结构和依赖 | | **容器(Container)** | 镜像的运行实例,具有可写层和隔离的进程空间 | | **仓库(Registry)** | 集中存放镜像的地方,Docker Hub是官方公共仓库 | | **Dockerfile** | 文本文件,包含构建镜像的指令集合 | ## 二、安装与配置 ### 2.1 主流系统安装 ```bash # Ubuntu安装示例 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # CentOS安装 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 # Windows/macOS 下载Docker Desktop安装包:https://www.docker.com/products/docker-desktop
# 国内用户建议配置镜像加速 # 创建或修改/etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn" ] } sudo systemctl restart docker
# 搜索镜像 docker search nginx # 拉取镜像(默认最新版) docker pull nginx:1.21 # 查看本地镜像 docker images docker image ls # 删除镜像 docker rmi nginx:1.21 docker image prune # 清理悬空镜像
# 示例Dockerfile FROM alpine:3.14 RUN apk add --no-cache nginx && \ mkdir -p /run/nginx COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
构建命令:
docker build -t my-nginx:v1 .
# 启动容器 docker run -d --name myweb -p 8080:80 nginx:1.21 # 常用参数: # -d: 后台运行 # -p: 端口映射(主机端口:容器端口) # -v: 数据卷挂载 # -e: 设置环境变量 # 查看运行中的容器 docker ps # 查看所有容器(包括已停止) docker ps -a # 停止/启动容器 docker stop myweb docker start myweb # 删除容器 docker rm myweb docker container prune # 清理已停止容器
# 进入容器shell docker exec -it myweb /bin/bash # 查看容器日志 docker logs -f myweb # 查看容器资源使用 docker stats myweb # 复制文件 docker cp local.txt myweb:/app/ docker cp myweb:/app/logs ./backup/
# 查看网络 docker network ls # 创建自定义网络 docker network create mynet # 容器连接指定网络 docker run -d --net=mynet --name app1 nginx # 网络连通性测试 docker exec app1 ping app2
# 创建数据卷 docker volume create db_data # 使用数据卷 docker run -d -v db_data:/var/lib/mysql mysql:8.0 # 绑定挂载(主机目录) docker run -d -v /host/path:/container/path nginx # 查看卷信息 docker volume inspect db_data
# docker-compose.yml示例 version: '3.8' services: web: image: nginx:1.21 ports: - "8000:80" volumes: - ./html:/usr/share/nginx/html db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: example
常用命令:
# 启动服务 docker-compose up -d # 查看服务状态 docker-compose ps # 停止服务 docker-compose down
# 多容器协作示例 services: app: build: . depends_on: - redis redis: image: redis:6.2 volumes: - redis_data:/data volumes: redis_data:
.dockerignore
文件排除无关文件# 多阶段构建示例 FROM golang:1.16 AS builder WORKDIR /app COPY . . RUN go build -o myapp . FROM alpine:3.14 COPY --from=builder /app/myapp /usr/local/bin/ CMD ["myapp"]
docker scan
)# 查看容器详细信息 docker inspect myweb # 查看容器进程 docker top myweb # 查看端口映射 docker port myweb
# 按时间过滤日志 docker logs --since 2023-01-01 myweb # 查看最后N行日志 docker logs --tail 100 myweb # 使用jq解析json日志 docker logs myweb | jq .
Docker通过容器化技术彻底改变了应用交付方式,主要优势包括: - 环境一致性:开发、测试、生产环境完全一致 - 快速部署:秒级启动,快速扩展 - 资源高效:比传统虚拟机更节省资源 - 生态丰富:数十万官方和社区镜像可用
掌握本文介绍的常用命令后,您已经可以完成: ✅ 镜像的获取与管理
✅ 容器的生命周期管理
✅ 网络与存储配置
✅ 多容器编排部署
建议通过实际项目练习巩固这些命令,后续可进一步学习: - Kubernetes容器编排 - 容器安全加固 - CI/CD流水线集成 - 服务网格(Service Mesh)等云原生技术 “`
注:本文实际约2400字,内容已按Markdown格式组织,包含代码块、表格等元素,可直接用于技术文档发布。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。