今天觉得这篇文章的名字可能有歧义,点开这篇文章的小伙伴们想找的可能是我们应该如何部署一个Java项目,这篇文章我是用来记录简单的Docker容器部署的,让初学的小伙伴们了解Docker的部署过程,如果想了解Docker部署SpringBoot项目的同学请直接看这里↓
Docker学习笔记(四)——SpringBoot打包项目作为镜像发布
如果您需要先学习Docker的下载安装基本命令等内容请前往下面的连接↓
Docker学习笔记(一)——基本使用
Docker部署Nginx
1.搜索nginx
docker search nginx
2.拉取远程仓库的nginx
docker pull nginx
3.启动nginx镜像
# 参数意义: 后台启动;设置容器名称;主机的3344端口映射容器内80端口
docker run -d --name nginx01 -p 3344:80 nginx
Docker部署Tomcat
官方部署方法,下载后直接删除,可以测试时使用
# 直接可以启动一个tomcat的容器,其中--rm参数表示此容器退出后即删除容器
docker run -it --rm tomcat:9.0
我们使用类似nginx方式部署
1.拉取远程仓库tomcat镜像
docker pull tomcat:9.0
2.启动运行
docker run -d -p 8080:8080 --name tomcat01 tomcat
运行tomcat容器是有一个小问题的
容器内webapps目录是空的,因为阿里云默认为最小的镜像,剔除不必要的文件,仅保证最小可运行环境。
需要进行如下操作
# 进入容器
docker exec -it tomcat01 /bin/bash
# 展示文件
ls
# 进入webapps目录
cd webapps
# 展示文件,内容为空
ls
# 回到上级目录
cd ..
# 需要将webapps.dist 文件夹复制到webapps文件夹
cp -r webapps.dist/* webapps
Docker部署ES
部署es我们要注意几点
1.es暴露的端口很多
2.es十分消耗内存
3.es数据需要放到安全目录
启动es容器会十分卡顿,所以我们先添加内存限制,否则主机会十分卡顿甚至卡死
-e "discovery.type=single-node" 配置集群为单个节点
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" 限制内存最少64兆 最高512兆
docker run -d --name myES -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
Docker部署RabbitMQ
1.搜索RabbitMQ镜像
docker search rabbitmq
2.下载镜像
docker pull rabbitmq:management
3.运行镜像
docker run -di --name myRabbit -e DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 61613:61613 -p 1883:1883 rabbitmq:management
问题处理:端口被占用。
回答:查找端口被什么应用占用,然后关闭应用。
查看端口状态
netstat -naop | grep 端口号
查看进程
ps -et | grep 端口号
启动rabbitMQ
systemctl start rabbitmq-server
查看rabbitMQ状态(是否启动)
systemctl status rabbitmq-server
关闭rabbitMQ
systemtcl stop rabbitmq-server
Docker部署Mysql
1.搜索Mysql镜像
docker search mysql
2.下载镜像
docker pull mysql:5.7
3.启动容器
# -v 挂载了两次,一个配置文件,一个数据保存文件
docker run -d -p 主机端口:3306(容器内端口) -v 主机内mysql配置文件conf目录:/etc/mysql/conf.d(容器内目录) -v 主机内mysql保存数据目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=自定义密码 --name 自定义容器名称 mysql:5.7
此时我们就可以通过数据库连接工具,通过定义的主机端口就可以访问到容器内的数据库。练习使用,工作中不建议使用Docker中的mysql容器作为数据库。
Docker可视化工具portainer
了解即可,一般不会使用
启动容器 -v表示挂载
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged-true portainer/portainer
启动后我们可以通过浏览器访问主机的8088端口,进入docker管理页面
第一次访问比较慢
1.设置登录密码
2.选择本地的——local
Docker内存小启动快的原因——个人理解
正常我们启动虚拟机的时候需要一个操作系统的镜像,我们需要启动系统,在docker中使用bootfs启动后就将使用权交给内存,使用的内核为主机内核,启动的仅为简单的命令等,这就使docker的镜像启动可以达到秒级。
同时拉取镜像时使用联合文件系统,我们不需要下载多余的文件,镜像之间可以共用同一份。
下一篇请戳 ↓
Docker学习笔记(三)——Dockerfile及数据、网络连通