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

Docker入门教程:常用命令与基础概念

目录

  • 简介
  • 常用命令
      • Docker 常用命令汇总
      • docker run 命令格式与参数解析

简介

Docker 是一个客户端-服务器(client-server)架构的应用程序,其中包含两个主要组件:Docker 客户端和 Docker 守护进程(也称为 Docker Daemon)。理解这两个组件的作用有助于理解为什么需要启动 Docker 客户端。

Docker 基础组件
Docker 客户端(Client): 用户通过命令行工具与 Docker 进行交互。
Docker 守护进程(Daemon): 管理 Docker 服务的后台进程,处理客户端请求。

  1. Docker 客户端:

    • Docker 客户端是用户与 Docker 系统交互的接口。用户通过 Docker 命令行工具(如 docker 命令)发送命令。
    • 这些命令可以是创建、运行、停止容器,拉取镜像,查看日志等。
    • 客户端本身并不执行这些操作,而是将命令发送给 Docker 守护进程。
  2. Docker 守护进程:

    • Docker 守护进程运行在主机上,并负责处理来自客户端的请求。
    • 它管理容器的生命周期、镜像的构建和存储、网络和数据卷的管理等。
    • 守护进程可以在本地或远程运行,客户端可以配置与远程 Docker 守护进程通信。

为什么需要启动 Docker 客户端:

  • 与守护进程通信: Docker 客户端是用户和 Docker 系统之间的桥梁。用户需要通过客户端发送命令来管理 Docker 守护进程和容器。
  • 用户交互: 客户端提供了一个用户友好的接口,使得用户可以方便地与 Docker 系统互动,而不需要直接操作守护进程。
  • 任务自动化: 通过 Docker 客户端,用户可以编写脚本来自动化容器管理任务,这对于 DevOps 和持续集成/持续部署(CI/CD)流程非常重要。

因此,启动 Docker 客户端是为了提供一个接口,使用户能够与 Docker 守护进程通信并管理容器化应用程序。Docker Desktop 应用程序通常会同时启动客户端和守护进程,以确保系统能够正常工作。

常用命令

在本部分中,我将为您提供一个完整的Docker命令列表,包含命令的注释说明和具体的使用示例,帮助您更全面地理解每个命令的功能和应用场景:

Docker 常用命令汇总

  1. 查看 Docker 版本信息

    docker version  # 显示 Docker 的版本信息
    

    示例输出:

    Client: Docker Engine - CommunityVersion:           19.03.12
    Server: Docker Engine - CommunityEngine:Version:          19.03.12
    
  2. 获取 Docker 系统的信息

    docker info  # 显示 Docker 的系统信息,包括容器和镜像数量
    

    示例部分输出:

    Containers: 10Running: 3Paused: 0Stopped: 7
    Images: 50
    Server Version: 19.03.12
    
  3. 列出本地镜像

    docker images  # 列出本地存储的所有镜像
    

    示例输出:

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    ubuntu              latest              4e5021d210f6        2 weeks ago         64.2MB
    nginx               stable              56bc4e1fdd8d        3 weeks ago         126MB
    
  4. 查看正在运行的容器

    docker ps  # 查看当前正在运行的容器
    

    示例输出:

    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    c3f279d17e0a        nginx               "/docker-entrypoint.…"   3 weeks ago         Up 3 days           80/tcp              webserver
    
  5. 查看容器日志

    docker logs <容器名称或ID>  # 显示指定容器的日志
    

    示例用法:

    docker logs webserver
    

    示例输出:

    127.0.0.1 - - [12/Oct/2023:14:55:29 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36"
    
  6. 进入容器

    docker exec -it <容器名称或ID> /bin/bash  # 进入容器并启动 Bash Shell
    

    示例用法:

    docker exec -it webserver /bin/bash
    
  7. 退出容器

    exit  # 退出当前容器的 Shell
    
  8. 列出所有容器

    docker ps -a  # 列出所有容器,包括未运行的
    
  9. 运行容器

    docker run -itd --privileged --name <容器名称> -v <本地路径>:<容器内路径> <镜像ID>
    

    示例用法:

    docker run -itd --privileged --name mycontainer -v /Users/example:/home/docker/data ad2419b0e531
    
  10. 停止容器

    docker stop <容器名称或ID>  # 停止一个运行中的容器
    

    示例用法:

    docker stop webserver
    
  11. 重启容器

    docker restart <容器名称或ID>  # 重启容器
    
  12. 删除容器

    docker rm <容器名称或ID>  # 删除一个容器
    
  13. 查看容器详细信息

    docker inspect <容器ID或名称>  # 查看容器详细信息,包括挂载目录
    

docker run 命令格式与参数解析

命令 docker run 是 Docker 中最常用的命令之一,它用于创建一个新的容器并运行一个命令。该命令具有多个参数,可以根据需要进行详细配置。

docker run -itd --privileged --name <容器名称> -v <本地路径>:<容器内路径> <镜像ID>
  1. -itd: 这是三个参数的组合,常用于控制容器的交互模式和后台运行状态:

    • -i (--interactive): 保持标准输入(STDIN)开启,即使不附加到容器。
    • -t (--tty): 分配一个伪终端,这通常用于使容器在运行时更像一个交互式会话。
    • -d (--detach): 在后台运行容器,并打印容器 ID。这允许容器在后台执行,命令行可以立即返回。
  2. --privileged: 给予容器额外的权限。当你的容器需要执行一些需要更高权限的操作时(如直接访问硬件设备),你可以使用这个选项。这会给予容器几乎同宿主机相同的权限。

  3. --name <容器名称>: 指定容器的名称。这允许您为容器指定一个易于记忆的名字,而不是使用 Docker 自动生成的随机名称。

  4. -v <本地路径>:<容器内路径>: 挂载一个卷(Volume)或绑定宿主机的目录到容器内部的指定路径。这使得容器能够共享和访问宿主机上的数据。

    • <本地路径>: 宿主机上的文件路径,这个路径的数据将被挂载到容器中。
    • <容器内路径>: 容器内的目标路径,宿主机上的 <本地路径> 将映射到这里。
  5. <镜像ID>: 这是用于创建容器的基础镜像。这可以是任何有效的镜像 ID,或者从 Docker Hub 上拉取的镜像名称和标签。

示例解析:
假设您希望运行一个基于 Ubuntu 的容器,容器名为 myubuntu,并希望将宿主机的 /home/user/data 目录挂载到容器的 /data 目录,并在后台运行:

docker run -itd --privileged --name myubuntu -v /home/user/data:/data ubuntu:latest

在这个例子中:

  • 使用了最新版的 Ubuntu 镜像(ubuntu:latest)。
  • 容器被命名为 myubuntu
  • 宿主机的 /home/user/data 目录被挂载到容器内的 /data 目录。
  • 容器在后台运行,且配置为交互式,有一个分配的终端。

这个命令将允许你运行一个 Ubuntu 容器,同时能够在宿主机和容器之间共享 /home/user/data 目录中的文件,这对于数据持久化和数据交换非常有用。

相关文章:

  • Qt —— 在Windows10下通过在线安装方式安装Qt6.9.0(附:“server replied: Forbidden“网络出错解决办法)
  • MERGE INTO 与 INSERT INTO 语法分析及实战对比
  • 对抗帕金森:在疾病阴影下,如何重掌生活主动权?
  • 科学养生:构建现代健康生活新范式
  • (十六)Java String类全面解析
  • 3.3 阶数的作用
  • 网络协议分析 实验二 IP分片与IPv6
  • Go构建高并发权重抽奖系统:从设计到优化全流程指南
  • AI助力:零基础开启编程之旅
  • 采购流程规范化如何实现?日事清流程自动化助力需求、采购、财务高效协作
  • 机器学习07-归一化与标准化
  • 4.7/Q1,GBD数据库最新文章解读
  • Andorid之TabLayout+ViewPager
  • Go语言——docker-compose部署etcd以及go使用其服务注册
  • SpringBoot中的拦截器
  • Web 架构之负载均衡会话保持
  • 互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-5
  • Java自定义线程池:从原理到高性能实践
  • DAY 24 元组和OS模块
  • Visual studio 打包方法
  • 杭州钱塘区3宗涉宅用地均以底价成交,共计成交金额25.73亿元
  • 最高降价三成,苹果中国iPhone开启大促销,能拉动多少销量?
  • 湛江霞山通报渔船火灾:起火船舶共8艘,无人员伤亡或被困
  • 民生谣言误导认知,多方联动守护清朗——中国互联网联合辟谣平台2025年4月辟谣榜综述
  • 梅花奖在上海|穿上初演时的服装,“鹮仙”朱洁静再起飞
  • 湖北石首市委副书记、市长付勇接受审查调查