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

相关推荐
林开落L13 分钟前
库制作与原理(下)
linux·开发语言·centos·库制作与原理
wxy31925 分钟前
嵌入式LINUX——————TCP并发服务器
java·linux·网络
Castamere33 分钟前
配置 Linux 终端 (zsh)
linux
杭州泽沃电子科技有限公司1 小时前
告别翻山越岭!智能监拍远程守护输电线路安全
运维·人工智能·科技·安全
小韩博2 小时前
metasploit 框架安装更新遇到无法下载问题如何解决
linux·网络安全·公钥·下载失败
肥肥呀呀呀2 小时前
mac 安卓模拟器 blueStacks
macos
长臂人猿2 小时前
JVM常用工具:jstat、jmap、jstack
linux·运维·jvm
csdn_aspnet2 小时前
如何在 MacOS 上安装 SQL Server
macos·sqlserver
轻松Ai享生活3 小时前
揭秘 linux:一张图看懂系统配置的核心
linux
wdxylb3 小时前
云原生俱乐部-RH134知识点总结(2)
linux·云原生