l
白菜一颗
发布于 2025-03-21 / 8 阅读
0
0

乌班图系统下docker常用指南

一、快速安装 (Ubuntu)

1.1 一键安装脚本

bash

复制

# 适用于 Ubuntu 20.04+/Debian 11+  
sudo apt update && sudo apt install -y curl  
curl -fsSL https://get.docker.com | sudo sh  

1.2 验证安装

bash

复制

sudo docker version            # 查看版本  
sudo docker run hello-world    # 验证基础功能  

1.3 权限配置

bash

复制

# 避免频繁使用 sudo(需重新登录生效)  
sudo usermod -aG docker $USER  

二、核心操作

2.1 容器生命周期

场景

命令

示例

启动容器

docker run [OPTIONS] IMAGE [COMMAND]

docker run -d --name web nginx

进入运行中容器

docker exec -it NAME /bin/bash

docker exec -it web bash

停止容器

docker stop NAME

docker stop web

删除容器

docker rm NAME

docker rm web

查看运行日志

docker logs NAME

docker logs -f web

2.2 镜像管理

bash

复制

# 拉取镜像  
docker pull ubuntu:22.04  

# 构建镜像(需 Dockerfile)  
docker build -t my-app:v1 .  

# 清理无用镜像  
docker image prune -a  

三、进阶配置

3.1 数据持久化

bash

复制

# 挂载宿主机目录(推荐)  
docker run -v /宿主机路径:/容器路径 mysql  

# 使用数据卷(自动管理)  
docker volume create db_data  
docker run -v db_data:/var/lib/mysql mysql  

3.2 网络配置

bash

复制

# 创建自定义网络  
docker network create --driver=bridge my-net  

# 指定容器IP(需自定义网络)  
docker run --net=my-net --ip=172.18.0.10 nginx  

3.3 资源限制

bash

复制

# 限制CPU和内存  
docker run -it --cpus=1.5 --memory=2g --memory-swap=3g ubuntu  

3.4 容器编排(单机版)

bash

复制

# 使用 Docker Compose(需安装)  
docker compose up -d  

四、问题排查

4.1 常见错误

错误现象

解决方案

Cannot connect to the Docker daemon

检查服务状态:systemctl status docker

Port already in use

释放端口或映射到其他端口:-p 8080:80

No space left on device

清理镜像和容器:docker system prune -a

4.2 调试工具

bash

复制

# 查看容器详细信息  
docker inspect web | grep -E "IPAddress|Ports"  

# 实时监控资源使用  
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"  

五、最佳实践

5.1 镜像优化

  1. 精简基础镜像:优先选择 AlpineDistroless

    dockerfile

    复制

    FROM python:3.9-alpine  
    COPY . /app  
    RUN pip install --no-cache-dir -r requirements.txt  
  2. 多阶段构建:分离编译与运行环境

    dockerfile

    复制

    # 编译阶段  
    FROM node:16 AS builder  
    COPY . .  
    RUN npm install && npm run build  
    
    # 运行阶段  
    FROM nginx:alpine  
    COPY --from=builder /app/dist /usr/share/nginx/html  

5.2 安全规范

  • 禁止特权模式:避免 --privileged

  • 非Root用户运行

    dockerfile

    复制

    RUN groupadd -r appuser && useradd -r -g appuser appuser  
    USER appuser  

5.3 生产部署

场景

工具

集群管理

Kubernetes / Docker Swarm

日志收集

ELK Stack / Fluentd

监控告警

Prometheus + Grafana


六、附录

6.1 Dockerfile 示例

dockerfile

复制

# 基础镜像  
FROM ubuntu:22.04  

# 元数据  
LABEL maintainer="dev@example.com"  

# 安装依赖  
RUN apt update && apt install -y curl  

# 复制文件  
COPY app.sh /usr/local/bin/  

# 容器入口  
ENTRYPOINT ["/usr/local/bin/app.sh"]  

6.2 常用命令速查

bash

复制

# 查看容器进程  
docker top web  

# 导出/导入容器快照  
docker export web > web.tar  
docker import web.tar my-web  

# 查看容器修改历史  
docker diff web  


评论