Docker 超详细入门教程:安装、常用命令、网络与 Compose 实战

前言

Docker 是当下主流的 Linux 容器化技术,能够实现应用快速部署、环境隔离、版本统一。本文整理 Windows、Linux、Mac 三大平台 Docker 安装步骤、镜像/容器核心命令、镜像源配置、数据卷、网络模式以及 Docker Compose 容器编排实战,附带常见问题解决方案,新手也可直接上手。


一、Docker 安装教程

1.1 Windows 系统安装 Docker Desktop

Windows 安装 Docker 依赖 WSL2 子系统,按照以下步骤依次操作:

步骤 1:开启系统功能

按下 Win + S 搜索 Windows 功能,勾选以下两项,完成后重启电脑:

  • 适用于 Linux 的 Windows 子系统
  • 虚拟机平台

步骤 2:配置 WSL2 为默认版本

以管理员身份运行 CMD,执行如下命令:

wsl --set-default-version 2
wsl --update --web-download

步骤 3:下载 Docker 安装包

根据自身 CPU 架构,前往官网下载对应版本安装包。

步骤 4:执行安装

  1. 双击安装包默认安装(默认路径 C 盘);
  2. 如需自定义安装目录,使用 CMD 执行以下命令:
start /w "" "Docker Desktop Installer.exe" install --installation-dir=D:\Develop\Docker

1.2 Linux(Ubuntu 24.04)安装 Docker

官方一键安装脚本地址:https://get.docker.com(需外网环境)

步骤 1:下载安装脚本

curl -fsSL https://get.docker.com -o install-docker.sh

步骤 2:执行安装

sudo sh install-docker.sh

步骤 3:启动 Docker 服务

sudo systemctl start docker

1.3 Mac 系统安装 Docker

Mac 端安装可参考其他相关教程,操作逻辑与 Windows 大体一致。


二、Docker 基础配置与常用命令

Docker 官方镜像仓库:Docker Hub

2.1 配置国内镜像加速源

国外镜像拉取速度缓慢,推荐配置国内镜像站,步骤如下:

步骤 1:编辑镜像配置文件

sudo vim /etc/docker/daemon.json

步骤 2:写入镜像源配置

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://mirror.ccs.tencentyun.com",
        "https://docker.1panel.live",
        "https://hub.rat.dev",
        "https://docker.mirrors.ustc.edu.cn/", 
        "https://hub-mirror.c.163.com/"
    ]
}

步骤 3:重启 Docker 生效

# 重新加载系统配置
sudo systemctl daemon-reload
# 重启 Docker 服务
sudo systemctl restart docker

2.2 镜像相关命令

1)拉取镜像

语法:docker pull 镜像名[:版本号],不指定版本默认拉取 latest(最新版)

# 拉取最新版 Nginx
sudo docker pull nginx

# 完整写法(指定仓库、命名空间、版本)
sudo docker pull docker.io/library/nginx:latest

# 指定 CPU 架构拉取镜像
sudo docker pull --platform=xxx nginx

参数说明:

  • docker.io:Docker 官方镜像仓库地址
  • library:官方公共命名空间
  • nginx:latest:镜像名称 + 镜像版本

2)查看本地所有镜像

sudo docker images

3)删除镜像

语法:docker rmi 镜像ID/镜像名称

sudo docker rmi nginx

2.3 容器核心命令

1)创建并运行容器

  • docker create:仅创建容器,不启动
  • docker run:创建并立刻运行容器

示例(Nginx 容器):

sudo docker run -d --name test_nginx -p 80:80 -v /blog/html:/usr/share/nginx/html nginx 

参数详解:

  • -d:后台守护模式运行容器,不占用当前终端
  • --name:自定义容器名称
  • -p 宿主机端口:容器端口:端口映射,对外暴露服务
  • -v 宿主机目录:容器目录:数据卷挂载,实现文件互通与数据持久化

2)数据卷(-v)详解

数据卷用于持久化容器数据,防止容器删除后数据丢失,分为两种挂载方式:

① 绑定挂载(指定宿主机真实目录)
sudo docker run -d -p 80:80 -v /blog/html:/usr/share/nginx/html nginx 

注意:宿主机路径必须以 /./ 开头,否则会被识别为命名卷。

② 命名卷(Docker 托管存储)
  1. 创建命名卷
sudo docker volume create nginx_html
  1. 挂载命名卷运行容器
sudo docker run -d -p 80:80 -v nginx_html:/usr/share/nginx/html nginx 
  1. 查看命名卷真实存储路径
sudo docker volume inspect nginx_html
  1. 查看所有命名卷
sudo docker volume list
  1. 删除指定命名卷
sudo docker volume rm nginx_html
  1. 清理所有未被容器使用的卷
sudo docker volume prune -a

补充:命名卷首次使用时,会自动同步容器内目录文件;绑定挂载无此特性。

3)环境变量(-e)

使用 -e 向容器传递环境变量,以 MongoDB 为例:

sudo docker run -d \
    --name my_mongo \
    -p 27017:27017 \
    -e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
    -e MONGO_INITDB_ROOT_PASSWORD=secret \
    mongo

Windows 端连接 MongoDB 命令:

mongosh "mongodb://用户名:密码@服务器IP地址:27017"

4)查看容器状态

# 仅查看正在运行的容器
sudo docker ps

# 查看所有容器(运行+停止)
sudo docker ps -a

5)启动 / 停止容器

# 启动容器
sudo docker start test_nginx

# 停止容器
sudo docker stop test_nginx

6)查看容器详细信息

sudo docker inspect 容器ID/容器名称

7)删除容器

# 普通删除(仅支持已停止容器)
sudo docker rm test_nginx

# 强制删除(运行中容器也可删除)
sudo docker rm -f test_nginx

8)临时调试容器

alpine 是超轻量 Linux 镜像,常用于临时测试:

sudo docker run -it --rm alpine

参数:

  • -it:交互式终端,进入容器内部
  • --rm:容器退出后自动删除
    退出容器输入:exit

9)容器重启策略

# 容器无论手动停止/异常崩溃,都会自动重启
sudo docker run -d --restart always nginx 

# 仅异常崩溃重启,手动停止后不再重启
sudo docker run -d --restart unless-stopped nginx 

10)查看容器运行日志

# -f 实时追踪日志输出
sudo docker logs test_nginx -f

11)进入容器内部执行命令

  1. 直接在容器内执行命令
sudo docker exec 容器ID ps -ef
  1. 进入交互式终端(常用)
sudo docker exec -it 容器ID/容器名 /bin/bash

实操示例:

# 启动 Nginx 容器
sudo docker run -d --name test -p 8080:80 nginx
# 进入容器终端
sudo docker exec -it test /bin/bash
# 进入 Nginx 网页目录
cd /usr/share/nginx/html

补充:容器内系统为极简环境,缺少命令可通过包管理器安装:
Debian/Ubuntu 系列:apt update && apt install vim
CentOS 系列:yum install vim


三、Dockerfile 简介

Dockerfile 是镜像构建脚本,内部逐条记录镜像的制作流程与配置,可基于该文件自定义专属镜像。


四、Docker 网络模式

Docker 内置三种默认网络:bridgehostnone,同时支持自定义桥接网络。

4.1 bridge 桥接模式(默认)

容器间可通过网络名称/容器名互通,隔离宿主机网络。

1)创建自定义网络

sudo docker network create network1

2)将容器加入自定义网络(MongoDB)

sudo docker run -d \
    --name my_mongodb \
    --hostname mongo \
    -e MONGO_INITDB_ROOT_USERNAME=admin \
    -e MONGO_INITDB_ROOT_PASSWORD=123456 \
    --network network1 \
    mongo

3)部署可视化工具 Mongo-Express(同网络互通)

sudo docker run -d \
    --name my_mongo_express \
    -p 9000:8081 \
    -e ME_CONFIG_MONGODB_SERVER=my_mongodb \
    -e ME_CONFIG_MONGODB_ADMINUSERNAME=admin \
    -e ME_CONFIG_MONGODB_ADMINPASSWORD=123456 \
    --network network1 \
    mongo-express

访问地址:服务器IP:9000,登录账号密码:admin / 123456

排坑提示:无法访问请检查服务器防火墙、云平台安全组、端口映射

4.2 host 主机模式

容器直接共享宿主机网络,无需端口映射,容器服务占用宿主机端口:

sudo docker run -d --network host nginx

4.3 none 无网络模式

容器禁用所有网络连接,仅本地运行,无外网/内网通信能力。

4.4 网络管理命令

# 查看所有网络
sudo docker network list

# 删除自定义网络(默认网络无法删除)
sudo docker network rm 网络ID/网络名称

五、Docker Compose 容器编排

Docker Compose 用于批量管理多容器应用,通过 compose.yaml 配置文件一键启停整套服务。

5.1 compose.yaml 配置文件(MongoDB + Mongo-Express)

version: '3.8'

# 定义自定义网络
networks:
  network1:
    driver: bridge

# 定义多个服务(容器)
services:
  # MongoDB 服务
  my_mongodb:
    image: mongo
    container_name: my_mongodb
    hostname: mongo
    restart: unless-stopped
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: 123456
    networks:
      - network1

  # 可视化客户端服务
  my_mongo_express:
    image: mongo-express
    container_name: my_mongo_express
    restart: unless-stopped
    ports:
      - "9000:8081"
    environment:
      ME_CONFIG_MONGODB_SERVER: my_mongodb
      ME_CONFIG_MONGODB_ADMINUSERNAME: admin
      ME_CONFIG_MONGODB_ADMINPASSWORD: 123456
    networks:
      - network1
    depends_on:
      - my_mongodb

5.2 Compose 常用命令

# 后台启动所有服务(读取当前目录 compose.yaml)
sudo docker compose up -d

# 停止并删除容器、网络
sudo docker compose down

# 仅停止容器,不删除
sudo docker compose stop

# 启动已存在的容器
sudo docker compose start

# 指定配置文件启动
sudo docker compose -f /file/compose.yaml up -d

六、常见问题解决方案

问题描述

电脑网络正常(QQ/微信可联网),但浏览器无法访问网页,WSL 环境也存在网络异常。

问题原因

使用代理工具后,Windows 自动代理/手动代理 未关闭,导致浏览器网络异常。

解决办法

  1. 打开 Windows 设置 → 网络和 Internet → 代理;
  2. 关闭 使用代理服务器 选项,保存配置即可。

结语

本文覆盖 Docker 从安装、基础命令、数据卷、网络到 Compose 编排的全流程内容,是入门与日常运维的常备手册。后续可基于 Dockerfile 自定义镜像、结合集群实现高阶部署。


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇