当前位置:首页>Linux>Docker安装【Windows-Linux】;Docker一键启动应用:Nginx、Springboot、MinIO、Redis、MySQL;

Docker安装【Windows-Linux】;Docker一键启动应用:Nginx、Springboot、MinIO、Redis、MySQL;

  • 2026-10-11 07:41:08
Docker安装【Windows-Linux】;Docker一键启动应用:Nginx、Springboot、MinIO、Redis、MySQL;

一、docker介绍

Docker是一个开源的应用容器引擎,是一个轻量级容器技术。基于Go语言实现的云开源项目,诞生于2013年初,最初是dotCloud公司发起。由镜像(Image)、容器(Container)、仓库(Repository)三大核心组成。

核心概念

docker主机(Host):安装了docker程序的机器(docker直接安装在操作系统之上)。

docker客户端(Client):连接docker主机进行操作。

docker仓库(Registry):用来保存各种打包好的软件镜像。

docker镜像(Images):软件打包好的镜像,放在docker仓库中。

docker容器(Container):镜像启动后的实例称为一个容器,容器是独立运行的一个或一组应用。

使用docker的步骤

1、安装docker

2、去docker仓库找到这个软件对应的镜像

3、使用docker运行这个镜像,这个镜像就会生成一个docker容器

4、对容器的启动停止就是对软件的启动停止

二、docker下载与安装

1、docker-desktop下载

下载docker-desktop

网址:https://www.docker.com/products/docker-desktop/

点击download for windows

下载完成

2、docker安装【windows】

(1)、安装docker desktop

右击,以管理员运行程序

默认勾选user wsl 2 instead of hyper-v和add shortcut to desktop,点击ok

开始安装

安装完成,点击close and restart重启电脑

(2)、配置docker desktop环境

因为docker desktop 是可以部署在windows 上来运行docker的应用服务的,其基于windows 的 Hyper-V服务和WSL2内核的Windows上创建一个子系统(linux)。

从而实现其在windows上运行docker。所以电脑上需要开启Hyper-V服务和安装WSL2。

1、开启Hyper-V服务

安装Hyper-V管理工具、安装Hyper-V平台、windows虚拟机监控程序平台、容器、适用于Linux的windows子系统共5个服务(安装docker desktop的时候就安装了适用于linux的windows子系统)

安装完成后,立即重启电脑生效

2、安装wsl

注意:使用命令安装有问题,不知道原因,所以不要用命令安装,直接用微软安装包安装,简单。

下载wsl升级包

github地址:https://github.com/microsoft/WSL/releases

最新版是2.2.3,点击下载x64的

使用msi程序,安装完成wsl

wsl安装成功后,可以查看安装的linux版本

命令:wsl --list --verbose  或命令:wsl -l -o

看到安装了2个linux版本。

如果要删除一个,可以注销。比如我们删除docker-desktop-data

命令:wsl --unregister docker-desktop-data

linux注销成功。只剩下一个linux了。但是不建议。因为wsl安装后,就又是两个了。

三、启动docker

选择Docker Desktop的设置,直接选择默认的Use recommended settings (requires administrator password),再点击Finished完成设置。

docker启动成功

这个界面是可视化管理使用的。

docker的使用cmd命令行。和linux操作一样。

例如:搜索minio镜像

docker报错1:

提示docker engine stopped

过一会弹出错误框:unexpected wsl error

原因分析:

第一个wsl是自己下载的,安装了docker启动不了。第二个是donet群友发的,安装了docker也启动不了。第三个是群友发的github上下载的,安装后docker启动正常了

前两个包都已删除,只保留最新的wsl包2.2.3.0就行了

存放路径如下:

3、docker安装【centos】

(1)查看当前的内核版本【官方建议linux内核3.10以上,3.8的其实也能运行起来。】

uname -r

结果:3.10.0-1160.71.1.el7.x86_64

(2)安装必要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

(3)设置yum源

【中央仓库】--一般用不了需要开vpn

yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo

设置中央仓库有时候会报错。所以建议设置阿里仓库

【阿里仓库】--一般用阿里仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

设置阿里仓库就正常

4)安装docker

(1)查看可用版本

yum list docker-ce --showduplicates | sort -r

(2)选择一个版本安装

       yum install docker-ce-版本号

说明:docker镜像有很多,有些带有.centos,有的不带。安装没有要求,都可以安装。

yum install docker-ce-26.1.4-1.el7

说明:比如最新的镜像是第一个。安装命令就是docker-ce-26.1.4-1.el7【不要.x86_64和3:】出现Complete!说明安装成功。

5)验证docker是否安装成功

docker --version

6)启动docker服务并设置开机自启

【启动docker服务】systemctl start docker

【设置开机自启】systemctl enable docker

【重启docker服务】systemctl restart docker

【查看docker服务状态】systemctl status docker

未启动状态:

启动状态:

三、docker部署应用

1、compose一件部署所有应用

Docker Compose 是官方用来「一次性批量跑一堆容器」的工具

CentOS 装了 Docker + Docker Compose 后,一条命令就能一次性启动:Vue + SpringBoot + Redis + MinIO  + MySQL  所有服务!

1.1、compose安装【centos】

安装docker-compose

命令:yum install -y docker-compose-plugin

查看docker-compose是否安装成功

命令:docker compose version

1.2、compose一件部署所有应用【vue单系统】

一键启动所有服务

说明:需要在home下创建以下目录

java:存放springboot

minio/data:存放minio文件

mysql/data:存放mysl数据

redis/data:redis做持久化存放数据

vue:存放vue代码dist

docker compose文件如下:

【vue单项目】 注意:密码部分用***号代替

version: '3.8'services:  # Vue 管理后台  nginx-vue:    image: nginx:alpine    container_name: nginx-vue    restart: always    ports:      - "80:80"    volumes:      # 挂载静态文件目录      - /home/vue/dist:/usr/share/nginx/html      # 挂载自定义Nginx配置文件【后面必须是default.conf,这样才能有自定义的配置覆盖默认的】      - /home/vue/nginx.conf:/etc/nginx/conf.d/default.conf  # SpringBoot 后端  # springboot-api:    # build: .    # container_name: springboot-api    # restart: always    # ports:      # - "8080:8080"    # depends_on:      # - mysql      # - redis      # - minio    # environment:      # - SPRING_PROFILES_ACTIVE=prod  # Redis  redis:    image: redis:7    container_name: redis    restart: always    ports:      - "6379:6379"    volumes:      - /home/redis/data:/data  #数据目录【存持久化数据】    # 单行写法    command: redis-server --requirepass *** --appendonly yes  #加密码,开启持久化【存持久化数据必须开启】    # 多行写法    command: >      redis-server      --requirepass ***       --appendonly yes  # MinIO  minio:    image: minio/minio:RELEASE.2024-12-18T13-15-44Z  # 指定版本【2024最后一个版本】    container_name: minio    restart: always    ports:      - "9000:9000"      - "9001:9001"    environment:      MINIO_ROOT_USER: admin      MINIO_ROOT_PASSWORD: ***    volumes:      - /home/minio/data:/data    command: server /data --console-address ":9001"  # MySQL  mysql:    image: mysql:8.0    container_name: mysql    restart: always    ports:      - "3306:3306"    environment:      MYSQL_ROOT_PASSWORD: ***      MYSQL_DATABASE: mo_fang    volumes:      - /home/mysql/data:/var/lib/mysql  #mysql数据存放位置【/home/mysql/data】

docker操作命令

# 创建+启动容器docker compose up -d#停止并删除所有容器【停止所有容器、删除所有容器、删除网络、不删除数据卷(data下的数据在)】#【使用场景:1、要彻底关掉所有服务;2、要修改 docker-compose.yml 大版本配置;3、要重新干净启动所有服务;】docker compose down# 启动全部docker compose start# 停止全部docker compose stop# 重启全部docker compose restart# 查看所有日志docker compose logs -f

nginx说明:

nginx要挂自己配置文件,否则nginx单文件路由定位的方式,docker运行后会找不到目录文件报错404

nginx配置文件目录:/home/vue/nginx.conf

配置文件如下:

server {    listen 80;    server_name localhost;    # 这里必须是docker容器内路径!!!    root /usr/share/nginx/html;    index index.html;    location / {        try_files $uri $uri/ /index.html;    }}

docker compose文件在nginx后必须加上这样,配置才能生效

重启docker后系统访问正常了

minio说明:

因为2025之后minio很多功能没了,所以要用2024之前的minio

查询minio镜像的方法

windows版本:

网址:https://hub.docker.com/r/minio/minio/tags 【docker官方minio地址,开魔法才能访问】

这是最新版镜像

要找2024的镜像,往下拉,往后翻页,这就是2024最后的版本

3个版本说明如下,我们选择标准版就行,后面就是docker pull地址

把docker compose文件放在某个目录下:/opt/king

进入目录,一键启动所有服务:

命令:

cd /opt/king

docker compose up -d【新版命令】

如果用旧版命令:docker-compose up -d

会报错

新命令启动报错,这是因为docker镜像问题,需要更换镜像地址

检测镜像地址是否可用【测试一个镜像源是否能用,必须加上 /v2/ 路径:】

命令:curl -I https://docker.1panel.live/v2/ 

✅ 可用 → 返回 HTTP/1.1 401 Unauthorized

这是正常的,代表镜像站能连通,只是需要登录。

❌ 不可用 → 返回

Connection timed out(连接超时)
Could not resolve host(无法解析)
卡着不动

以下说明可用:

401可用

200表示地址能用

  • 状态码是 200 OK,并且 Content-Type: application/json,说明它返回的是标准的 JSON 格式响应,不是网页。
  • 出现了 docker-distribution-api-version: registry/2.0,直接证明它是支持 Docker Registry V2 协议的标准镜像仓库。
  • 它返回了一个空的 JSON 对象(Content-Length: 2),这是公开镜像源的常见响应,代表你可以匿名拉取镜像,不需要额外认证。

以下说明不可用:

这样的说明地址不能用了

虽然返回了 200 OK,但它不是一个合法的镜像仓库。

从响应头能看到:content-type: text/html,说明它返回的是一个网页,不是 Docker 镜像仓库的 API 响应。所以这个地址不能用

403报错,说明拒绝了你的请求,镜像源本身还能连通,但不允许你访问,无法用来拉取 Docker 镜像,所以也不能用了

302重定向,跳转到了docker.lms.run/v2/

响应的 Content-Type: text/html,说明它最终还是会返回网页内容,而不是标准的 Registry API 响应。说明不可用

修改docker镜像

新建或编辑 Docker 配置文件:vi /etc/docker/daemon.json【一般没有这个文件,命令自动创建】

粘贴镜像地址【以下地址可用,已测试】

{  "registry-mirrors": [    "https://docker.1panel.live",    "https://docker.1ms.run",    "https://docker-0.unsee.tech",    "https://lispy.org",    "https://docker.m.daocloud.io",    "https://proxy.vvvv.ee",    "https://registry.cyou",    "https://docker.m.daocloud.io",    "https://mirror.iscas.ac.cn",    "https://docker.m.daocloud.io",    "https://docker.kejilion.pro"  ]}

保存并退出,重启 Docker 服务

命令:

systemctl daemon-reload

systemctl restart docker

测试拉取镜像

命令:docker pull hello-world

Pull complete 表示镜像拉取成功。说明docker没问题了

一键启动所有服务

以下服务会被启动

Vue + Nginx 80
SpringBoot 8080
Redis 6379
MinIO 9000/9001
MySQL 3306

查看是否启动成功

命令:docker ps

看到没有服务,说明没重启成功

关闭所有服务

命令:docker-compose down

启动所有服务:docker compose up -d

再次重启就报错,因为修改了docer compose文件就要先重启docker

重启docker:systemctl restart docker

再启动就好了

再查看,nginx、redis、minio、mysql都启动起来了

验证服务:

vue+nginx启动正常

minio正常登录,并且所有功能齐全

redis正常了

mysql也正常连接了

注意:默认数据库mo_fang是容器里配置的数据库

首次链接报错,这是因为

MySQL 8.0 改用了caching_sha2_password 加密方式,而你本地的数据库客户端(DBeaver/Navicat)默认不允许从服务器获取公钥,所以直接报错。

把allowPublicKeyRetrieval设为 true就好了

docker compose启动了所有应用。每个应用可以单独操作,命令如下

vue+nginx

# 只启动前端docker compose up -d nginx-vue# 只停止前端docker compose stop nginx-vue# 只重启前端docker compose restart nginx-vue# 查看前端日志docker compose logs -f nginx-vue

redis

# 只启动docker compose up -d redis# 只停止docker compose stop redis# 只重启Redisdocker compose restart redis# 查看日志docker compose logs -f redis

minio

# 只启动 miniodocker compose up -d minio# 只停止 miniodocker compose stop minio# 只重启 miniodocker compose restart minio# 只查看 minio 日志docker compose logs -f minio

mysql

# 只启动docker compose up -d mysql# 只停止docker compose stop mysql# 只重启MySQLdocker compose restart mysql# 查看日志docker compose logs -f mysql

1.2、compose一件部署所有应用【vue多系统】

nginx部署2套系统,一套web前端,端口:80;一套admin后台管理,端口:8080;

需要在/home/vue下创建两个目录web和admin

docker-compose.yml配置如下

services:  # 前台网站Vue--80端口  nginx-web:    image: nginx:alpine    container_name: nginx-web    restart: always    ports:      - "80:80"    # 宿主机 8080 → 容器 80    volumes:      - /home/vue/web/dist:/usr/share/nginx/html        # 前台dist      - /home/vue/web/nginx.conf:/etc/nginx/conf.d/default.conf  # 后台管理Vue--8080端口  nginx-admin:    image: nginx:alpine    container_name: nginx-admin    restart: always    ports:      - "8080:80"    # 宿主机 8080 → 容器 80    volumes:      - /home/vue/admin/dist:/usr/share/nginx/html       # 后台dist      - /home/vue/admin/nginx.conf:/etc/nginx/conf.d/default.conf

2个nginx配置文件一模一样,一个存放在前端目录/home/vue/web,一个存放在后台管理目录/home/vue/admin

【web/nginx.conf和admin/nginx.conf 都用这个】

server {    listen 80;    server_name localhost;    # 这里必须是docker容器内路径!!!    root /usr/share/nginx/html;    index index.html;    location / {        try_files $uri $uri/ /index.html;    }}

三、docker常见错误

4.1、运行docker命令报错error

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

errors pretty printing info

原因分析:

新安装了docker没有设置开机启动,所以docker没有正常启动。

将docker设置开机启动命令:systemctl enable docker

解决方法:

重启docker服务

命令sudo docker restart

然后再运行docker命令就正常了

最新文章

随机文章