# 服务器环境配置
# 安装 docker
使用官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun |
# Docker 安装 Mysql
直接安装时出现 no matching manifest for linux/arm64/v8 in the manifest list entries 错误
出现这个问题的原因是由于 这台服务器是阿里云的 arm 构架 其底层是
aarch64
提示非常清晰。既然是这样,除了自己做镜像外,肯定也有其他大神需要解决这件事。
可以直接使用命令拉取镜像
docker pull mysql/mysql-server:5.7.41
// 检查当前所下载的全部镜像 | |
docker images | |
//Docker 创建 Mysql 容器 | |
docker run --privileged=true --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=XXX -d -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/conf:/etc/mysql/-v/usr/local/docker/mysql/logs:/var/log/mysql ibex/debian-mysql-server-5.7 |

docker 启动 mysql 报错 Can't read dir of /etc/mysql/conf.d/
原来:
docker run --privileged=true --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/conf:/etc/mysql -v /usr/local/docker/mysql/logs:/var/log/mysql mysql |
修改:
docker run --privileged=true --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/conf:/etc/mysql/conf.d -v /usr/local/docker/mysql/logs:/var/log/mysql mysql |
| 命令 | 描述 |
|---|---|
| docker run | 创建一个新的容器,同时运行这个容器 |
| –name mysql | 启动容器的名字 |
| -d | 后台运行 |
| -p 3306:3306 | 将容器的 3306 (后面那个) 端口映射到主机的 3306 (前面那个) 端口 |
| –restart unless-stopped | 容器重启策略 |
| -v /mydata/mysql/log:/var/log/mysql | 将日志文件夹挂载到主机 |
| -v /mydata/mysql/data:/var/lib/mysql | 将 mysql 储存文件夹挂载到主机 |
| -v /mydata/mysql/conf:/etc/mysql | 将配置文件夹挂载到主机 |
| -e MYSQL_ROOT_PASSWORD=root | 设置 root 用户的密码 |
| mysql:5.7 | 启动哪个版本的 mysql (本地镜像的版本) |
之后需要进入 mysql 命令行进行操作
//进入容器中的mysql | |
docker exec -it mysql bash |
本地项目无法连接阿里云 mysql 解决办法
SQLException: null, message from server: "Host 'XXX' is not allowed to connect
在进入后输入
mysql -uroot -p | |
mysql-> show databases; | |
mysql-> use mysql | |
mysql-> select user,host from user; | |
mysql-> update user set host ='%' where user = 'root'; | |
mysql-> flush privileges; |

# Docker 安装 Redis
拉取镜像
sudo docker pull redis |
创建本地与 docker 映射的目录,即本地存放的位置
sudo mkdir /data/redis | |
sudo mkdir /data/redis/data |
创建容器
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data -d redis redis /etc/redis/redis.conf --appendonly yes |
-p 6379:6379 : 把容器内的 6379 端口映射到宿主机 6379 端口
-v /data/redis/redis.conf:/etc/redis/redis.conf :把宿主机配置好的 redis.conf 放到容器内的这个位置中
-v /data/redis/data:/data :把 redis 持久化的数据在宿主机内显示,做数据备份
redis-server /etc/redis/redis.conf :这个是关键配置,让 redis 不是无配置启动,而是按照这个 redis.conf 的配置启动
–appendonly yes :redis 启动后数据持久化
# docker 安装 nginx
拉取镜像
docker pull nginx |
创建挂载目录
mkdir -p /home/nginx/conf | |
mkdir -p /home/nginx/log | |
mkdir -p /home/nginx/html |
出现问题
mounting "/root/nginx.conf" to rootfs at "/etc/nginx/nginx.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? |
将 “/root/nginx.conf” 挂载到 “/etc/nginx/nginx.conf” 的 rootfs 导致:通过 procfd 挂载:不是目录:未知:您是否试图将目录挂载到文件上 (反之亦然)
# 根因
- 不支持直接挂载文件,只能挂载文件夹
- 想要挂载文件,必须宿主机也要有对应的同名文件
# 解决方法
- 可以先不挂载 nginx.conf
- 先从容器中复制 nginx.conf 出来
- 然后可以自行修改 nginx.conf,自定义配置项
- 创建正式使用的 nginx 容器
当然也可以去网上随便找个 nginx.conf,最重要的是宿主机要有个 nginx.conf
docker run --name nginx -d -p 80:80 -v /usr/local/docker/nginx/html:/usr/share/nginx/html -v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/docker/nginx/conf.d:/etc/nginx/conf.d -v /usr/local/docker/nginx/logs:/var/log/nginx nginx |
# 安装 java
下载 JDK、
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html |

在浏览器中输入上面官网链接之后,会出现上面的图片,如上图红框里圈出来的,这里我们选择 jdk-8u271-linux-x64.rpm 和 jdk-8u271-linux-x64.tar.gz 这两个包分别为大家进行安装演示。
rpm 包的安装方法
chmod 755 /usr/java/jdk-8u271-linux-x64.rpm | |
这个文件默认权限是 644,属主、属组、其他都没有执行权限,因为需要执行安装的动作,所以应当给到执行权限 | |
rpm -ivh /usr/java/jdk-8u271-linux-x64.rpm | |
拿到权限之后,通过 rpm 进行安装的操作 |
rpm 包的安装只需要一条命令就可以搞定。但是在安装之后,需要先给到这个文件相应的权限,没有权限后续的操作会出现报错哦。
rpm 包的安装差不多算是结束了,因为接下来的动作就跟上面的是重复的,也就是下来需要打开 profile 文件,然后进行环境变量的配置,并且 source 使其生效。再接着回来检查 Java 版本是否可以正常输出即可。
打开 profile 文件
vim /etc/profile |
打开这个文件之后,按 i 进入到编辑模式,然后找到 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTRO 这句话,之后另起一行,根据刚刚下载的的 JDK 版本添加以下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_271 | |
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib | |
export PATH=$JAVA_HOME/bin:$PATH |
然后按 Esc,输入 :wq,保存修改并退出。
重新读取环境变量
执行到这里,我么已经配置了 Java 的环境变量,那么现在需要做的就是让它生效,这里我们不必重启机器让其生效,通过 source 命令就可以。
source /etc/profile |
之后,刚刚配置的环境变量便会生效,原理就是重新读取以下 profile 配置文件中的内容。
上面已经提到如何确认 JDK 是否成功安装,只需要通过查看版本即可看到。那么同样的,这里依旧采用同样的方法来验证 JDK 的安装情况。
java -version | |
java version "1.8.0_271" | |
Java(TM) SE Runtime Environment (build 1.8.0_271-b13) | |
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b13, mixed mode) |
解压安装的方法同理
