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

目录

  • 简介
  • 常用命令
      • [Docker 常用命令汇总](#Docker 常用命令汇总)
      • [docker run 命令格式与参数解析](#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 版本信息

    bash 复制代码
    docker version  # 显示 Docker 的版本信息

    示例输出:

    复制代码
    Client: Docker Engine - Community
     Version:           19.03.12
    Server: Docker Engine - Community
     Engine:
      Version:          19.03.12
  2. 获取 Docker 系统的信息

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

    示例部分输出:

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

    bash 复制代码
    docker images  # 列出本地存储的所有镜像

    示例输出:

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

    bash 复制代码
    docker ps  # 查看当前正在运行的容器

    示例输出:

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

    bash 复制代码
    docker logs <容器名称或ID>  # 显示指定容器的日志

    示例用法:

    bash 复制代码
    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. 进入容器

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

    示例用法:

    bash 复制代码
    docker exec -it webserver /bin/bash
  7. 退出容器

    bash 复制代码
    exit  # 退出当前容器的 Shell
  8. 列出所有容器

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

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

    示例用法:

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

    bash 复制代码
    docker stop <容器名称或ID>  # 停止一个运行中的容器

    示例用法:

    bash 复制代码
    docker stop webserver
  11. 重启容器

    bash 复制代码
    docker restart <容器名称或ID>  # 重启容器
  12. 删除容器

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

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

docker run 命令格式与参数解析

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

bash 复制代码
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 目录,并在后台运行:

bash 复制代码
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 目录中的文件,这对于数据持久化和数据交换非常有用。

相关推荐
大白的编程日记.2 分钟前
【Linux学习笔记】理解一切皆文件实现原理和文件缓冲区
linux·笔记·学习
孞㐑¥3 分钟前
Linux之进程控制
linux·开发语言·c++·经验分享·笔记
愚润求学27 分钟前
【Linux】简单设计libc库
linux·运维·开发语言·c++·笔记
chennalC#c.h.JA Ptho44 分钟前
Bodhi linux 系统详解
linux·经验分享·笔记·系统架构·系统安全
monstercl1 小时前
游戏资源传输服务器
运维·服务器·游戏
运维开发王义杰1 小时前
PAC文件:智能代理配置的瑞士军刀
运维
网硕互联的小客服1 小时前
服务器配置错误导致SSL/TLS出现安全漏洞,如何进行排查?
运维·服务器
QX_hao1 小时前
【docker】--镜像管理
运维·docker·容器
敲上瘾1 小时前
MySQL数据库表的约束
linux·数据库·sql·mysql·数据库开发·数据库架构·数据库系统
u0109362652 小时前
Linux电源管理(五),发热管理(thermal),温度控制 (结合设备树 和ACPI Source Language(ASL)分析)
linux