当前位置: 首页 > news >正文

服务器安装docker、mysql、redis、nginx、nacos、jdk等

一、安装docker

1.1、安装必要工具

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

1.2、进行仓库源设置

sudo yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

1.3、docker安装

安装最新版本的 Docker Engine-Community 和 containerd

sudo yum install -y docker-ce docker-ce-cli containerd.io

如果不需要docker-ce-cli或containerd.io可直接执行如下命令

yum install -y docker-ce

1.4、启动docker

sudo systemctl start docker

1.5、测试是否安装成功

拉取镜像

sudo docker pull hello-world

执行hello-world

sudo docker run hello-world

1.6、其他docker命令

1.6.1、守护进程重启

systemctl daemon-reload

1.6.2、重启Docker服务

systemctl restart docker / service docker restart

1.6.3、关闭Docker服务

docker service docker stop / docker systemctl stop docker

1.6.4、删除Docker

yum remove docker-ce

1.6.5、删除镜像、容器、配置文件

rm -rf /var/lib/docker

1.6.6、搜索仓库镜像

docker search 镜像名

1.6.7、拉取镜像

docker pull 镜像名

1.6.8、查看正在运行的容器

docker ps

1.6.9、查看所有容器

docker ps -a

1.7.0、删除容器

docker rm container_id

1.7.1、查看镜像

docker images

1.7.2、删除镜像

docker rmi image_id 或 docker rmi image_name:tag

1.7.3、启动(停止的)容器

docker start 容器ID

1.7.4、停止容器

docker stop 容器ID

1.7.5、重启容器

docker restart 容器ID

1.7.6、启动(新)容器

docker run -it ubuntu /bin/bash

1.7.7、进入容器

docker attach 容器ID 或 docker exec -it 容器ID /bin/bash,推荐使用后者

1.7.8、设置开机自启

注:若是报错,则安装sudo yum install systemd

systemctl enable docker

1.7.9、设置docker中MySQL自启

docker update mysql --restart=always 容器id

1.8.0、查看容器日志(-f:实时跟踪、-t:显示时间戳)

docker logs -f -t 容器名/容器id

1.8.1、查看各容器内存占用

docker stats

二、docker安装mysql

2.1、安装mysql镜像

下载最新mysql镜像(命令就等同于: docker pull mysql:latest)

docker pull mysql

下载指定版本的Mysql镜像(xxx指具体版本号,推荐8.0.21版本)

docker pull mysql:xxx

2.2、拷贝配置文件并限制内存大小

先运行容器

// 先简单运行
docker run -itd \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=XXXXXX \
mysql:8.0.21

将容器配置拷贝到宿主机目录

docker cp mysql:/etc/mysql/. /docker_data/mysql/conf/

在my.cnf下面添加下面这些来限制内存占用

[mysqld]
performance_schema_max_table_instances=400
#缓存
table_definition_cache=400
#用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源东西
performance_schema=off
#打开表的缓存
table_open_cache=64
#InnoDB缓冲池大小调整操作的块大小
innodb_buffer_pool_chunk_size=64M
#InnoDB 存储引擎的表数据和索引数据的最大内存缓冲区大小
innodb_buffer_pool_size=64M

2.3、重新运行容器

创建一个叫mysql的容器(根据mysql:8.0.21的镜像),后台运行(-d)且加上伪终端(-it),在这里合并写成了(-itd),并将docker中mysql的 /var/log/mysql 挂载到 宿主机上的 /docker_data/mysql/log、/var/lib/mysql 挂载到 宿主机上的 /docker_data/mysql/data、/etc/conf/mysql 挂载到 宿主机上的 /docker_data_mysql/conf 位置(通过 -v 达到宿主机与容器数据互通的目的),并将docker容器的3306端口(右边)映射到宿主机的3306端口(左边)上(-p,用于宿主机与容器的端口映射命令)

docker run -itd \
--name mysql \
-p 3306:3306 \
--restart unless-stopped \
-v /docker_data/mysql/log:/var/log/mysql \
-v /docker_data/mysql/data:/var/lib/mysql \
-v /docker_data/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=XXXXXX \
mysql:8.0.21

参数说明:
-i 表示交互模式运行容器
-t 为容器分配一个伪输入终端
-d 表示后台运行容器并返回容器id
MYSQL_MEMORY_LIMIT:设置内存大小,要不然太占内存
MYSQL_ROOT_PASSWORD:设置登录密码
image
创建容器成功后宿主机会生成一个docker_data目录,这里保存的数据跟容器里的一样,将来即使将容器里的删掉了,数据依然保存在宿主机上,没有任何影响
image

2.4、进入容器内部

docker exec -it 容器ID /bin/bash

docker exec -it mysql /bin/bash

2.5、配置服务器安全组规则

image
image
image

2.6、本地链接远程mysql(一般这一步不需要)

查看可连接mysql的ip是否被限制

select host,user,plugin,authentication_string from mysql.user;

image

修改成靠密码连接并刷新权限

alter user 'root'@'%' identified with mysql_native_password by 'XXXXXX';

刷新权限

flush privileges;

三、docker安装redis

3.1、安装reids镜像

安装最新镜像

docker pull redis

安装指定版本(xxx指具体版本号,推荐7.2.0版本)

docker pull redis:xxx

3.2、创建redis.conf文件

启动前需要先创建Redis外部挂载的配置文件,之所以要先创建,是因为Redis本身容器只存在 /etc/redis 目录,本身就不创建 redis.conf 文件;当服务器和容器都不存在 redis.conf 文件时,执行启动命令的时候 docker 会将 redis.conf 作为目录创建,这并不是我们想要的结果

// 创建目录
mkdir -p /docker_data/redis/conf
// 创建文件
touch /docker_data/redis/conf/redis.conf

3.3、创建容器并运行

docker run -d \
--name redis \
-p 6379:6379 \
-v /docker_data/redis/data:/data \
-v /docker_data/redis/conf/redis.conf:/etc/redis/redis.conf \
redis:7.2.0 redis-server /etc/redis/redis.conf

image

3.4、进入redis容器

进入redis控制台

// 进入容器内部
docker exec -it redis /bin/bash
// 进入内部后,进入 Redis 控制台
redis-cli

一步进入redis控制台

docker exec -it redis redis-cli

image

3.5、修改redis.conf配置文件

在redis.conf文件加入下面命令,开启持久化和密码连接,限制内存大小,设置淘汰策略

appendonly yes
requirepass XXXXXX
maxmemory 128mb
maxmemory-policy allkeys-lru

修改配置后,重启redis容器使配置生效

docker restart redis

进入redis容器,通过密码进入Redis控制台

docker exec -it redis /bin/bash
redis-cli -h 127.0.0.1 -p 6379 -a XXXXXX

image
image
image

四、docker安装nacos

4.1、安装nacos镜像

拉取最新镜像

docker pull nacos/nacos-server

拉取指定版本镜像(目前推荐稳定版本 v2.2.3)

docker pull nacos/nacos-server:xxx

4.2、创建挂载目录,并将容器的配置复制到宿主机中

创建挂载目录

mkdir -p /docker_data/nacos/logs/
mkdir -p /docker_data/nacos/conf/

将nacos中的配置复制到宿主机中

// 简单启动
docker run -p 8848:8848 --name nacos -d nacos/nacos-server:v2.2.3
// 复制文件
docker cp nacos:/home/nacos/logs/ /docker_data/nacos/
docker cp nacos:/home/nacos/conf/ /docker_data/nacos/
> // 关闭容器
docker rm -f nacos

image

4.3、启动时设置读取mysql并设置参数

重新创建并运行(单机运行),下面-e那些都是application.properties文件里面的参数,这里设置运行内存调小一点,不然2核2G服务器带不动

docker run -d \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
-e JVM_XMS=640m \
-e JVM_XMX=640m \
-e JVM_XMN=256m \
-e JVM_MS=64m \
-e JVM_MMS=160m \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=XXXXXX \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=XXXXXX \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_CACHE_ENABLE=true \
-e NACOS_AUTH_TOKEN=SecretKey47e15feda9da11eeb6f90242ac110002 \
-e NACOS_AUTH_IDENTITY_KEY=nacos_key_123456 \
-e NACOS_AUTH_IDENTITY_VALUE=nacos_value_123456 \
-v /docker_data/nacos/logs/:/home/nacos/logs \
-v /docker_data/nacos/conf/:/home/nacos/conf/ \
--restart=always \
nacos/nacos-server:v2.2.3

参数说明(其他参数)
JVM_XMS=64m #-Xms default :2g
JVM_XMX=64m #-Xmx default :2g
JVM_XMN=16m #-Xmn default :1g
JVM_MS=8m #-XX:MetaspaceSize default :128m
JVM_MMS=8m #-XX:MaxMetaspaceSize default :320m
NACOS_AUTH_ENABLE # 开启nacos鉴权
9848、9849端口要开放出来,否则SpringBoot项目无法连接上!
image
image
nacos鉴权参数
nacos参数配置

4.4、安装2.0.3版本(推荐)

docker run -d \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
-e JVM_XMS=128m \
-e JVM_XMX=128m \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=XXXXXX \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=XXXXXX \
-v /docker_data/nacos/logs/:/home/nacos/logs \
-v /docker_data/nacos/conf/:/home/nacos/conf/ \
--restart=always \
nacos/nacos-server:v2.0.3

image

五、docker安装jdk

5.1、拉取镜像

docker pull openjdk:8

image

5.2、创建容器并运行

docker run -itd --name java8 openjdk:8

image

六、docker安装nginx

6.1、安装nginx镜像

// 下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest )

docker pull nginx

// 下载指定版本的Nginx镜像 (xxx指具体版本号,推荐1.24.0)

docker pull nginx:xxx

6.2、创建nginx挂载目录

说明: 启动前需要先创建Nginx外部挂载的配置文件( /docker_data/nginx/conf/nginx.conf)
之所以要先创建 , 是因为Nginx本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件
当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候 docker会将nginx.conf 作为目录创建 , 这并不是我们想要的结果 。

6.2.1、先简单运行容器

docker run -d -p 80:80 --name nginx nginx:1.24.0

6.2.1、创建挂载目录

mkdir -p /docker_data/nginx/conf
mkdir -p /docker_data/nginx/log
mkdir -p /docker_data/nginx/html

6.2.3、将容器中的nginx.conf文件和conf.d文件夹、html文件夹复制到宿主机

docker cp nginx:/etc/nginx/nginx.conf /docker_data/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /docker_data/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /docker_data/nginx/

示例
image
image

6.2.4、删除原来nginx容器后重新运行

docker rm -f nginx

6.2.5、重新运行并挂载宿主机目录

docker run -d \
-p 80:80 \
--name nginx \
-v /docker_data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /docker_data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /docker_data/nginx/log:/var/log/nginx \
-v /docker_data/nginx/html:/usr/share/nginx/html \
nginx:1.24.0

参数说明
image

6.3、运行结果

image
image

6.5、部署前端

6.5.1、配置nginx.conf文件

注意: 1、这里的 /usr/share/nginx/html 是容器中的路径,不要将这里写成宿主机中挂载的目录路径!!!宿主机挂载的 /docker_data/nginx/html 只是跟 /usr/share/nginx/html 下数据互通而已,实际上在容器中是找不到 /docker_data/nginx/html 位置的!!!
2、这里的 server_name 不能用 localhost !!!因为容器跟宿主机是不同的ip!!!所以必须要指向清楚!
3、规则配置要开放 8080 端口,否则会请求不到!!!
4、改为配置后要重启nginx容器

    # 前后端server {listen       80;server_name  XXXXXX;charset utf-8;location / {root   /usr/share/nginx/html/dist;try_files $uri $uri/ /index.html;index  index.html index.htm;}location /stage-api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://XXXXXX:8080/;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

6.5.2、运行示例

image
image

http://www.hskmm.com/?act=detail&tid=8660

相关文章:

  • StringComparer.OrdinalIgnoreCase
  • LLM大模型:Qwen3-Next-80B中的next究竟是个啥?
  • 中了勒索病毒 peng
  • 在 WSL 中通过 Bash 函数快速转换 Windows 路径为 Ansible/WSL 路径 - 教程
  • 金融租赁公司厂商租赁业务调研报告
  • 普科科技PKC7030H交直流电流探头应用指南​​
  • 从“分散”到“统一”,中控技术利用SeaTunnel构建高效数据采集框架,核心数据同步任务0故障运行!
  • T/B cell subtype marker - un
  • SAP FICO 完全凭证替代
  • K8s Application模式下的flink任务执行精要
  • 从0打造一个TTS语音合成引擎:原理与实现
  • 莫队
  • 0voice-2.1.1-网络io与io多路复用select/poll/epoll
  • Java基本语句-分支语句
  • 丘成桐谈AI
  • 异常检测在网络安全中的应用 - 实践
  • 大文件分片上传
  • 人小鼠免疫细胞maker基因 - un
  • HyperWorks许可配置
  • 国标GB28181视频平台EasyGBS如何解决安防视频融合与级联管理的核心痛点?
  • python基础-推导式
  • 人 CD 抗原完全指南 - un
  • Java入门知识
  • AUTOSAR网络管理
  • 写用例注意点
  • 12 路低延迟推流!米尔 RK3576 赋能智能安防 360 环视
  • A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?
  • Alternating Subsequence
  • 白鲸开源“创客北京2025”再摘殊荣,聚焦Agentic AI时代数据基础设施建设
  • python基础-公共操作