您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。