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

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

相关推荐
2301_794333916 分钟前
实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
linux·服务器·docker·实验室
打码人的日常分享27 分钟前
运维服务方案,运维巡检方案,运维安全保障方案文件
大数据·运维·安全·word·安全架构
JCGKS1 小时前
Docker|“ssh: connect to host xxx.xxx.xxx.xxx port 8000: Connection refused“问题解决
docker·ssh·端口·listen·tcp三次握手
荣光波比1 小时前
Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装
linux·运维·服务器·nginx·云计算
武文斌771 小时前
单片机:DS18B20测温度、74HC595扩展芯片、8*8LED矩阵
运维·服务器·单片机·嵌入式硬件
惜.己2 小时前
Docker启动失败 Failed to start Docker Application Container Engine.
spring cloud·docker·eureka
fengfuyao9852 小时前
诊断并修复SSH连接Github时遇到的“connection closed“错误
运维·ssh·github
scugxl2 小时前
centos7 docker离线安装
运维·docker·容器
绿箭柠檬茶4 小时前
Ubuntu 使用 Samba 共享文件夹
linux·运维·ubuntu
计算机小手4 小时前
AI 驱动数据分析:开源 SQLBot 项目探索,基于大模型和 RAG 实现精准问数与图表挖掘
经验分享·docker·开源软件