前提条件
- 服务器已安装Docker,并拉取所需的镜像(如果未配置请参考juejin.cn/post/684490…)
- 掌握常用命令
* docker ps 查看已经运行的docker镜像
* docker ps -a 查看所有的容器
* docker search 关键字 搜索镜像
* docker images 查看所有本地镜像
* docker pull 镜像名:tag 拉取镜像
* docker start 容器id 启动容器
* docker stop 容器id或容器名 停止运行中的容器
* 略
tomcat的安装
- 启动容器
docker run-d -it --rm -p 8888:8080 tomcat:latest
-d 后台运行
-rm 关闭即移除
-p 8888:8080 端口映射:将容器的8080端口映射到服务器的8888端口
tomcat:latest 运行镜像的版本
-
开放端口
我这里使用的阿里云轻量级服务器,在阿里云控制台开放端口,为了简便,开放了所有端口。如果使用的本地虚拟机,可以关闭防火墙,或者指定端口开放
- 测试连接
访问出现404,我们已经启动了容器并成功开放端口,但是为什么会出现这个问题呢? 原因是拉取下来的镜像启动后生成的webapps文件夹下是空的,而webapps.dist文件夹下有完整的文件。 - 进入容器
docker exec -it 容器Id /bin/bash
解决
- 删除webapps\
rm -rf webapps
- 将webapps.dist重命名webapps\
mv webapps.dist/ webapps
- 退出容器\
exit
- 不需要重启tomcat容器,否则会再次生成两个文件夹(可以把webapps挂载到服务器上,或者修改后重新制作镜像) 重新测试连接,访问正常(我这边测试需要一定的生效时间,耐心等待一分钟左右)
Mysql的安装
- 启动容器
docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
复杂写法:docker run -di --name scf_mysql -p 33306:3306
-v /var/supplychain/image:/var/supplychain/image -e MYSQL_ROOT_PASSWORD=123456 mysql
--lower_case_table_names=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
参数说明:
-d
后台执行
-i
开控制台交互
--name
为这个开启的容器,命名
-p
进行端口映射,将宿主机的33306端口映射到容器的3306
-v
挂载宿主机/var/supplychain/image/这个目录到容器的/var/supplychain/image/目录
-e
指定容器的环境变量,这里是指定的mysql容器中mysql的密码为123456
--lower_case_table_names=1
忽略数据表名的大小写
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
设置中文编码格式为utf8
- 测试连接 外部连接
redis
- 下载镜像
docker pull redis
- 启动容器
docker run --name redis -d -it --rm -p 6379:6379 redis redis-server --appendonly yes
- 启动容器并设置密码
docker run -d --name myredis -p 6379:6379 redis --requirepass "mypassword"
- 连接redis客户端
进入容器
找到redis执行脚本docker exec -i -t 镜像id或者镜像名称 /bin/bash
# 进入redis容器 docker exec -it f9eb2360ed36 bash # 找到redis执行脚本 /usr/local/bin# cd /usr/local/bin/ /usr/local/bin# ls -l
- 进入客户端
docker exec -it redis redis-cli
- 测试连接
这里使用的工具是redis desktop manager
RabbitMQ
-
下载镜像 docker pull rabbitmq:tag
# docker pull rabbitmq (镜像未配有控制台) # docker pull rabbitmq:management (镜像配有控制台)
-
启动容器\
docker run --name rabbitmq -d -p 15672:15672 -p 5672:5672 rabbitmq:management # 15672是管理界面的端口 # 5672 是服务的端口 # RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password 不配置默认登录界面账号密码都是guest