docker安装jdk+nacos+mysql+redis+rabbitmq+RocketMq等三十多种常用容器,并部署/集成jenkins自动化部署jar包项目

本文档详述了Docker的基本概念与安装步骤,并介绍了Nacos、MySQL、Redis、RabbitMQ等常见服务的Docker化安装流程,涵盖了从环境搭建到服务部署的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.Docker安装

1.1docker概念

 1.2安装 

1.3卸载docker

 1.4docker命令

2.nacos安装

3.mysql安装

4.Redis安装

5.Rabbitmq安装

5.1安装 

5.2安装RabbitMQ延迟消息插件

5.4RabbitMq集群

6.RocketMq安装

7.springboot项目部署

8.jenkins自动化部署docker

9.nginx做服务器安装

9.nginx前端项目制作容器

10.后端项目制作容器


1.Docker安装

1.1docker概念

离线安装docker包  Index of linux/static/stable/x86_64/ 

docker 的三个概念:

  1. 仓库:仓库就类比于github仓库,上面存储着各种各样版本的软件Docker Hub
  2. 镜像,我们从docker上拉取一个软件初始就是个镜像
  3. 容器,容器就是镜像运行时,可以用的软件

 1.2安装 

官网安装地址  Install Docker Engine on CentOS | Docker Documentation 

注:本篇为Centos7安装Docker,若为其他系统请理性参考

1.查看是否已安装
docker --version

2.更新你的包列表
sudo yum update

3.若:没有yum命令,安装yum,有的话直接跳过
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

4.安装必要的包,这些包可以让yum使用HTTPS:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5.添加Docker的存储库:
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

6.安装Docker:
sudo yum install docker-ce

7.启动Docker服务:
sudo systemctl start docker

sudo systemctl stop docker
sudo systemctl status docker

8.设置Docker服务开机自启:
sudo systemctl enable docker

通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://123.mirror.aliyuncs.com"]
}
EOF



2. vim /etc/docker/daemon.json
内容如下:

{
  "max-concurrent-downloads": 10,
  "max-concurrent-uploads": 5,
  "default-shm-size": "1G",
  "debug": true,
  "experimental": false,
  "registry-mirrors": [
   "https://dockerproxy.net",
    "https://3cvqd94394.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "https://0fivaqt3.mirror.aliyuncs.com",
        "https://hub.appifa.com",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
   ],
 "dns": ["114.114.114.114","8.8.8.8","8.8.4.4"]
}


sudo systemctl daemon-reload
sudo systemctl restart docker

2.要继续配置一下阿里云镜像加速,按如下步骤完成即可.(可忽略不配置)

步骤2,是写配置文件

1. mkdir -p /etc/docker

2. vim /etc/docker/daemon.json

3. systemctl daemon-reload

4. systemctl restart docker

 步骤2的配置文件格式

{ "registry-mirrors": ["https://{自已的编码}.mirror.aliyuncs.com"] }

 自己的编码如何查看,网址: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

6.启动并加入开机启动 

#重新加载配置文件
systemctl daemon-reload

#启动Docker
systemctl start docker
systemctl stop docker
systemctl restart docker

#设置开机自启动
systemctl enable docker
systemctl enable docker.service
systemctl disable docker

#查看docker启动状态
systemctl status docker

#查看docker信息
docker info

 7.验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

docker version

1.3卸载docker

 1.卸载旧版本(如果安装过旧版本的话)

sudo yum remove docker docker-common docker-selinux docker-engine

  2.删除安装包

yum remove docker-ce

    3.删除镜像、容器、配置文件等内容

rm -rf /var/lib/docker
 

 1.4docker命令

#查找镜像
docker search mysql
#拉去最新版本
docker pull mysql
#拉去指定版本
docker pull mysql:5.7
# 查看镜像
docker images
#docker容器在宿主机目录
cd /var/lib/docker/containers
#查看容器配置
docker inspect  容器ID



# 查看正在运行容器
docker ps
# 查看全部容器
docker ps -a
# 查看容器的实时日志 
docker logs -f 容器id(容器名称) | docker logs -f --tail 500 容器id(容器名称)
# 使用 inspect 命令查看镜像详细信息
docker inspect 容器id(容器名称)
# 访问url
curl localhost:8080
# 查看端口使用情况
netstat -ntlp


# 进入容器
docker exec -it 容器id(容器名称) /bin/bash
# 退出容器 
exit


# 停止容器
docker stop 容器id(容器名称)
# 启动容器
docker start 容器id(容器名称)
# 重启容器
docker restart 容器id(容器名称)


# 删除容器(删除容器前得停止容器)
docker rm -f 容器id(容器名称)
# 删除镜像(删除镜像前得删除容器)
docker rmi -f 镜像id(镜像名称)



#docker build制作镜像,一般用于springboot项目发布,或者自定义镜像
docker build -t param1 .
#param1 镜像名称  ,    . 当前目录   或者 /root/demo/ 指定目录



#docker run参数设置
docker run -d -p 8080:8080 -v /home/demo/:/mnt/demo/ --add-host redis_host:192.168.0.1 --restart=always --name param1 param2

-d 内部运行
-p 宿主机映射端口:容器内部端口
--name param1容器名称 param2镜像名称
-v 表示需要将宿主机哪个目录挂载到容器中,格式:-v <宿主机(Linux)目录>:<容器目录>
--restart=always 在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启
如果docker容器已经启动了则可以使用如下命令:
docker update 容器id(容器名称) --restart=always
--hostname param 指定主机名称,该名称在集群的名称中使用
--add-host redis_host:192.168.0.1 等于 vi /etc/hosts

1.5设置时区

1.在容器中创建文件(一般可以省略)
mkdir -p /usr/share/zoneinfo/Asia

2.回到宿主机,复制宿主机里的文件到容器中
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID或容器名:/usr/share/zoneinfo/Asia

3.软连接设置时区为上海
ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

4.重启容器

2.nacos安装

#搜索Nacos镜像
docker search nacos/nacos-server

#拉取Nacos镜像
docker pull nacos/nacos-server:2.2.2

#创建Nacos容器 并 连接mysql数据库
docker run -d -p 8848:8848 -p 9848:9848 -p 9849:9849 -p 7848:7848 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.0.1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456\
-e MYSQL_SERVICE_DB_NAME=nacos \
#-e NACOS_APPLICATION_PORT=8848 \#这是自定义端口,如果修改,对应的-p也需要修改,最好采用默认
--restart=always \
--name nacos \
nacos/nacos-server:2.2.2

#进入Nacos容器
docker exec -it nacos /bin/bash

# 查看日志是否运行正常
docker logs -f nacos

#访问:通过 ip:8848/nacos 访问,登录密码默认nacos/nacos 

3.mysql安装

# 查看docker仓库中的mysql
docker search mysql

# 选定需要pull到本地系统中的镜像版本
docker pull mysql:5.7
#或者不选版本号,直接拉取最新的版本
docker pull mysql 

#运行mysql,开放的端口是3306,密码是123456, -d是后台运行 ,容器ID/名称是mysql
#-p 3306:3306:将容器的3306端口映射到宿主机的3306端口
#-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码

#挂载数据到宿主机
mkdir -p /home/mysql/data   /home/mysql/logs  /home/mysql/conf
cd /home/mysql/conf
touch my.cnf

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 
-v /home/mysql/conf:/etc/mysql/conf.d
-v /home/mysql/logs:/logs 
-v /home/mysql/data:/var/lib/mysql
--restart=always --name mysql  mysql:5.7


#查看容器是否运行
docker ps

#进入容器
docker exec -it mysql /bin/bash

#登录mysql
mysql -h localhost -u root -p  或者  mysql -uroot -p123456
接着输入密码root
登录成功后即为安装成功了

#使用Navicat连接



问题1:如果部署在云服务器,则需要配置防火墙,安全组

问题2:若远程Navicat连接不上数据库,可以尝试设置mysql远程权限

# 进入容器 docker exec -it mysql  /bin/bash

#登录mysql,执行如下命令


# 设置mysql远程权限
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码123456';
# 刷新权限
flush privileges;

如果docker pull mysql:8.0.22 版本

错误 ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded 表示 MySQL 中没有加载或支持 mysql_native_password 插件。
从 MySQL 8.0 开始,mysql_native_password 插件已经被弃用,默认采用caching_sha2_password

解决方法:
如果你必须使用 mysql_native_password 插件,可以尝试以下方法


方法 1: 使用 caching_sha2_password 插件
你可以使用默认的 caching_sha2_password 插件来设置密码,而不使用 mysql_native_password

ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY '123456';



方法 2: 启用 mysql_native_password 插件(不推荐)
如果你确实需要使用 mysql_native_password 插件,你可以手动启用它,虽然这不建议在最新版本中使用。可以通过修改 MySQL 配置文件来加载该插件:

编辑 MySQL 配置文件(通常在 /etc/mysql/my.cnf 或 /etc/my.cnf)。

在 [mysqld] 部分添加以下行以启用 mysql_native_password 插件:
default_authentication_plugin=mysql_native_password

然后重启服务
再次执行下面得修改语句
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';



如果docker pull mysql:8.4.x版本

在8.4以后得版本default_authentication_plugin配置已经不生效了

[mysqld]
default_authentication_plugin=mysql_native_password

替换成

mysql_native_password=ON


或者在docker run 命令 加入 --mysql_native_password=ON

4.Redis安装

# 查看docker仓库中的redis
docker search redis

# pull最新版本redis镜像
docker pull redis:latest

# 查看镜像是否已安装
docker images


# 运行名为redis的容器并配置密码
docker run -itd -p 6379:6379 --restart=always --name redis redis --requirepass "123456"


mkdir -p /usr/local/redis && mkdir -p /usr/local/redis/data
#修改redis.conf放入/usr/local/redis
#注释掉这句
#bind 127.0.0.1
#开启远程连接
protected-mode no
#设置访问密码,位置大概在901行
requirepass 123456

docker run -d -p 6379:6379  --restart=always  
-v /usr/local/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/data:/data 
--name redis redis redis /etc/redis/redis.conf --appendonly yes



#查看容易是否运行
dokcer ps

# 查看日志是否运行正常
docker logs -f redis

5.Rabbitmq安装

5.1安装 

#查询rabbitmq镜像
docker search rabbitmq

#选择第一个official的官方版本下载使用,不加后面的版本号就会下载最新的镜像
docker pull rabbitmq:3.10.0
或者
docker pull rabbitmq

#查看下载的镜像
docker images

#运行mq , -p 宿主机映射端口:docker的内部端口
docker run -d -p 15672:15672 -p 5672:5672 --restart=always --hostname myRrabbit --name rabbitmq rabbitmq

#查看容器
docker ps -a

#进入容器内部
docker exec -it 容器id /bin/bash

#进入容器内部运行下面命令,这是安装rabbitmq的web界面插件
rabbitmq-plugins enable rabbitmq_management

#exit退出容器内部

#http://linuxip:15672,访问web界面,这里的用户名和密码默认都是guest
#如果不能访问,设置防火墙,安全组


 上诉步骤需要进入容器内部安装web界面插件,建议采用下面的方式

#查询rabbitmq镜像
docker search rabbitmq

#下载rabbitmq的Web管理插件
docker pull rabbitmq:management
或者
docker pull rabbitmq:management

#查看下载的镜像
docker images

#运行mq
docker run -d -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 25672:25672 -p 15672:15672 
--restart=always --hostname myRabbit 
-e RABBITMQ_DEFAULT_VHOST=my_vhost  
-e RABBITMQ_DEFAULT_USER=admin 
-e RABBITMQ_DEFAULT_PASS=admin 
--name rabbitmq rabbitmq:management
--privileged=true


#--hostname 指定容器主机名称,RabbitMQ的hostname 最好指定。Rabbit MQ的有一个重要的注意事项是它根据节点名称来存储数据,默认就是主机名、而上面说道hostname就是集群中的节点名称。如果不指定hostname,那么docker在启动的时候会自动生成hostname,如此一来可能每次生成的hostname都不一样,那么就会导致数据丢失。
#-e 指定环境变量
#RABBITMQ_DEFAULT_VHOST:默认虚拟机名/
#RABBITMQ_DEFAULT_USER:默认的用户名
#RABBITMQ_DEFAULT_PASS:默认用户名的密码
#--privileged=true给容器加上特定权限
#--name rabbitmq rabbitmq:management安装rabbitmq的Web管理插件
#说明 用户是需要与Virtual Hosts绑定的,也就是这里的my_vhost与admin绑定,具体可到mqweb界面的admin菜单下查看



#查看容器
docker ps -a
docker logs rabbitmq  查看日志

#进入容器内部
docker exec -it 容器id /bin/bash

#exit退出容器内部

#http://linuxip:15672,访问web界面,这里的用户名和密码默认都是admin




5.2安装RabbitMQ延迟消息插件

 rabbitmq_delayed_message_exchange 安装

首先我们需要下载 rabbitmq_delayed_message_exchange 插件,这是一个 GitHub 上的开源项目,我们直接下载即可:

https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases

下载完成后执行如下命令将下载文件拷贝到 Docker 容器中去:

#或者直接
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.10.0/rabbitmq_delayed_message_exchange-3.10.0.ez

#拷贝到容器
#docker cp ./宿主机文件目录  容器ID:/容器内目录
docker cp ./rabbitmq_delayed_message_exchange-3.10.0.ez rabbitmq:/plugins


#进入到容器
docker exec -it rabbitmq /bin/bash


#查看插件列表
rabbitmq-plugins list

#执行如下命令启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange


5.3集群中采用自定义镜像安装延迟消息插件(不可能一台一台的上诉这样操作)(忽略忽略,验证中)

#rabbitmq_delayed_message_exchange-3.10.0.ez文件与Dockerfile同一目录
#编写Dockerfile脚本
FROM rabbitmq:3.10.0-management
COPY rabbitmq_delayed_message_exchange-3.10.0.ez /plugins
RUN rabbitmq-plugins enable --offline rabbitmq_delayed_message_exchange



#执行
docker build -t my-rabbitmq:3.10.0-management .
docker run --name  myrabbitmq  my-rabbitmq:3.10.0-management

5.4RabbitMq集群

Docker 安装 RabbitmQ 集群_晨一更的博客-优快云博客

6.RocketMq安装

7.springboot项目部署

8.jenkins自动化部署docker

Jenkins自动化部署实现原理及部署到SSH与Docker_晨一更的博客-优快云博客

9.nginx做服务器安装

所有项目都部署在一个nginx容器中

使用docker中nginx做服务器
ip:192.168.0.100


宿主机80已经被宿主机nginx占用所以用49000映射容器80端口
如果宿主机80端口没被占用,则映射端口改成80:80


1.创建文件
mkdir -p /www/docker/nginx/conf/conf.d
mkdir -p /www/docker/nginx/html

2.创建容器
docker run -d -p 49000:80 --restart=always --name nginx  nginx:latest

3.拷贝文件到宿主机
docker cp nginx:/etc/nginx/conf.d /www/docker/nginx/conf/conf.d
docker cp nginx:/etc/nginx/nginx.conf /www/docker/nginx/conf/nginx.conf
docker cp nginx:/usr/share/nginx/html /www/docker/nginx/html

4.删除容器
docker rm -f nginx

5.创建容器(如果直接执行这个命令,或导致文件被宿主机覆盖,容器内部对应目录文件为空,启动不了)
docker run -d -p 49000:80  -v  /www/docker/nginx/conf/conf.d:/etc/nginx/conf.d -v  /www/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf   -v  /www/docker/nginx/html:/usr/share/nginx/html  --restart=always --name nginx  nginx:latest


6.访问,可以看到nginx服务器部署成功
192.168.0.100:49000  或者 192.168.0.100:80

2.部署项目

1.域名配置
cd /www/docker/nginx/conf/conf.d
copy default.conf docker-test.conf
vi docker-test.conf

server {
    listen       80;
    listen  [::]:80;
    server_name  docker-test.abc.com;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html/docker-test/dist;
        index  index.html index.htm;
	    try_files  $uri $uri/ /index.html;
    }

   location /prod-api/ {
	client_body_timeout 1800s;
	proxy_read_timeout 1800s;
	keepalive_timeout 1800s;
    proxy_pass http://192.1698.0.100:48200/;
   }

  error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }    
}

2.代码拷贝到
cd /www/docker/nginx/html/docker-test/dist

3.访问地址(记得重启容器)
docker-test.abc.com:49000  或者 docker-test.abc.com:80   看映射端口


4.这样可以部署多个项目,采用不同域名访问,使docker中得nginx作为服务器

思考:如果用上诉方式,部署多个项目,不使用域名,采用端口方式,那是不是创建映射端口得时候 ,是不是要映射多个端口,【应该是得】

所以这种方式费时费力

看第九条实际使用方式

9.nginx前端项目制作容器

每个项目部署一个nginx容器

文件存放在一个目录

cd /www/docker/nginx/admin

1.default.conf内容

server {
        listen       80;
        server_name  localhost;
        client_max_body_size 60m;
        proxy_http_version  1.1;

        location / {
            alias   /usr/share/nginx/html/;
            try_files $uri /index.html;
        }

        location /index.html {
            index index.html;
            root   /usr/share/nginx/html;
        }
    }

2.dockerfile内容

FROM nginx:latest
copy default.conf /etc/nginx/conf.d/default.conf
copy dist/ /usr/share/nginx/html/


3.DockerStart.sh内容
docker rm -f admin-nginx
docker rmi -f admin-nginx
docker build -t admin-nginx.
docker run -d -p 8081:80 --restart=always --name admin-nginx admin-nginx


4.执行DockerStart.sh
./DockerStart.sh


5.访问
ip:8081



6.宿主机nginx配置代理采用域名访问

10.后端项目制作容器

11.hbase安装

1.拉取镜像
docker pull harisekhon/hbase
docker pull harisekhon/hbase:2.1.3


2.启动
docker run -d -h hbase -p 2181:2181 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9000:9000 -p 9095:9095 -p 16000:16000 -p 16010:16010 -p 16020:16020 -p 16201:16201 -p 16301:16301  --restart=always    --name hbase harisekhon/hbase:2.1.3

3.访问
开通端口16000 16010 16020  2181 9000

http://IP:16010


4.linux或者window配置hosts
192.168.0.1 hbase 

12.minio安装

1.下载镜像
docker pull minio/minio

2.创建目录
mkdir -p /www/docker/minio/data
mkdir -p /www/docker/minio/config


3.1.运行容器
docker run \
-p 19000:9000 \
-p 19001:9001 \
-d --restart=always \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123" \
-v /www/docker/minio/data:/data \
-v /www/docker/minio/config:/root/.minio \
--name minio  minio/minio \
server  /data --console-address ":9001" -address ":9000"

3.2运行容器
docker run \
-p 19000:9000 \
-p 19001:9001 \
-d --restart=always \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123" \
-e "MINIO_ACCESS_KEY=test" \
-e "MINIO_SECRET_KEY=test123" \
-v /www/docker/minio/data:/data \
-v /www/docker/minio/config:/root/.minio \
--name minio  minio/minio \
server  /data --console-address ":9001" -address ":9000"


说明
1.MINIO_ROOT_USER  MINIO_ROOT_PASSWORD 管理员账户密码
2.MINIO_ACCESS_KEY  MINIO_SECRET_KEY  用户账户密码
3.容器内部端口为9000 9001 映射宿主机的19000  19001
4.server /data --console-address “:9001” -address “:9000”  这是容器内要运行的命令,启动一个名为 “minio” 的服务器,数据存储在 /data 目录下,服务器的控制台地址为 “:9001”,服务地址为 “:9000”


4.访问
ip:19001
ip:9000 为API地址

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值