docker安装部署mysql,redis,rocketmq,nacos详细教程,附部分基础命令


以下是为 Ubuntu 24.04.1 定制的详细 Docker 教程,使用镜像加速,并包含 MySQL、Tomcat、Redis、RocketMQ、Nacos 的安装配置。


一、安装 Docker(阿里云镜像加速)

1. 卸载旧版本(如有)
sudo apt-get remove docker docker-engine docker.io containerd runc
2. 安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
3. 配置阿里云 Docker 镜像加速
# 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 添加阿里云 Docker 镜像源
sudo echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 更新源并安装 Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
4. 启动 Docker 并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
5. 验证 Docker 安装
docker --version

若遭遇了权限拒绝的问题。

解决办法

方法一:使用 sudo 命令以 root 权限运行 Docker 命令

在执行 Docker 命令时,于命令前添加 sudo,以 root 权限来运行:

sudo docker version

之后输入当前用户的密码,若密码正确,命令就会以 root 权限执行。

不过,每次执行 Docker 命令都使用 sudo 会稍显繁琐,并且存在一定的安全风险。所以,推荐采用下面的方法,将当前用户添加到 docker 用户组。

方法二:将当前用户添加到 docker 用户组
  1. 检查 docker 用户组是否存在
    可以使用以下命令查看系统中是否存在 docker 用户组:
cat /etc/group | grep docker

若存在 docker 用户组,会显示类似如下的信息:

docker:x:999:
  1. 创建 docker 用户组(若不存在)
    若系统中不存在 docker 用户组,可以使用以下命令创建:
sudo groupadd docker
  1. 将当前用户添加到 docker 用户组
    使用以下命令将当前用户添加到 docker 用户组:
sudo usermod -aG docker $USER

这里的 $USER 是当前用户的用户名。

  1. 更新用户组信息
    为了让修改生效,你可以注销当前用户,然后重新登录。或者使用以下命令更新当前会话的用户组信息:
newgrp docker
  1. 验证修改是否生效
    再次运行 docker version 命令,查看是否还会出现权限拒绝的错误:
docker version

在这里插入图片描述

注意事项

  • 把用户添加到 docker 用户组后,该用户就拥有了与 root 相近的权限,因为 Docker 允许用户以特权模式运行容器。所以,要谨慎管理 docker 用户组的成员。
  • 若在执行上述操作后仍有问题,可能需要检查 /var/run/docker.sock 文件的权限设置,确保该文件的权限允许 docker 用户组访问。可以使用以下命令查看和修改文件权限:
ls -l /var/run/docker.sock
sudo chmod 666 /var/run/docker.sock

不过,将 /var/run/docker.sock 文件的权限设置为 666 会使所有用户都能访问该文件,存在一定的安全风险,仅在必要时使用。

二. 部署

1,配置镜像
# 依次执行 
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://dawk9aew.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

# 也可多配一点(用下面的替换上面的json即可)
{
  "registry-mirrors": ["https://hub.atomgit.com/repos","https://docker.m.daocloud.io","https://dockerhub.timeweb.cloud","https://dawk9aew.mirror.aliyuncs.com"]
}

# 完成之后检查是否生效
docker info

在这里插入图片描述
以下是使用 Docker 部署和启动常见服务的 详细分步教程,涵盖 MySQL、Tomcat、Redis、Nacos 和 RocketMQ:


2. Docker 部署 MySQL

步骤 1:准备工作

避免后续出现权限问题,先切换用户到root

su root
#再输入密码
  1. 创建宿主机持久化目录:
    mkdir -p /my/mysql/data /my/mysql/conf
    
  2. 创建自定义配置文件(可选):
    echo "[mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci" > /my/mysql/conf/my.cnf
    
步骤 2:启动 MySQL 容器
docker run --name mysql \
-e MYSQL_ROOT_PASSWORD=your_secure_password \
-p 3306:3306 \
-v /my/mysql/data:/var/lib/mysql \
-v /my/mysql/conf:/etc/mysql/conf.d \
-d mysql:8.0 \
--default-authentication-plugin=mysql_native_password

若配置镜像不可用,可尝试切换上文提供的那些镜像站

步骤 3:验证部署
  1. 进入容器并连接 MySQL:
    docker exec -it mysql mysql -uroot -p
    
  2. 输入密码后,执行 SHOW DATABASES; 确认正常运行。
注意事项
  • 若需调整时区,添加 -e TZ=Asia/Shanghai
  • 生产环境建议限制容器资源(如 --memory=2g)。

3. Docker 部署 Tomcat

步骤 1:创建宿主机目录
mkdir -p /my/tomcat/webapps
步骤 2:启动 Tomcat 容器
docker run --name tomcat \
-p 8080:8080 \
-v /my/tomcat/webapps:/usr/local/tomcat/webapps \
-d tomcat:9.0
步骤 3:部署应用
  1. 将 WAR 包复制到 /my/tomcat/webapps
    cp myapp.war /my/tomcat/webapps/
    
  2. 访问 http://宿主机IP:8080/myapp 验证应用。
调试技巧
  • 查看日志:docker logs -f tomcat
  • 若访问 404,检查 WAR 文件名是否与上下文路径匹配。

4. Docker 部署 Redis

步骤 1:准备配置文件和目录
  1. 创建目录和配置文件:
    mkdir -p /my/redis/data
    vi /my/redis/redis.conf
    
    # redis.conf 基础配置
    requirepass your_redis_password
    appendonly yes
    
步骤 2:启动 Redis 容器
docker run --name redis \
-p 6379:6379 \
-v /my/redis/data:/data \
-v /my/redis/redis.conf:/usr/local/etc/redis/redis.conf \
-d redis:6.0 \
redis-server /usr/local/etc/redis/redis.conf
步骤 3:测试连接
docker exec -it redis redis-cli
127.0.0.1:6379> AUTH your_redis_password
127.0.0.1:6379> SET test "hello"
127.0.0.1:6379> GET test

5. Docker 部署 Nacos

步骤 1:准备 MySQL 数据库
  1. 在 MySQL 中创建数据库 nacos
    CREATE DATABASE nacos DEFAULT CHARACTER SET utf8mb4;
    
  2. 执行 Nacos 初始化 SQL 脚本
步骤 2:启动 Nacos 容器
docker run --name nacos \
-e MODE=standalone \
-e MYSQL_SERVICE_HOST=宿主机IP \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=your_mysql_password \
-p 8848:8848 \
-d nacos/nacos-server:2.0.3
步骤 3:访问控制台
  1. 浏览器访问 http://宿主机IP:8848/nacos
  2. 默认账号:nacos,密码:nacos
常见问题
  • 若无法连接 MySQL,检查宿主机防火墙是否开放 3306 端口。
  • 查看日志:docker logs -f nacos

6. Docker 部署 RocketMQ

6.1 部署 NameServer
docker run -d \
--name rmqnamesrv \
-p 9876:9876 \
-v /my/rocketmq/logs:/root/logs \
apache/rocketmq:4.9.4 \
sh mqnamesrv
6.2 部署 Broker
  1. 创建配置目录和文件:

    mkdir -p /my/rocketmq/conf /my/rocketmq/store
    vi /my/rocketmq/conf/broker.conf
    
    brokerClusterName = DefaultCluster
    brokerName = broker-a
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    brokerRole = ASYNC_MASTER
    flushDiskType = ASYNC_FLUSH
    
  2. 启动 Broker:

    docker run -d \
    --name rmqbroker \
    --link rmqnamesrv:namesrv \
    -p 10911:10911 -p 10909:10909 \
    -v /my/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf \
    -v /my/rocketmq/store:/opt/store \
    -e "NAMESRV_ADDR=namesrv:9876" \
    apache/rocketmq:4.9.4 \
    sh mqbroker -c /opt/rocketmq/conf/broker.conf
    
6.3 验证 RocketMQ
  1. 进入容器测试消息发送:
    docker exec -it rmqbroker bash
    sh tools.sh org.apache.rocketmq.example.quickstart.Producer
    
  2. 查看日志:
    docker logs -f rmqnamesrv
    docker logs -f rmqbroker
    

通用优化建议

  1. 容器网络:创建自定义网络提升多容器通信效率:
    docker network create mynet
    docker run --network mynet --name mysql -d ...
    
  2. 资源限制:添加 --memory=2g --cpus=1 防止单个容器占用过多资源。
  3. 数据备份:定期备份挂载的宿主机目录(如 /my/mysql/data)。
  4. 日志管理:使用 docker logs 或 ELK 收集容器日志。

按照以上步骤,您将能快速完成服务的部署与验证。遇到问题时,优先检查容器日志和网络配置。


三、验证服务

1. MySQL
docker exec -it mysql mysql -uroot -p  # 输入密码 root@123
2. Redis
docker exec -it redis redis-cli -a redis@123
3. Tomcat

访问 http://<服务器IP>:8080,看到 Tomcat 默认页面即成功。

4. Nacos

访问 http://<服务器IP>:8848/nacos,默认账号密码为 nacos/nacos

5. RocketMQ
  • 检查 Namesrv 日志:
    docker logs rocketmq-namesrv
    
  • 检查 Broker 日志:
    docker logs rocketmq-broker
    

四,注意事项

  1. 阿里云镜像加速:已在 Docker 安装步骤中配置,后续拉取镜像默认使用阿里云源。
  2. 密码安全:示例中密码为简单示例,生产环境需替换为复杂密码。
  3. 版本兼容性
    • Nacos 2.3.0 需要 MySQL 8.0+。
    • RocketMQ 5.x 默认使用 JDK 17,与 Tomcat/Maven 镜像版本对齐。
  4. 数据备份:通过 volumes 持久化数据,确保容器重启后数据不丢失。
  5. 防火墙:确保云服务器安全组开放端口(3306、6379、8080、9876、8848 等)。

五,docker基础命令


1. 镜像管理

  • 拉取镜像

    docker pull [镜像名]:[标签]  # 默认标签为 latest
    docker pull nginx:alpine
    
  • 构建镜像

    docker build -t [镜像名]:[标签] [Dockerfile目录]
    docker build -t myapp:v1 .
    
  • 列出本地镜像

    docker images
    
  • 删除镜像

    docker rmi [镜像ID或名称]
    

2. 容器管理

  • 运行容器

    docker run [选项] [镜像名]
    docker run -d --name mynginx -p 80:80 nginx  # -d: 后台运行,-p: 端口映射
    
  • 列出容器

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

    docker start [容器ID或名称]
    docker stop [容器ID或名称]
    docker restart [容器ID或名称]
    
  • 进入容器终端

    docker exec -it [容器ID或名称] /bin/bash   # 进入交互式终端
    
  • 查看容器日志

    docker logs [容器ID或名称]
    docker logs -f [容器ID或名称]  # 实时跟踪日志
    
  • 删除容器

    docker rm [容器ID或名称]
    docker rm -f [容器ID或名称]  # 强制删除运行中的容器
    

3. 网络管理

  • 列出网络

    docker network ls
    
  • 创建自定义网络

    docker network create [网络名]
    
  • 将容器连接到网络

    docker network connect [网络名] [容器名]
    

4. 数据卷管理

  • 创建数据卷

    docker volume create [卷名]
    
  • 挂载数据卷到容器

    docker run -v [卷名]:[容器内路径] [镜像名]
    docker run -v mydata:/app/data myapp
    
  • 查看数据卷

    docker volume ls
    

5. 系统清理

  • 删除所有停止的容器

    docker container prune
    
  • 删除未使用的镜像、卷、网络

    docker system prune -a  # 谨慎使用,会清理无用资源!
    

6. 其他常用命令

  • 查看容器详情

    docker inspect [容器ID或名称]
    
  • 复制文件到容器

    docker cp [本地文件路径] [容器ID]:[容器内路径]
    docker cp ./config.json mynginx:/etc/nginx/
    
  • 查看 Docker 版本

    docker --version
    

注意事项

  1. 使用 -it 参数进入交互式终端(如 docker exec -it)。
  2. 生产环境避免使用 --privileged(赋予容器过高权限)。
  3. 使用 docker-compose 管理多容器应用更高效。
你可以使用 Docker Compose 来实现一键部署 MySQLRedisNacosDocker Compose 是一个用于定义和运行多个容器的工具。下面是一个示例的 `docker-compose.yml` 文件,其中包含了 MySQLRedisNacos 的配置: ```yaml version: '3' services: mysql: image: mysql:latest restart: always ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=your_password volumes: - ./mysql_data:/var/lib/mysql redis: image: redis:latest restart: always ports: - 6379:6379 nacos: image: nacos/nacos-server:latest restart: always ports: - 8848:8848 ``` 在以上示例中,MySQL 使用了最新版本的镜像,并将容器内的 3306 端口映射到主机的 3306 端口。你需要将 `your_password` 替换为你的 MySQL root 密码。此外,MySQL 的数据将被挂载到主机的 `./mysql_data` 目录下,这样即使容器被删除,数据也能得到保留。 Redis 使用了最新版本的镜像,并将容器内的 6379 端口映射到主机的 6379 端口。 Nacos 使用了最新版本的镜像,并将容器内的 8848 端口映射到主机的 8848 端口。 在安装 DockerDocker Compose 后,你可以通过 `docker-compose up -d` 命令来启动这些容器。使用 `-d` 参数可以在后台运行容器。 一旦容器启动成功,你就可以通过相应的端口访问 MySQLRedisNacos 了。例如,使用 `localhost:3306` 访问 MySQL,`localhost:6379` 访问 Redis,`localhost:8848` 访问 Nacos。 希望这对你有帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值