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

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 容器化环境。

相关文章:

  • 【Linux】信号保存
  • 深入解析网络协议:从OSI七层模型到HTTP与TCP/IP的关系
  • 2安卓开发的主要语言
  • 【STM32】TIM输入捕获-学习笔记
  • 【北上广深杭大厂AI算法面试题】深度学习篇...这里详细说明ResNet中为什么不用dropout?
  • AI 大模型本身的(自己的)(如 GPT、BERT 等)的自动化测试
  • 网络安全学多久?就业前景如何?
  • 二、双指针——6. 三数之和
  • 探秘基带算法:从原理到5G时代的通信变革【四】Polar 编解码(二)
  • 大模型——CogView4:生成中英双语高清图片的开源文生图模型综合介绍
  • navicat下载与安装【带布丁】
  • 记录uniapp小程序对接腾讯IM即时通讯无ui集成(2)
  • 人工智能 全部技术栈以及简单运用场景
  • Springboot 循环依赖
  • Python学习第五天
  • 城市管理综合执法系统源码,B/S模式与手机等移动终端架构,java语言开发,可扩展性强
  • 基于 vLLM 部署 LSTM 时序预测模型的“下饭”(智能告警预测与根因分析部署)指南
  • 【学Rust写CAD】10 加法器
  • C++ Primer 动态数组
  • React面试葵花宝典之三
  • 有哪些网站程序/百度竞价开户哪家好
  • 我做网站了 圆通/深圳搜索引擎优化seo
  • 大连做公司网站/宁波seo推广优化公司
  • 网站站内优化怎么做/百度关键词优化大
  • 做站群网站好优化吗/新手怎么做seo优化
  • vps做网站需要做哪些准备/网址之家大全