Docker的概念和常用命令整理

发布时间:2021-09-09 07:13:40 作者:chen
来源:亿速云 阅读:197
# 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

2.2 配置镜像加速

# 国内用户建议配置镜像加速
# 创建或修改/etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
sudo systemctl restart docker

三、镜像操作命令

3.1 镜像管理

# 搜索镜像
docker search nginx

# 拉取镜像(默认最新版)
docker pull nginx:1.21

# 查看本地镜像
docker images
docker image ls

# 删除镜像
docker rmi nginx:1.21
docker image prune  # 清理悬空镜像

3.2 构建镜像

# 示例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 .

四、容器操作命令

4.1 生命周期管理

# 启动容器
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  # 清理已停止容器

4.2 交互操作

# 进入容器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/

五、网络与存储

5.1 网络管理

# 查看网络
docker network ls

# 创建自定义网络
docker network create mynet

# 容器连接指定网络
docker run -d --net=mynet --name app1 nginx

# 网络连通性测试
docker exec app1 ping app2

5.2 数据持久化

# 创建数据卷
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

6.1 基本使用

# 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

6.2 扩展功能

# 多容器协作示例
services:
  app:
    build: .
    depends_on:
      - redis
  redis:
    image: redis:6.2
    volumes:
      - redis_data:/data

volumes:
  redis_data:

七、最佳实践

7.1 镜像优化建议

  1. 使用.dockerignore文件排除无关文件
  2. 多阶段构建减少最终镜像大小
  3. 合并RUN指令减少镜像层数
  4. 使用Alpine等轻量级基础镜像
# 多阶段构建示例
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"]

7.2 安全建议

八、常见问题排查

8.1 基础命令

# 查看容器详细信息
docker inspect myweb

# 查看容器进程
docker top myweb

# 查看端口映射
docker port myweb

8.2 日志分析

# 按时间过滤日志
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格式组织,包含代码块、表格等元素,可直接用于技术文档发布。

推荐阅读:
  1. WLC常用命令整理
  2. Docker的概念及剖析原理和特点

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

docker

上一篇:InnoDB的外存数据结构介绍

下一篇:怎么通过重启路由的方法切换IP地址

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》