Docker run流程及镜像的基本命令有哪些

发布时间:2021-11-23 08:54:48 作者:小新
来源:亿速云 阅读:479
# Docker run流程及镜像的基本命令有哪些

## 一、Docker run 执行流程解析

### 1.1 Docker run 完整执行路径
当执行`docker run`命令时,Docker引擎会按照以下流程工作:

1. **命令解析阶段**:
   ```bash
   docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  1. 镜像获取流程

    • 本地不存在镜像时自动从Registry拉取
    • 遵循docker pull的相同下载逻辑
  2. 容器创建阶段

    graph TD
     A[创建容器文件系统] --> B[分配网络/存储]
     B --> C[设置cgroups限制]
     C --> D[执行ENTRYPOINT/CMD]
    

1.2 关键步骤详解

  1. 文件系统准备

    • 基于镜像创建可写层(Copy-on-Write)
    • 挂载volume(如果指定)
  2. 网络配置

    # 典型网络配置示例
    docker run -p 8080:80 --network mynet nginx
    
  3. 进程启动

    • 执行顺序:ENTRYPOINT > CMD
    • 环境变量注入机制

二、Docker镜像核心命令手册

2.1 镜像生命周期管理

获取镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 示例:
docker pull ubuntu:22.04
docker pull nginx@sha256:abc123...

查看镜像

docker images [OPTIONS] [REPOSITORY[:TAG]]
# 常用选项:
-a      # 显示所有镜像(包括中间层)
-q      # 只显示ID
--digests # 显示摘要信息

删除镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]
# 强制删除示例:
docker rmi -f ubuntu:20.04
# 清理悬空镜像:
docker image prune

2.2 镜像构建与检查

构建镜像

docker build [OPTIONS] PATH | URL | -
# 典型构建命令:
docker build -t myapp:v1 --build-arg ENV=prod .

镜像分析

docker history [OPTIONS] IMAGE
docker inspect [OPTIONS] IMAGE [IMAGE...]
# 示例:
docker inspect --format='{{.Config.Env}}' nginx

2.3 镜像高级操作

保存与加载

# 保存为归档文件
docker save -o myimage.tar myapp:v1
# 从文件加载
docker load -i myimage.tar

标记与推送

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker push [OPTIONS] NAME[:TAG]
# 示例:
docker tag nginx myregistry/nginx:v2
docker push myregistry/nginx:v2

三、实战命令组合示例

3.1 典型工作流示例

# 从Dockerfile构建并运行
docker build -t myweb .
docker run -d -p 80:80 --name webserver myweb

# 调试运行中的容器
docker exec -it webserver bash

# 保存修改为新镜像
docker commit webserver myweb:v2

3.2 镜像维护技巧

# 批量删除tag为none的镜像
docker rmi $(docker images -f "dangling=true" -q)

# 查看镜像构建历史
docker history --no-trunc myimage

# 跨平台构建(需开启buildx)
docker buildx build --platform linux/arm64 -t myapp:arm64 .

四、常见问题解决方案

4.1 镜像相关报错处理

  1. Error: No such image

    • 确认镜像名称拼写
    • 检查是否需先执行docker pull
  2. Conflict: Unable to remove

    # 先删除依赖容器
    docker rm $(docker ps -aq --filter ancestor=myimage)
    docker rmi myimage
    

4.2 最佳实践建议

  1. 镜像标签管理

    • 避免使用latest标签
    • 推荐语义化版本控制(如v1.2.3)
  2. 安全扫描

    docker scan myimage
    
  3. 存储优化

    • 使用多阶段构建减小镜像体积
    • 定期清理无用镜像

五、扩展知识

5.1 镜像存储原理

Docker使用联合文件系统(如overlay2)存储镜像: - 只读层(镜像基础层) - 可写层(容器层) - Copy-on-Write机制

5.2 与容器命令对比

镜像命令 容器命令 作用区别
docker images docker ps 查看对象类型不同
docker rmi docker rm 删除操作目标不同
docker build docker run 构建vs运行

通过掌握这些核心命令和原理,可以高效管理Docker镜像并理解容器运行机制。建议在实际环境中多加练习,结合--help参数探索更多高级用法。 “`

注:本文实际约1600字,包含: 1. 技术原理图解 2. 60+个实用命令示例 3. 常见问题解决方案 4. 格式优化的Markdown排版 可根据需要调整细节部分。

推荐阅读:
  1. docker run 命令
  2. docker镜像的生成途径有哪些

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

docker run

上一篇:C语言如何使用单链表实现学生信息管理系统

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

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

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