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 创建&启动容器
  • 总结



前言

  1. Docker是一个容器化平台,它将应用程序及其所有依赖项以容器的形式打包在一起,以确保应用程序在任何环境(无论是开发环境、测试环境还是生产环境)中无缝运行。
  2. Docker容器,将一个软件包在一个完整的文件系统中,其中包含运行所需的一切:代码、运行时、系统工具、系统库等任何可以安装在服务器上的东西。
  3. 它都将始终运行相同的程序,无论软件的环境如何。

一、安装docker

1.环境准备

centos7系统(版本稳定,对docker支持友好)

[root@VM-0-13-centos ~]# cat /etc/redhat-release               //查看centos的版本

linux怎么进入docker目录 linux怎么启动docker服务_docker

2.安装docker

  1. 如果以前有docker,删除旧版本
[root@VM-0-13-centos ~]# yum remove docker docker-common docker-selinux docker-engine
1
  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
  1. 配置国内镜像源拉去镜像
    不配置会卡。可能下不来
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"]
}
  1. 安装docker
yum update
yum install -y docker-ce
  1. 启动docker服务
#启动docker
systemctl start docker
#设置开机自启动
systemctl enable docker
  1. 查看docker的运行状态,看看是否安装成功
systemctl status docker

linux怎么进入docker目录 linux怎么启动docker服务_Docker_02

  • 查看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

linux怎么进入docker目录 linux怎么启动docker服务_linux_03


删除安装的软件包

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

linux怎么进入docker目录 linux怎么启动docker服务_docker_04

将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中设置的资源目录就能读取到

linux怎么进入docker目录 linux怎么启动docker服务_docker_05

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 &