今天觉得这篇文章的名字可能有歧义,点开这篇文章的小伙伴们想找的可能是我们应该如何部署一个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及数据、网络连通