Docker 常用命令详解(详细版)

Docker 是一个开源的容器化平台,它使得开发人员可以打包应用程序及其所有依赖项,并在任何环境中运行。Docker 提供了简单而强大的命令行工具来管理容器、镜像、网络等。本文将详细介绍 Docker 的常用命令及其使用方法。

1. 安装 Docker

在使用 Docker 之前,首先需要安装 Docker。以下是在不同操作系统上安装 Docker 的方法:

Ubuntu

复制代码
sudo apt-get update
sudo apt-get install docker.io

CentOS

复制代码
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io

macOS 和 Windows

可以从 Docker 官方网站下载 Docker Desktop:

安装完成后,启动 Docker 并验证安装是否成功:

复制代码
docker --version

2. Docker 基本命令

2.1 启动和停止 Docker 服务

启动 Docker 服务:

复制代码
sudo systemctl start docker

停止 Docker 服务:

复制代码
sudo systemctl stop docker

重启 Docker 服务:

复制代码
sudo systemctl restart docker

查看 Docker 服务状态:

复制代码
sudo systemctl status docker

2.2 查看 Docker 信息

查看 Docker 系统信息:

复制代码
docker info

查看 Docker 版本:

复制代码
docker --version

查看 Docker 客户端和服务器版本:

复制代码
docker version

3. Docker 镜像管理

3.1 搜索镜像

在 Docker Hub 上搜索镜像:

复制代码
docker search <image_name>

例如,搜索 Ubuntu 镜像:

复制代码
docker search ubuntu

3.2 拉取镜像

从 Docker Hub 拉取镜像:

复制代码
docker pull <image_name>:<tag>

例如,拉取 Ubuntu 20.04 镜像:

复制代码
docker pull ubuntu:20.04

3.3 查看本地镜像

查看本地所有的镜像:

复制代码
docker images

查看指定镜像:

复制代码
docker images <image_name>

3.4 删除镜像

删除本地镜像:

复制代码
docker rmi <image_id>

强制删除镜像(即使有容器依赖):

复制代码
docker rmi -f <image_id>

4. Docker 容器管理

4.1 运行容器

运行一个新的容器:

复制代码
docker run -it --name <container_name> <image_name>:<tag>

例如,运行一个 Ubuntu 容器并进入交互模式:

复制代码
docker run -it --name my_ubuntu ubuntu:20.04 /bin/bash

运行容器并在后台运行:

复制代码
docker run -d --name <container_name> <image_name>:<tag>

映射端口和挂载数据卷:

复制代码
docker run -d -p <host_port>:<container_port> -v <host_dir>:<container_dir> <image_name>:<tag>

例如,运行一个 Nginx 容器并将宿主机的 8080 端口映射到容器的 80 端口:

复制代码
docker run -d -p 8080:80 --name my_nginx ngin

5. Docker 网络管理

5.4 删除网络

删除不再使用的 Docker 网络:

复制代码
docker network rm <network_name>

例如,删除名为 my_bridge_network 的网络:

复制代码
docker network rm my_bridge_network

5.5 查看网络详情

查看指定网络的详细信息,包括连接到该网络的容器:

复制代码
docker network inspect <network_name>

例如,查看 bridge 网络的详细信息:

复制代码
docker network inspect bridge

5.6 使用自定义网络

在启动容器时,可以使用 --network 参数指定自定义网络:

复制代码
docker run -it --name <container_name> --network <network_name> <image_name>:<tag>

例如,使用自定义网络 my_bridge_network 启动一个 Ubuntu 容器:

复制代码
docker run -it --name my_ubuntu --network my_bridge_network ubuntu:20.04 /bin/bash

5.7 容器间通信

连接到同一网络的容器可以通过容器名称互相通信。例如,如果 container1container2 都连接到 my_bridge_network,则 container1 可以通过 ping container2 来测试网络连通性。

复制代码
ping container2

6. Docker 数据卷管理

Docker 数据卷用于在容器和宿主机之间共享数据,以及在容器之间共享数据。数据卷是持久化的,即使容器被删除,数据卷中的数据也不会丢失。

6.1 创建数据卷

创建一个新的数据卷:

复制代码
docker volume create <volume_name>

例如,创建一个名为 my_volume 的数据卷:

复制代码
docker volume create my_volume

6.2 查看数据卷

查看所有数据卷:

复制代码
docker volume ls

查看指定数据卷的详细信息:

复制代码
docker volume inspect <volume_name>

例如,查看 my_volume 的详细信息:

复制代码
docker volume inspect my_volume

6.3 删除数据卷

删除指定数据卷:

复制代码
docker volume rm <volume_name>

强制删除所有未使用的数据卷:

复制代码
docker volume prune

6.4 使用数据卷

在运行容器时,可以使用 -v 参数挂载数据卷:

复制代码
docker run -it --name <container_name> -v <volume_name>:<container_path> <image_name>:<tag>

例如,将数据卷 my_volume 挂载到容器 /data 目录:

复制代码
docker run -it --name my_ubuntu -v my_volume:/data ubuntu:20.04 /bin/bash

6.5 挂载宿主机目录作为数据卷

将宿主机目录挂载到容器中:

复制代码
docker run -it --name <container_name> -v <host_path>:<container_path> <image_name>:<tag>

例如,将宿主机的 /tmp/data 目录挂载到容器的 /data 目录:

复制代码
docker run -it --name my_ubuntu -v /tmp/data:/data ubuntu:20.04 /bin/bash

6.6 数据卷容器

使用数据卷容器可以在多个容器之间共享数据卷。首先,创建一个带有数据卷的容器:

复制代码
docker create -v <container_path> --name <volume_container_name> <image_name>:<tag>

然后,在其他容器中使用 --volumes-from 参数挂载该数据卷:

复制代码
docker run -it --name <container_name> --vol

6.7 备份和恢复数据卷

备份数据卷
  1. 启动一个临时容器,挂载目标数据卷,并将数据卷内容复制到宿主机目录:

    复制代码
    docker run --rm -v <volume_name>:/source -v <host_backup_path>:/backup busybox tar -czvf /backup/backup.tar.gz -C /source .

    例如,备份 my_volume 数据卷到 /tmp/backup 目录:

    复制代码
    docker run --rm -v my_volume:/source -v /tmp/backup:/backup busybox tar -czvf /backup/backup.tar.gz -C /source .
  2. 恢复数据卷

    创建一个新的数据卷,并将备份文件解压到该数据卷:

    复制代码
    docker run --rm -v <new_volume_name>:/target -v <host_backup_path>:/backup busybox tar -xzvf /backup/backup.tar.gz -C /target

    例如,恢复备份文件到 new_volume 数据卷:

    复制代码
    docker run --rm -v new_volume:/target -v /tmp/backup:/backup busybox tar -xzvf /backup/backup.tar.gz -C /target

希望你喜欢这篇文章!请点关注和收藏吧。你的关注和收藏会是我努力更新的动力,祝关注和收藏的帅哥美女们今年都能暴富。如果有更多问题,欢迎随时提问

相关推荐
AC赳赳老秦12 分钟前
Shell 脚本批量生成:DeepSeek 辅助编写服务器运维自动化指令
运维·服务器·前端·vue.js·数据分析·自动化·deepseek
菜鸟思维18 分钟前
优化NextJs 项目的Docker 镜像 从3.62G 优化到 296.85M
docker
学Linux的语莫26 分钟前
linux的root目录缓存清理
linux·运维·服务器
oMcLin27 分钟前
如何在 SUSE Linux Enterprise Server 15 上部署并优化 K3s 集群,提升轻量级容器化应用的资源利用率?
linux·运维·服务器
怣疯knight33 分钟前
Docker Desktop 4.55.0版本安装成功教程
windows·docker
Run Out Of Brain42 分钟前
解决nginx代理配置下wordpress的 /wp-admin/返回 302 重定向到登录页问题
运维·nginx
Ghost Face...1 小时前
深入解析YT6801驱动模块架构
linux·运维·服务器
线束线缆组件品替网1 小时前
Amphenol LTW 防水线缆 IP67/IP68 结构解析
运维·网络·人工智能·汽车·硬件工程·材料工程
放寒假脚后跟v1 小时前
Pod 的 YAML 文件中 exitCode 字段的具体含义、不同取值代表的场景
运维·云原生·容器·kubernetes·k8s
东方佑1 小时前
使用Docker Compose一键部署OnlyOffice:完整指南与配置解析
运维·docker·容器