当前位置: 首页 > article >正文

docker常规命令和高级用法

Docker 是一个强大的容器化平台,提供了丰富的命令和功能来管理容器、镜像、网络和存储等。以下是一些常用的 Docker 命令及其高级用法。


1. 容器管理

1.1 启动容器

  • 基本用法

    docker run <image_name>
    

    示例:

    docker run ubuntu
    
  • 高级用法

    • 后台运行容器并映射端口:
      docker run -d -p 8080:80 nginx
      
    • 挂载主机目录到容器:
      docker run -v /host/path:/container/path ubuntu
      
    • 设置环境变量:
      docker run -e MY_ENV=value ubuntu
      
    • 指定容器名称:
      docker run --name my_container ubuntu
      

1.2 查看容器

  • 基本用法

    docker ps
    
  • 高级用法

    • 查看所有容器(包括已停止的):
      docker ps -a
      
    • 查看容器的详细信息:
      docker inspect <container_id>
      
    • 查看容器的日志:
      docker logs <container_id>
      
    • 实时查看日志:
      docker logs -f <container_id>
      

1.3 停止和删除容器

  • 基本用法

    docker stop <container_id>
    docker rm <container_id>
    
  • 高级用法

    • 强制停止容器:
      docker kill <container_id>
      
    • 删除所有已停止的容器:
      docker container prune
      
    • 删除运行中的容器(强制删除):
      docker rm -f <container_id>
      

1.4 进入容器

  • 基本用法

    docker exec -it <container_id> /bin/bash
    
  • 高级用法

    • 在容器内执行单条命令:
      docker exec <container_id> ls /app
      
    • 使用其他 Shell(如 sh):
      docker exec -it <container_id> sh
      

2. 镜像管理

2.1 拉取镜像

  • 基本用法

    docker pull <image_name>
    
  • 高级用法

    • 拉取指定版本的镜像:
      docker pull ubuntu:20.04
      

2.2 查看镜像

  • 基本用法

    docker images
    
  • 高级用法

    • 查看镜像的详细信息:
      docker inspect <image_id>
      
    • 查看镜像的历史记录:
      docker history <image_id>
      

2.3 删除镜像

  • 基本用法

    docker rmi <image_id>
    
  • 高级用法

    • 强制删除镜像(即使有容器在使用):
      docker rmi -f <image_id>
      
    • 删除所有未使用的镜像:
      docker image prune -a
      

2.4 构建镜像

  • 基本用法

    docker build -t <image_name> .
    
  • 高级用法

    • 指定 Dockerfile 路径:
      docker build -t <image_name> -f /path/to/Dockerfile .
      
    • 构建时传递构建参数:
      docker build --build-arg MY_ARG=value -t <image_name> .
      

3. 网络管理

3.1 查看网络

  • 基本用法

    docker network ls
    
  • 高级用法

    • 查看网络的详细信息:
      docker network inspect <network_name>
      

3.2 创建网络

  • 基本用法

    docker network create <network_name>
    
  • 高级用法

    • 创建自定义子网的网络:
      docker network create --subnet=192.168.1.0/24 <network_name>
      

3.3 连接容器到网络

  • 基本用法

    docker network connect <network_name> <container_id>
    
  • 高级用法

    • 指定容器的 IP 地址:
      docker network connect --ip 192.168.1.10 <network_name> <container_id>
      

4. 数据卷管理

4.1 创建数据卷

  • 基本用法

    docker volume create <volume_name>
    
  • 高级用法

    • 查看数据卷的详细信息:
      docker volume inspect <volume_name>
      

4.2 挂载数据卷

  • 基本用法

    docker run -v <volume_name>:/container/path ubuntu
    
  • 高级用法

    • 挂载主机目录为只读:
      docker run -v /host/path:/container/path:ro ubuntu
      

5. Docker Compose

5.1 启动服务

  • 基本用法

    docker-compose up
    
  • 高级用法

    • 后台启动服务:
      docker-compose up -d
      
    • 重新构建镜像并启动:
      docker-compose up --build
      

5.2 停止服务

  • 基本用法

    docker-compose down
    
  • 高级用法

    • 停止并删除所有容器、网络和数据卷:
      docker-compose down --volumes
      

6. 高级用法

6.1 容器资源限制

  • 限制容器的 CPU 和内存使用:
    docker run --cpus="1.5" --memory="512m" ubuntu
    

6.2 容器健康检查

  • 在 Dockerfile 中定义健康检查:
    HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
      CMD curl -f http://localhost/ || exit 1
    

6.3 多阶段构建

  • 使用多阶段构建优化镜像大小:
    FROM node:14 AS build
    WORKDIR /app
    COPY . .
    RUN npm install && npm run build
    
    FROM nginx:alpine
    COPY --from=build /app/dist /usr/share/nginx/html
    

6.4 容器日志驱动

  • 使用 JSON 文件记录日志:
    docker run --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 ubuntu
    

6.5 容器安全

  • 以非 root 用户运行容器:
    docker run --user 1000:1000 ubuntu
    

总结

Docker 提供了丰富的命令和功能来管理容器、镜像、网络和数据卷等。通过掌握这些高级用法,可以更好地优化和管理 Docker 容器化环境。


http://www.kler.cn/a/570577.html

相关文章:

  • nextjs+material UI实现换肤功能
  • 2继续NTS库学习(读取shapefile)
  • 【Kubernets】K8S亲和性配置相关说明
  • 【Linux】命名管道
  • python小游戏-坦克大战
  • yolo初体验
  • 【AI深度学习基础】Pandas完全指南入门篇:数据处理的瑞士军刀 (含完整代码)
  • 智慧农业中光谱相机对土壤成分的无损检测应用‌
  • 网络空间安全(7)攻防环境搭建
  • 初识C语言之操作符详解(下)
  • 服务器时间同步
  • spring boot + vue 搭建环境
  • 关于服务器cpu过高的问题排查
  • 物理竞赛中的线性代数
  • SELinux 安全加固
  • 【鸿蒙Next】鸿蒙与flutter使用自定义iconfont的ttf字体库对比总结
  • 基于GTID的主从复制
  • 静态时序分析:SDC约束命令set_clock_jitter详解
  • 学习笔记-DeepSeek在开源第四天发布DualPipe和EPLB两项技术
  • C#中泛型的协变和逆变