阿里云轻量应用服务器安装docker部署mysql,tomcat,redis以及成功远程连接上
一、docker
1)、docker的安装
-
检查centos内核版本(必须是3.10及以上)
uname -r
-
安装docker
yum install docker
-
选择同意安装y
-
安装完成
2)、docker设置阿里云镜像加速
- 打开阿里云选择容器镜像服务并且开通
2. 查看自己的唯一加速器地址
3. 配置镜像加速器
```shell
# 修改docker配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://rki1jqog.mirror.aliyuncs.com"]
}
EOF
# 重新加载docker的守护进程
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker
# 开机启动docker
sudo systemctl enable docker
```
3)docker的相关命令
# 查看docker的版本
# Docker version 1.13.1, build 4ef4b30/1.13.1
docker -v
# 从docker仓库查找相关镜像
docker search 镜像名
# 从docker仓库拉取对应镜像 tag不加默认为最新版本latest
docker pull 镜像名:tag(版本号)
# 查看本地仓库镜像
docker images
# 删除本地仓库镜像
docker rmi 镜像id
# 后台启动容器
docker run -d --name (为容器取名) 镜像名:tag(版本号)
# 启动容器时进行端口映射
docker run -it -d -p (主机端口号):(容器内部端口号) 镜像名:tag(版本号)
二、docker上部署mysql
1)、仓库拉取最版本mysql
# 拉取mysql镜像
docker pull mysql
# 查看本地仓库镜像
docker images
2)、启动mysql容器
# 根据mysql镜像启动容器 并且设置账号密码
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
# 查看全部的容器
docker ps -a
# 启动mysql容器
docker start (容器ID)
3)、通过本地主机无法连接到服务器的mysql
解决办法:
-
进入镜像中的mysql
docker exec -it (容器id) /bin/bash
-
登录mysql
mysql -uroot -p
-
修改root 可以通过任何客户端连接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
-
重启mysql容器
docker restart mysql
-
连接成功!
三、docker上部署tomcat
1)仓库拉取最新版tomcat
docker pull tomcat
2)、启动tomcat容器
# 根据tomcat镜像启动容器
docker run --name mytomcat -p 8080:8080 -d tomcat
# 查看全部的容器
docker ps -a
# 启动tomcat容器
docker start mytomcat
3)、解决本机访问不到服务器部署的tomcat
-
阿里云服务器上的安全组规则相应的端口号未开启
这里我将全部端口都打开了(安全性上不推荐使用)
-
最新版本的tomcat包中有两个webapps文件夹,将空的webapps文件夹删除,修改webapps.dist文件夹的名字为webapps
# 进入容器文件夹内部 docker exec -it (tomcat容器id) /bin/bash # 查看文件夹列表找到webapps ls -l # 删除空文件夹webapps rm -rf webapps # 将webapps.dist文件夹改名为webapps mv webapps.dist webapps # 查看文件夹列表是否成功 ls -l # 重启tomcat容器 docker restart (tomcat容器id)
-
这时你会发现本地主机还是无法访问tomcat,因为docker上部署的tomcat容器启动异常缓慢
根本原因就在于 SecureRandom 这个 jre 的工具类的问题。那为什么 SecureRandom generateSeed 这么慢,甚至挂在 Linux 操作系统呢?Tomcat 7/8 都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 类产生安全随机类 SecureRandom 的实例作为会话 ID。
SecureRandom generateSeed使用 /dev/random 生成种子。但是 /dev/random 是一个阻塞数字生成器,如果它没有足够的随机数据提供,它就一直等,这迫使 JVM 等待。键盘和鼠标输入以及磁盘活动可以产生所需的随机性或熵。但在一个服务器缺乏这样的活动,可能会出现问题。
# 进入tomcat容器文件内部
docker exec -it (tomcat容器id) /bin/bash
# 在容器内部安装vim
apt-get update
apt-get install vim
# 进入容器中的jdk安装路径文件夹
cd usr/local/openjdk-8/jre/lib/security/
# 查看文件夹列表
ls -l
# 修改java.security文件
vim java.security
# 查找securerandom.source(命令模式下 按下小写n向下查找大写N向上查找)
/securerandom.source
# insert修改securerandom.sorce
securerandom.source=file:/dev/./urandom
# ESC进入命令模式 :wq(保存退出) exit退出容器内部
# 重启tomcat容器
docker restart (tomcat容器ID)
4)、成功访问
四、docker上部署redis
1)、仓库拉取最新版redis
# 仓库拉取最新版redis
docker pull redis
# 查看本地仓库的镜像
docker images
2)、启动redis容器
# 根据redis镜像启动容器
docker run -d -p 6379:6379 --name myredis redis
3)、本地主机连接redis
仓库拉取最新版redis
docker pull redis
查看本地仓库的镜像
docker images
[外链图片转存中...(img-OheS07qK-1583828586008)]
#### 2)、启动redis容器
```shell
# 根据redis镜像启动容器
docker run -d -p 6379:6379 --name myredis redis