梳理docker的提供机制

我们这里说一下docker提供的全域认识

1.如何搭建使用docker的环境

2。如何使用docker的镜像,启动一个docker,使用docker提供的网络机制,数据卷机制。

3.查看docker的情况和状态

好的!下面从"全域认识"的角度,系统性地梳理 Docker 的核心使用流程,并补充对应的常用命令。内容分为三部分,对应你提出的三个问题:


1. 如何搭建使用 Docker 的环境

目标:在本地或服务器上安装并验证 Docker 是否可用。

常见操作系统安装方式(以 Linux 为例):
  • Ubuntu/Debian:

    bash 复制代码
    # 更新包索引
    sudo apt update
    
    # 安装必要依赖
    sudo apt install -y ca-certificates curl gnupg lsb-release
    
    # 添加 Docker 官方 GPG 密钥
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
    # 设置稳定版仓库
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    # 安装 Docker Engine
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • CentOS/RHEL:

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

    直接下载安装 Docker Desktop

启动 Docker 服务 & 验证安装:
bash 复制代码
# 启动 Docker 服务(Linux)
sudo systemctl start docker
sudo systemctl enable docker  # 开机自启

# 验证是否安装成功
docker --version          # 查看版本
docker info               # 查看详细信息
docker run hello-world    # 运行测试容器

💡 提示:为避免每次加 sudo,可将当前用户加入 docker 用户组:

bash 复制代码
sudo usermod -aG docker $USER
# 然后重新登录终端

2. 如何使用 Docker 的镜像、容器、网络和数据卷

(1)镜像(Image)操作
bash 复制代码
# 搜索镜像(如 nginx)
docker search nginx

# 拉取镜像
docker pull nginx:latest

# 列出本地镜像
docker images

# 删除镜像
docker rmi <IMAGE_ID 或 REPOSITORY>
(2)启动容器(Container)
bash 复制代码
# 后台运行一个 nginx 容器,映射 80 端口
docker run -d --name my-nginx -p 8080:80 nginx

# 交互式运行(如 Ubuntu)
docker run -it ubuntu /bin/bash

# 停止/启动/重启容器
docker stop my-nginx
docker start my-nginx
docker restart my-nginx

# 查看运行中的容器
docker ps
# 查看所有容器(包括已停止的)
docker ps -a

# 删除容器
docker rm <CONTAINER_ID 或 NAME>
# 强制删除正在运行的容器
docker rm -f my-nginx
(3)Docker 网络机制

Docker 默认提供三种网络驱动:bridge(默认)、host、none,也可自定义。

bash 复制代码
# 查看网络
docker network ls

# 创建自定义 bridge 网络
docker network create my-net

# 启动容器时指定网络
docker run -d --name app1 --network my-net nginx
docker run -d --name app2 --network my-net redis

# 容器间可通过容器名互相通信(在同一个自定义网络中)
# 例如 app1 可 ping app2

✅ 自定义网络支持 DNS 解析(容器名即主机名),比默认 bridge 更适合多容器通信。

(4)数据卷(Volume)机制 ------ 持久化数据
bash 复制代码
# 方式一:使用命名卷(推荐)
docker volume create my-vol
docker run -d --name web -v my-vol:/usr/share/nginx/html nginx

# 方式二:绑定挂载(Bind Mount)------直接挂载宿主机目录
docker run -d --name web2 -v /host/path:/container/path nginx

# 查看卷
docker volume ls

# 查看卷详情
docker volume inspect my-vol

# 删除卷(需先删除使用它的容器)
docker volume rm my-vol

💡 数据卷独立于容器生命周期,即使容器删除,数据仍保留。


3. 查看 Docker 的情况和状态

bash 复制代码
# 查看 Docker 系统整体信息
docker info

# 查看运行中的容器
docker ps

# 查看容器日志
docker logs my-nginx

# 实时跟踪日志
docker logs -f my-nginx

# 查看容器资源使用情况(CPU、内存等)
docker stats

# 查看单个容器的详细信息(IP、挂载点、网络等)
docker inspect my-nginx

# 查看镜像占用空间
docker system df

# 清理无用资源(停止的容器、无用镜像、构建缓存等)
docker system prune -a

补充:常用组合命令速查表

功能 命令
启动带端口映射 + 数据卷 + 自定义网络的容器 docker run -d --name app -p 8080:80 -v app_data:/app/data --network my-net image_name
进入运行中的容器 docker exec -it app /bin/bash
复制文件到容器 docker cp ./file.txt app:/app/
查看容器 IP docker inspect -f '{``{range .NetworkSettings.Networks}}{``{.IPAddress}}{``{end}}' app

以上内容构成了对 Docker 的"全域认识"基础:环境搭建 → 核心组件使用(镜像/容器/网络/存储)→ 状态监控与运维。掌握这些,即可覆盖 90% 的日常开发和部署场景。

如需进一步深入(如 Docker Compose、Dockerfile 编写、多阶段构建等),可继续扩展。是否需要我补充?

相关推荐
一个天蝎座 白勺 程序猿9 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
分布式存储与RustFS13 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希12313 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
@兽血沸腾14 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
闲云自留地20 小时前
K8s 的记忆大脑!ETCD 集群部署、etcdctl 命令与备份恢复全通关
容器·kubernetes·etcd
讯捷蓝达20 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
爱和冰阔落1 天前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng1 天前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮1 天前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹1 天前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器