你好,这里是网络技术联盟站,我是瑞哥!
Docker 是一种容器化平台,允许开发人员将应用程序及其所有依赖项打包到一个称为 Docker 镜像的可移植容器中。这使得应用程序可以在任何地方以相同的方式运行,而无需担心环境差异或依赖问题。
在公众号后台我看到很多小伙伴想要瑞哥整理一下Docker常用的命令大全,一直说整理,一直忘,今天五一节前一天,带着开心的心情,给大家整理一下,希望对您有所帮助。
友情提醒:本文篇幅有点长,干货满满,为了防止看完后忘了收藏,建议看到此处就收藏⭐一下,以防后期找不到了!
什么是容器?容器是一种虚拟化技术,用于在操作系统级别隔离应用程序及其依赖环境的运行环境。与传统的虚拟机相比,容器更加轻量级、快速和灵活。
容器包含了应用程序及其所有依赖项,如代码、运行时环境、系统工具、系统库等,以及所需的配置文件。容器将这些组件打包到一个独立的单元中,并与宿主操作系统共享内核,从而实现了资源的高效利用和快速部署。
容器技术的主要特点包括:
轻量级: 由于容器与宿主操作系统共享内核,因此它们不需要额外的操作系统镜像,使得容器比传统虚拟机更加轻量级。快速启动: 容器可以在几秒钟内启动,因为它们不需要像虚拟机那样启动整个操作系统,而是直接在宿主操作系统上启动应用程序。隔离性: 每个容器都运行在独立的环境中,与其他容器和宿主系统隔离开来,从而确保了应用程序之间的互相独立和安全性。可移植性: 容器提供了一种标准化的打包和交付机制,使得应用程序可以在任何支持容器的平台上以相同的方式运行,无需担心环境差异。可扩展性: 容器可以根据需要进行水平或垂直扩展,以满足应用程序的需求,而且扩展过程通常非常快速和灵活。容器架构是指容器技术所涉及的组件和系统结构,用于管理、运行和部署容器化应用程序。
容器架构图
典型的容器架构包括以下组件:
宿主机(Host Machine): 宿主机是运行容器的物理或虚拟计算机。它可以是云服务器、物理服务器或者虚拟机实例。宿主机上安装了容器运行时(如 Docker Engine),负责管理容器的生命周期。容器引擎(Container Engine): 容器引擎是一个用于创建、运行和管理容器的软件。最流行的容器引擎是 Docker,但也有其他选择,如 Containerd、CRI-O 等。容器引擎负责与宿主机的操作系统内核交互,以便在其中创建和管理容器。镜像(Image): 镜像是容器运行时的静态文件,包含了应用程序的代码、运行时环境、系统工具和依赖项。镜像是容器的基础,用于创建容器实例。Docker 镜像通常由 Dockerfile 构建而成,可以通过 Docker Hub 或私有镜像仓库分享和分发。容器(Container): 容器是运行在宿主机上的一个或多个镜像的实例。每个容器都是一个独立的运行环境,包含了应用程序及其所有依赖项,以及所需的配置文件。容器之间是相互隔离的,但可以与宿主机共享资源和网络。容器编排(Container Orchestration): 容器编排是一种自动化和管理容器化应用程序的方法。它涉及到部署、扩展、管理和调度容器的过程,以确保应用程序的高可用性、负载均衡和弹性。常见的容器编排工具包括 Kubernetes、Docker Swarm 等。容器注册中心(Container Registry): 容器注册中心是用于存储、管理和分发容器镜像的中心化服务。它允许开发人员和运维团队共享和获取镜像,以便在不同的环境中部署应用程序。常见的容器注册中心包括 Docker Hub、Harbor、Quay 等。容器技术的代表性实现包括 Docker、Kubernetes、Podman 等。这些工具使得容器的创建、管理和部署变得更加简单和高效,广泛应用于软件开发、测试、部署和运维等领域。
什么是Docker?Docker 是一种基于容器化技术的开源平台,用于开发、交付和运行应用程序。它允许开发人员将应用程序及其所有依赖项(如库、运行时环境、配置文件等)打包到一个称为 Docker 镜像的可移植容器中。这些容器可以在任何支持 Docker 的环境中以相同的方式运行,无需担心环境差异或依赖问题。
Docker架构图
Docker 的核心组件包括:
Docker 引擎(Docker Engine): Docker 引擎是 Docker 平台的核心组件,负责管理容器的生命周期。它包括一个守护进程(Docker Daemon)和一个命令行工具(Docker CLI),可以通过 Docker CLI 发送命令给 Docker Daemon,以便创建、运行、停止和删除容器等操作。Docker 镜像(Docker Image): Docker 镜像是用于创建容器的静态文件,包含了应用程序的代码、运行时环境、系统工具和依赖项。镜像可以通过 Dockerfile 定义和构建,然后推送到 Docker Hub 或私有镜像仓库进行分享和分发。Docker 容器(Docker Container): Docker 容器是 Docker 镜像的运行实例,每个容器都是一个独立的运行环境,包含了应用程序及其所有依赖项,以及所需的配置文件。容器可以在任何支持 Docker 的环境中以相同的方式运行,实现了环境的一致性和可移植性。Docker Hub: Docker Hub 是 Docker 公司提供的官方镜像仓库,用于存储、管理和分享 Docker 镜像。开发人员可以在 Docker Hub 上找到各种官方和社区维护的 Docker 镜像,也可以将自己构建的镜像推送到 Docker Hub 进行分享。Docker 技术的主要优点包括轻量级、快速、灵活、可移植和一致的运行环境。它在现代软件开发、测试、部署和运维中得到了广泛的应用,成为了构建微服务架构和实现持续集成/持续部署的重要工具之一。
Docker使用
好了,到这里,容器和Docker的介绍就完了,相信大家已经迫不及待的想要了解一下Docker的运行命令了,别急咱们还要了解一下如何安装Docker。
Docker安装安装 Docker 可能在不同的操作系统上略有不同:
在 Linux 上安装 Docker不同的 Linux 发行版可能有不同的包管理工具和安装步骤。下面我将分别介绍在常见的几种 Linux 发行版上安装 Docker 的方法:
在 Ubuntu 上安装 Docker在 Ubuntu 上安装 Docker 可以通过 apt 包管理器进行,按照以下步骤操作:
更新软件包索引:sudo apt update安装所需的软件包,以支持通过 HTTPS 使用 Docker 仓库:sudo apt install apt-transport-https ca-certificates curl software-properties-common添加 Docker 的官方 GPG 密钥:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -添加 Docker 的 APT 仓库:sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"更新软件包索引:sudo apt update安装 Docker:sudo apt install docker-ce验证 Docker 是否安装成功:sudo docker --version在 CentOS 上安装 Docker在 CentOS 上安装 Docker 可以通过 yum 包管理器进行,按照以下步骤操作:
更新软件包索引:sudo yum check-update安装所需的软件包,以支持通过 HTTPS 使用 Docker 仓库:sudo yum install -y yum-utils device-mapper-persistent-data lvm2添加 Docker 的官方 YUM 仓库:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo安装 Docker:sudo yum install docker-ce启动 Docker 服务:sudo systemctl start docker设置 Docker 开机自启动:sudo systemctl enable docker验证 Docker 是否安装成功:sudo docker --version在 Fedora 上安装 Docker在 Fedora 上安装 Docker 可以通过 dnf 包管理器进行,按照以下步骤操作:
更新软件包索引:sudo dnf check-update安装所需的软件包,以支持通过 HTTPS 使用 Docker 仓库:sudo dnf install -y dnf-plugins-core添加 Docker 的官方 YUM 仓库:sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo安装 Docker:sudo dnf install docker-ce启动 Docker 服务:sudo systemctl start docker设置 Docker 开机自启动:sudo systemctl enable docker验证 Docker 是否安装成功:sudo docker --version以上是在 Ubuntu、CentOS 和 Fedora 上安装 Docker 的基本步骤。请注意,具体的安装步骤可能因 Linux 发行版版本、软件包版本和系统配置而有所不同。安装前请务必阅读官方文档并遵循官方建议。
在 macOS 上安装 Docker在 macOS 上安装 Docker 通常可以通过 Docker Desktop 来完成,按照以下步骤操作:
前往 Docker 官网下载页面:https://www.docker.com/products/docker-desktop下载并安装 Docker Desktop,根据提示进行操作。安装完成后,启动 Docker Desktop。在启动后,Docker 图标将出现在菜单栏中。单击 Docker 图标并选择“Preferences”,然后在“Resources”选项卡中分配足够的资源(CPU、内存等)给 Docker。验证 Docker 是否安装成功:在终端中执行以下命令:
docker --version在 Windows 上安装 Docker在 Windows 上安装 Docker 也可以通过 Docker Desktop 来完成,步骤如下:
前往 Docker 官网下载页面:https://www.docker.com/products/docker-desktop下载并安装 Docker Desktop,根据提示进行操作。安装完成后,启动 Docker Desktop。在启动后,Docker 图标将出现在任务栏中。右键单击 Docker 图标并选择“Settings”,然后在“Resources”选项卡中分配足够的资源(CPU、内存等)给 Docker。验证 Docker 是否安装成功:在 PowerShell 或命令提示符中执行以下命令:
docker --version以上是在 Linux、macOS 和 Windows 上安装 Docker 的基本步骤。
请注意,安装过程可能会因操作系统版本、系统配置和网络状态等因素而有所不同。安装前请务必阅读官方文档并遵循官方建议。
Docker容器命令1. 列出所有运行中的容器docker ps此命令将列出所有当前正在运行的容器,并显示其相关信息,如容器 ID、镜像、创建时间、状态等。
在Docker中,列出所有正在运行的容器有几种方法,其中包括使用docker ps、docker container ps和docker container ls命令。这些命令的执行结果是相同的,只是语法上有些微的差别。docker ps是旧语法,但仍然被支持,而docker container ps和docker container ls则是更新的语法版本,更符合现代标准。
下面的两个命令来也可以列出正在运行的容器:
docker container psdocker container ls
2. 列出所有容器(不考虑状态) docker ps -a
该命令将列出系统中的所有容器,无论其处于运行状态还是已停止状态。
docker ps -a其实就是docker ps -all的缩写:
docker ps -all3. 列出所有运行中的容器及文件大小 docker ps -s
此命令将列出所有当前正在运行的容器,并显示其相关信息以及每个容器的磁盘使用情况。
其实就是docker container ls -s命令的缩写:
docker container ls -s4. 列出运行中容器的 ID docker ps -q
此命令将列出当前正在运行的容器的 ID,而不显示其他信息。
docker ps -q的全称就是docker ps --quiet,都是docker container ls -q的简写。
5. 列出所有容器的 ID(不考虑状态) docker ps -aq
该命令将列出系统中所有容器的 ID,无论其处于运行状态还是已停止状态。
6. 过滤容器列表docker ps --filter "key=value"此命令可用于根据特定条件过滤容器列表,例如根据名称、标签等。
7. 从 Docker 镜像创建新容器docker run image_name此命令将从指定的 Docker 镜像创建一个新的容器,并启动该容器。
8. 从 Docker 镜像创建具有固定名称的新容器docker run --name container_name image_name此命令将从指定的 Docker 镜像创建一个新的容器,并指定容器的名称。
9. 启动容器docker start container_name_or_id此命令将启动指定的容器。
10. 停止运行中的容器docker stop container_name_or_id此命令将停止指定的运行中的容器。
11. 重新启动容器docker restart container_name_or_id此命令将重新启动指定的容器。
12. 暂停运行中的容器docker pause container_name_or_id此命令将暂停指定的运行中的容器。
13. 恢复已暂停的容器docker unpause container_name_or_id此命令将恢复已暂停的容器,使其继续运行。
14. 运行容器docker run image_name此命令将从指定的 Docker 镜像创建一个新的容器,并启动该容器。
15. 在前台和后台模式下运行容器docker run -it image_namedocker run -d image_name上面的命令分别在前台和后台模式下运行容器。
16. 在容器退出时删除容器docker run --rm image_name此命令将在容器退出时自动删除容器。
17. 在后台模式下运行容器docker run -d image_name此命令将在后台模式下运行容器。
18. 使用分配的名称运行容器docker run --name container_name image_name此命令将为容器指定一个自定义的名称。
19. 列出容器中运行的进程docker top container_name_or_id此命令将列出指定容器中正在运行的进程。
20. 映射容器的端口docker run -p host_port:container_port image_name此命令将容器的端口映射到主机的端口。
21. 重命名容器docker rename old_container_name new_container_name此命令将容器的名称从旧名称更改为新名称。
22. 以交互模式运行容器docker run -it image_name此命令将在交互模式下运行容器,允许用户与容器交互。
23. 进入运行中的容器docker exec -it container_name_or_id /bin/bash此命令将进入指定容器的交互式 shell 环境。
24. 启动容器并保持其运行docker run -d image_name此命令将以后台模式启动容器,并保持其运行。
25. 从容器复制文件到主机docker cp container_name_or_id:/path/to/file /host/path此命令将从指定容器中复制文件到主机文件系统。
26. 从主机复制文件到容器docker cp /host/path container_name_or_id:/path/to/file此命令将从主机文件系统复制文件到指定容器中。
27. 删除容器docker rm container_name_or_id此命令将删除指定的容器。
28. 在容器退出时删除容器docker run --rm image_name此命令将在容器退出时自动删除容器。
29. 删除已停止的容器docker container prune此命令将删除系统中所有已停止的容器。
30. 删除已停止和正在运行的容器docker container prune -f此命令将删除系统中所有已停止和正在运行的容器。
31. 从容器构建 Docker 镜像docker commit container_name_or_id new_image_name此命令将从指定容器创建新的 Docker 镜像。
32. 在容器中设置环境变量docker run -e KEY=VALUE image_name此命令将在运行容器时设置指定的环境变量。
33. 从文件设置容器中的环境变量docker run --env-file=file.env image_name此命令将从指定的环境变量文件中设置容器的环境变量。
Docker 镜像命令1. 列出所有镜像docker images此命令将列出系统中所有的 Docker 镜像,并显示它们的名称、标签、镜像 ID、创建时间和大小等信息。
2. 列出所有镜像(包括悬挂镜像)docker images -a此命令将列出系统中所有的 Docker 镜像,包括已悬挂的镜像(即没有关联的标签)。
3. 列出镜像 IDdocker images -q此命令将仅列出系统中所有 Docker 镜像的 ID。
4. 构建镜像docker build -t image_name .此命令将在当前目录下的 Dockerfile 中构建一个新的 Docker 镜像,并指定镜像的名称。
5. 使用不同标签构建镜像docker build -t image_name:tag .此命令将在当前目录下的 Dockerfile 中构建一个新的 Docker 镜像,并指定镜像的名称和标签。
6. 使用自定义命名的 Dockerfile 构建镜像docker build -t image_name -f Dockerfile_custom .此命令将使用自定义命名的 Dockerfile(例如 Dockerfile_custom)构建一个新的 Docker 镜像,并指定镜像的名称。
7. 显示镜像历史docker history image_name此命令将显示指定 Docker 镜像的历史记录,包括每一层的创建信息。
8. 重命名现有镜像docker tag old_image_name new_image_name此命令将现有的 Docker 镜像重命名为新的名称。
9. 删除镜像docker rmi image_name此命令将删除指定的 Docker 镜像。请注意,如果该镜像有正在运行的容器,需要先停止相关容器才能删除镜像。
10. 未使用的镜像docker image prune此命令将删除系统中未被使用的 Docker 镜像。未使用的镜像是指没有与任何容器关联的镜像。
11. 悬挂镜像docker images -f dangling=true此命令将列出系统中的悬挂镜像,即没有关联标签的镜像。
12. 列出悬挂镜像docker images -f dangling=true此命令将列出系统中的悬挂镜像,即没有关联标签的镜像。
13. 删除悬挂镜像docker image prune -f此命令将删除系统中的悬挂镜像。
14. 删除悬挂和未使用的镜像docker image prune -a -f此命令将删除系统中的所有悬挂和未使用的镜像。
Docker 日志命令1. 获取容器日志docker logs container_name_or_id此命令将检索指定容器的日志,并将其输出到标准输出(stdout)。可以通过容器的名称或 ID 来指定容器。
示例:
docker logs 401affca283f2. 监视容器日志docker logs -f container_name_or_id此命令将持续监视指定容器的日志,并将新日志输出到标准输出。可以通过容器的名称或 ID 来指定容器。
示例:
docker logs -f my_containerDocker 网络命令1. 列出所有网络docker network ls此命令将列出系统中所有的 Docker 网络,并显示它们的名称、ID、驱动程序和用途等信息。
2. 创建网络docker network create network_name此命令将创建一个新的 Docker 网络,并指定网络的名称。
3. 显示网络信息docker network inspect network_name此命令将显示指定 Docker 网络的详细信息,包括网络的配置、容器连接情况等。
4. 获取运行中容器的 IP 地址docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id此命令将获取指定运行中容器的 IP 地址。
5. 将容器连接到网络docker network connect network_name container_name_or_id此命令将指定容器连接到指定的 Docker 网络。
6. 在启动时将容器连接到网络docker run --network=network_name image_name此命令将在容器启动时将容器连接到指定的 Docker 网络。
7. 断开容器与网络的连接docker network disconnect network_name container_name_or_id此命令将断开指定容器与指定 Docker 网络之间的连接。
8. 删除网络docker network rm network_name此命令将删除指定的 Docker 网络。
Docker 卷(Volume)命令1. 创建卷docker volume create volume_name此命令将创建一个新的 Docker 卷,并指定卷的名称。
2. 列出所有卷docker volume ls此命令将列出系统中所有的 Docker 卷,并显示它们的名称。
3. 使用 -v 标志挂载卷docker run -v volume_name:/container/path image_name此命令将指定的 Docker 卷挂载到容器中的指定路径。
4. 使用 --mount 标志挂载卷docker run --mount source=volume_name,target=/container/path image_name此命令将指定的 Docker 卷挂载到容器中的指定路径。
5. 获取卷详细信息docker volume inspect volume_name此命令将显示指定 Docker 卷的详细信息,包括卷的配置、挂载点等。
6. 删除卷docker volume rm volume_name此命令将删除指定的 Docker 卷。
7. 使用绑定挂载挂载卷docker run -v /host/path:/container/path image_name此命令将主机上的指定路径挂载到容器中的指定路径。
8. 使用 --mount 标志创建绑定挂载卷docker run --mount type=bind,source=/host/path,target=/container/path image_name此命令将主机上的指定路径挂载到容器中的指定路径。
Docker Registry 命令1. 登录 Docker Hubdocker login此命令将提示您输入 Docker Hub 的用户名、密码和(可选)邮箱地址以登录 Docker Hub。
2. 将镜像推送到 Registrydocker push registry_name/image_name:tag此命令将指定的 Docker 镜像推送到指定的 Docker Registry。请确保已登录到相应的 Registry。
3. 从 Registry 下载镜像docker pull registry_name/image_name:tag此命令将从指定的 Docker Registry 下载指定的 Docker 镜像到本地 Docker 主机。
系统级 Docker 命令1. 获取 Docker 信息docker info此命令将显示 Docker 守护进程的系统信息,包括 Docker 版本、操作系统类型、内核版本等。
2. 获取正在运行容器的统计信息docker stats此命令将显示当前正在运行的所有容器的统计信息,包括 CPU 使用率、内存使用量、网络 IO、磁盘 IO 等。
3. 获取所有容器的统计信息docker stats $(docker ps -q)此命令将显示所有容器的统计信息,包括正在运行的和已停止的容器。
4. 显示 Docker 版本docker version此命令将显示 Docker 客户端和服务端的版本信息。
5. 获取详细对象信息(容器、镜像、卷等)docker inspect object_name_or_id此命令将显示指定 Docker 对象的详细信息,包括配置、网络设置、挂载点等。
6. 获取 Docker 使用情况摘要docker system df此命令将显示 Docker 系统中的存储资源使用情况摘要,包括镜像、容器、卷等的使用情况。
7. 清理 Docker 系统docker system prune此命令将清理 Docker 系统中未使用的镜像、容器、卷和网络,释放磁盘空间。
总结以上瑞哥介绍的所有命令,最后用表格给大家总结一下,方便大家记忆!
希望本文对您有所帮助,别忘了⭐哦!