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

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

相关推荐
Lupino1 小时前
别再只聊 AI 写代码了:技术负责人要把“变更治理”提到第一优先级
python·docker·容器
Java陈序员2 天前
轻量强大!一款现代化的 Kubernetes 集群管理与监控工具!
云原生·容器·kubernetes
爱吃橘子橙子柚子3 天前
3CPU性能排查总结(超详细)【Linux性能优化】
运维·cpu
Sheffield4 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield4 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
马艳泽4 天前
win10下运行Start Broker and Proxy报错解决
docker
舒一笑5 天前
程序员效率神器:一文掌握 tmux(服务器开发必备工具)
运维·后端·程序员
NineData5 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
用户13573999256605 天前
Windows 从 0 搭建 WSL2 原生 AI 开发环境:Codex + Docker + VSCode
docker
vi_h5 天前
在 macOS 上通过 Docker 安装并运行 Ollama(详细可执行教程)
macos·docker·ollama