liunx启动java
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- liunx启动java
- 前言
- 一、安装docker
- 1.环境准备
- 2.安装docker
- 3.Docker与VM虚拟机对比
- 4.镜像加速
- 5.操作docker、操作镜像
- 1. 卸载docker
- 2.操作容器
- 3. 操作镜像
- 二、docker脚本部署java
- 1.创建springboot_start.sh文件
- 2 添加脚本执行权限
- 3 创建Dockerfile
- 4 上传jar包
- 5 创建镜像
- 6 创建&启动容器
- 总结
前言
- Docker是一个容器化平台,它将应用程序及其所有依赖项以容器的形式打包在一起,以确保应用程序在任何环境(无论是开发环境、测试环境还是生产环境)中无缝运行。
- Docker容器,将一个软件包在一个完整的文件系统中,其中包含运行所需的一切:代码、运行时、系统工具、系统库等任何可以安装在服务器上的东西。
- 它都将始终运行相同的程序,无论软件的环境如何。
一、安装docker
1.环境准备
centos7系统(版本稳定,对docker支持友好)
[root@VM-0-13-centos ~]# cat /etc/redhat-release //查看centos的版本
2.安装docker
- 如果以前有docker,删除旧版本
[root@VM-0-13-centos ~]# yum remove docker docker-common docker-selinux docker-engine
1
- 添加新docker的yum源,新的 docker 叫做 docker-ce ,如果第一次安装 docker-ce 需要设置 docker-ce 的 yum 源。
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test
- 配置国内镜像源拉去镜像
不配置会卡。可能下不来
mkdir /etc/docker
vim /etc/docker/daemon.json
添加以下配置
{
"graph":"/home/docker",
"registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn",
"https://reg-mirror.qiniu.com",
"https://hub-mirror.c.163.com"]
}
- 安装docker
yum update
yum install -y docker-ce
- 启动docker服务
#启动docker
systemctl start docker
#设置开机自启动
systemctl enable docker
- 查看docker的运行状态,看看是否安装成功
systemctl status docker
- 查看docker已经安装的镜像,刚完成安装完为空
docker images
这里笔者和大家说明一下什么是docker镜像什么是docker容器: - Docker镜像是Docker容器的源代码。换句话说,Docker镜像用于创建容器。使用build命令创建镜像,并且在使用run启动时它们将生成容器。镜像存储在Docker注册表中,registry.hub.docker.com因为它们可能变得非常大,镜像被设计为由其他镜像层组成,允许在通过网络传输镜像时发送最少量的数据。
- Docker容器包括应用程序及其所有依赖项,但与其他容器共享内核,在主机操作系统的用户空间中作为独立进程运行。Docker容器不依赖于任何特定的基础架构:它们可以在任何计算机,任何基础架构和任何云中运行。
3.Docker与VM虚拟机对比
特性 Docker VM
启动速度 秒级 分钟级
硬盘使用 MB GB
性能 接近原生 弱于原生
系统支持量 单机支持上千容器 一般十几个
4.镜像加速
由于国外网络问题,需要配置加速器来加速,
修改 /etc/docker/daemon.json来配置国内镜像源。
vim /etc/docker/daemon.json
改为
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
5.操作docker、操作镜像
1. 卸载docker
查看docker的运行状态
systemctl status docker
查询安装过的包
yum list installed | grep docker
删除安装的软件包
yum -y remove docker.x86_64
2.操作容器
#查看所有正在运行的容器
docker ps
#查看所有容器
docker ps -a
#用一页列出所有容器,按Esc,wq退出
docker ps | less -S
启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭docker service docker stop
关闭docker systemctl stop docker
停止容器 :docker stop 容器ID
启动容器 :docker start 容器ID
杀死容器 :docker kill 容器ID
重启容器 :docker restart 容器ID
删除容器:docker rm -f 容器ID
删除所有容器:docker rm -f `docker ps -a -q`
查看容器启动日志: docker logs --tail 300 -f 容器ID
进入容器内部,同时运行bash
docker exec -it 容器ID /bin/bash
以root身份进入docker容器根目录
docker exec -ti -u root 容器ID /bin/sh
如果出现 ls: can’t open ‘.’: Permission denied错误,也就是无法进入该目录
原因是centos7.x及以上系统默认的selinux进程会iu禁用部分权限,可使用以下方式解决
setenforce 0 //setenforce [0|1], 0宽容模式 1强制模式 默认强制模式(Enforcing)
systemctl daemon-reload //重新加载配置文件
systemctl restart docker //重启docker
3. 操作镜像
列出、搜索、拉取、删除镜像
docker images
docker search 镜像名
docker pull 镜像名
docker rmi 镜像ID
二、docker脚本部署java
1.创建springboot_start.sh文件
.sh 脚本里写这
java -jar /data/music_serve.jar
将springboot_start.sh上传到/usr/local/javaweb,这个文件夹路径可以自定义,记住这个文件夹路径,后面还会用到。
2 添加脚本执行权限
[root@VM-0-13-centos ~]# chmod +x springboot_start.sh
3 创建Dockerfile
上图所示 .sh同一文件夹
Dockerfile里面写
# Docker image for springboot file run
# VERSION 0.0.1
# Author: toutou
# 基础镜像使用java
FROM java:8
EXPOSE 8301
CMD ["sh","-c","/data/springboot_start.sh"]
CMD [“sh”,"-c","/data/springboot_start.sh"] 表示在容器启动时启动1.1中创建的springboot_start.sh脚本。
注意最后一条命令上文中都是ENTRYPOINT,在脚本部署中改成了CMD,至于ENTRYPOINT和CMD的具体区别感兴趣的可以了解一下。
4 上传jar包
将jar包放入springboot_start.sh的同一个文件夹目录,即/usr/local/javaweb,创建容器时再将该目录(宿主机目录)与容器的/data目录进行映射。
5 创建镜像
[root@VM-0-13-centos ~]# docker build -t music-images .
末尾的点号代表当前目录,所以生成镜像的命令需要在Dockerfile所在的目录执行。
6 创建&启动容器
[root@VM-0-13-centos ~]# docker run --name music-docker -it -v /usr/local/javaweb:/data -v /home/music:/home/music -d -p 8888:8888 music-images
[root@VM-0-13-centos ~]# docker start music-docker
-d参数是让容器后台运行;–name为指定容器的名称;-p 是做端口映射,此时将服务器中的8888(冒号前的端口)端口映射到容器中的8888(冒号后的端口)端口(application.yml配置的是8888)
music-images是镜像名称
-v usr/local/javaweb:/data宿主机目录关联容器目录。这样宿主机的/usr/local/javaweb目录就与docker的/data目录进行映射。这样的话,当jar包发生变动时,直接更新宿主机目录下的jar包即可。即使jar包名字发生变化,也需要再更新一下springboot_start.sh脚本。更新之后重启容器。
-v /home/music:/home/music 挂载liunx目录到docker 这样在java中设置的资源目录就能读取到
docker启动日志-看看java启动是否成功
[root@VM-0-13-centos ~]# docker logs --tail 300 -f music-docker
总结
docker启动java 脚本运行就到这里了
如果是直接启动的话
nohup java -jar base-api-server-0.0.1-SNAPSHOT > /dev/null 2> /dev/null &
这里启动为后台一直启动
- 命令 “nohup java -jar XXX.jar &”
部分,表示不挂断运行命令,当账户退出或终端关闭时,程序仍然运行。注意,该作业的所有输出被重定向到nohup.out的文件中。 - 一般不需要查看日志的就直接丢掉丢掉
nohup java -jar BiuBiuBiu.jar >/dev/null 2>&1 &