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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小赖同学啊

感谢上帝的投喂

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值