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
    

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

相关推荐
EterNity_TiMe_2 分钟前
【论文复现】自动化细胞核分割与特征分析
运维·人工智能·python·数据分析·自动化·特征分析
脱了格子衬衫44 分钟前
linux安装ansible
linux·运维·ansible
黑龙江亿林等保2 小时前
云ECS服务器:哈尔滨三级等保的云计算解决方案
运维·服务器·云计算
小珑也要变强3 小时前
shell脚本基本概念讲解
linux·运维
爱吃喵的鲤鱼4 小时前
linux 用C语言编写自己的myshell
linux·运维·服务器·c语言·算法
_.Switch5 小时前
Python 自动化运维持续优化与性能调优
运维·开发语言·python·缓存·自动化·运维开发
南猿北者5 小时前
Docker Volume
运维·docker·容器
网络研究院7 小时前
Am I Isolated:一款安全态势基准测试工具
容器·工具·基准测试·安全态势
涔溪8 小时前
Docker简介
spring cloud·docker·eureka
内核程序员kevin9 小时前
在Linux环境下使用Docker打包和发布.NET程序并配合MySQL部署
linux·mysql·docker·.net