1.整体设计
服务及程序部署在linux上
设计的环境:
使用wget命令下载,如果没有wget可以先使用yum install wget 或 apt install wget 下载
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
- 离线安装JDK
- 官网下载对应的jdk版本
2. **解压安装**
如果tar.gz的安装包
1.找到压缩包所在的文件位置,执行以下命令(jdk-8u131-linux-x64.tar.gz是文件名称)
tar -zxvf jdk-8u131-linux-x64.tar.gz
解压完成之后,可以在当前目录下看到一个名字为【jdk1.8.0_131】的目录,里面存放的是相关文件
然后重命名文件夹:
mv jdk1.8.0_131/ jdk1.8
我们要将解压后的【jdk1.8】里面的所有数据移动到我们需要安装的文件夹当中,我们打算将jdk安装在usr/java当中,我们在usr目录下新建一个java文件夹
mkdir /usr/java
将【jdk1.8.0_131】里的数据拷贝至java目录下
mv /home/cmfchina/jdk1.8.0_131 /usr/java
3. **修改环境变量**
至此,我们最后需要修改环境变量,通过命令
vim /etc/profile
用vim编辑器来编辑profile文件,在文件末尾添加一下内容(按“i”进入编辑):
export JAVA_HOME=/usr/java/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
然后,保存并退出(按:wq!)
保存完之后,我们还需要让这个环境变量配置信息里面生效,要不然只能重启电脑生效了。
source /etc/profile
检查是否安装成功
输入 java -version 如果显示如下画面,就表示大功告成啦!
rpm 方式安装java
1.rpm下载地址
http://www.oracle.com/technetwork/java/javase/downloads/index.html
2.如果有安装openjdk 则卸载
########检查####################
[root@localhost ~]# rpm -qa | grep java
tzdata-java-2014i-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1.el7_0.x86_64
java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64
##########卸载#################
rpm -e —nodeps tzdata-java-2014i-1.el7.noarch
rpm -e —nodeps java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1.el7_0.x86_64
rpm -e —nodeps java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64
3.安装java rpm
rpm -ivh jdk-8u191-linux-x64.rpm
4.配置/etc/profile
#java
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
5.source /etc/profile
2.查看JDK 相关信息
一、查看Jdk的安装路径:
whereis java
which java (java执行路径)
3.卸载JDK(针对rpm安装的jdk),如果是解压修改的配置,清除配置,删除解压文件即可
- 确定JDK的版本:
rpm -qa | grep jdk
rpm -qa | grep gcj
结果:
copy-jdk-configs-2.2-5.el7_4.noarch
java-1.8.0-openjdk-headless-debug-1.8.0.161-0.b14.el7_4.x86_64
java-1.8.0-openjdk-headless-1.8.0.161-0.b14.el7_4.x86_64
java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
java-1.8.0-openjdk-debug-1.8.0.161-0.b14.el7_4.x86_64
2.然后卸载:
yum -y remove copy-jdk-configs-2.2-5.el7_4.noarch
如果这中方法不行,可以使用如下的方法卸载:
1)卸载系统自带的jdk版本:
查看自带的jdk:
rpm -qa|grep gcj
可能看到如下类似的信息:
libgcj-4.1.2-44.el5
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
使用rpm -e —nodeps 命令删除上面查找的内容:
rpm -e –nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
2)卸载rpm安装的jkd版本
查看安装的jdk:
rpm -qa|grep jdk
可能看到如下类似的信息:
jdk-1.6.0_22-fcs
卸载:
rpm -e —nodeps jdk-1.6.0_22-fcs
3)进一步查看JDK信息
rpm -qa | grep java
卸载
rpm -e —nodeps tzdata-java-2018d-1.el7.noarch
rpm -e —nodeps javapackages-tools-3.4.1-11.el7.noarch
4.卸载JDK(针对解压修改配置文件的安装方式)
which java(查看JDK的安装路径)
rm -rf JDK地址(卸载JDK) rm -rf /usr/java/jdk/jdk1.8.0_172/
java -version
java
javac
查看是否卸载完毕
vi命令编辑文件profile vi /etc/profile
删除配置的环境变量,至此JDK卸载完毕
2.安装docker
前言
有时候会遇到服务器不能联网的情况,这样就没法用yum安装软件,docker也是如此,针对这种情况,总结了一下离线安装docker的步骤。
1.准备docker离线包
docker官方离线包下载地址
下载需要安装的docker版本,我此次下载的是 docker-17.03.2-ce.tgz版本
2. 准备docker.service 系统配置文件
docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
3. 准备安装脚本和卸载脚本
安装脚本 install.sh
#!/bin/sh
echo '解压tar包...'
tar -xvf $1
echo '将docker目录移到/usr/bin目录下...'
cp docker/* /usr/bin/
echo '将docker.service 移到/etc/systemd/system/ 目录...'
cp docker.service /etc/systemd/system/
echo '添加文件权限...'
chmod +x /etc/systemd/system/docker.service
echo '重新加载配置文件...'
systemctl daemon-reload
echo '启动docker...'
systemctl start docker
echo '设置开机自启...'
systemctl enable docker.service
echo 'docker安装成功...'
docker -v
卸载脚本 uninstall.sh
#!/bin/sh
echo '删除docker.service...'
rm -f /etc/systemd/system/docker.service
echo '删除docker文件...'
rm -rf /usr/bin/docker*
echo '重新加载配置文件'
systemctl daemon-reload
echo '卸载成功...'
4. 安装
4.1 此时目录为:(只需要关注docker-17.03.2-ce.tgz、docker.service、install.sh、uninstall.sh即可)
4.2 执行脚本 sh install.sh docker-17.03.2-ce.tgz 执行过程如下:
- 待脚本执行完毕后,执行docker -v
发现此时docker已安装成功,可以用docker —help 查看docker命令,从现在开始你就可以自己安装image和container了
- 4.3 如果你想卸载docker,此时执行脚本 sh uninstall.sh即可,执行过程如下:
5..拉取所需的镜像(离线就导入镜像)
一.在线下载镜像
- 我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/ (推荐)
- 我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。
- NAME: 镜像仓库源的名称
- DESCRIPTION: 镜像的描述
- OFFICIAL: 是否 docker 官方发布
- stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
- AUTOMATED: 自动构建。
我们决定使用上图中的 httpd 官方版本的镜像,使用命令 docker pull 来下载镜像。
runoob@runoob:~$ docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
8b87079b7a06: Pulling fs layer
a3ed95caeb02: Download complete
0d62ec9c6a76: Download complete
a329d50397b9: Download complete
ea7c1f032b5c: Waiting
be44112b72c7: Waiting
下载镜像后可以通过 docker images 查看下载的镜像
二.离线导入镜像
Docker镜像的导入导出,用于迁移、备份、升级
涉及的命令有export、import、save、load
- save
命令:
docker save [options] images [images…]
示例:
docker save -o nginx.tar nginx:latest
或
docker save > nginx.tar nginx:latest
其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)
- load
- 命令
docker load [options] - 示例
docker load -i nginx.tar
或
docker load < nginx.tar
其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息
- export
- 命令
docker export [options] container - 示例
docker export -o nginx-test.tar nginx-test
其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是源容器名(name)
- import
- 命令
docker import [options] file|URL|- [REPOSITORY[:TAG]]
- 示例
docker import nginx-test.tar nginx:imp
或
cat nginx-test.tar | docker import - nginx:imp
区别
- export命令导出的tar文件略小于save命令导出的
export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出
基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示,nginx:latest是save导出load导入的,nginx:imp是export导出import导入的。
建议
可以依据具体使用场景来选择命令
- 若是只想备份images,使用save、load即可
若是在启动容器后,容器内容有变化,需要备份,则使用export、import (这个可能会有莫名其妙的错误)
6.运行docker 镜像(详细请查考菜鸟教程docker)
示例
docker run -dp 4001:3000 getting-started
-d和-p标志,我们以“分离”模式(在后台)运行新容器,并在宿主机的 4001 端口和容器的 3000 端口之间创建映射。没有端口映射,我们将无法访问应用程序
:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec命令
以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:
docker run -it ubuntu /bin/bash
参数说明:
- -i: 交互式操作。
- -t: 终端。
- ubuntu: ubuntu 镜像。
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
7.通过docker-compose 管理启动docker内的服务
Docker Compose是一种用于帮助定义和共享多容器应用程序的工具。
使用 Compose,我们可以创建一个 YAML 文件来定义服务,并且使用一个命令,可以启动所有内容或将其全部关闭。
1.安装 Docker Compose
如果您为 Windows 或 Mac 安装了 Docker Desktop/Toolbox,那么您已经拥有 Docker Compose!Play-with-Docker 实例也已经安装了 Docker Compose。如果您在 Linux 机器上,则需要安装 Docker Compose。
先决条件
Docker Compose 依赖 Docker Engine 来完成任何有意义的工作,因此请确保您在本地或远程安装了 Docker Engine,具体取决于您的设置。
- 在 Docker Desktop for Mac 和 Windows 等桌面系统上,Docker Compose 包含在这些桌面安装中。
- 在 Linux 系统上,首先 按照获取 Docker 页面中的说明为您的操作系统安装Docker 引擎,然后返回此处获取有关在 Linux 系统上安装 Compose 的说明。
Docker Engine 可通过 Docker Desktop 在各种Linux 平台、 macOS和Windows 10 上使用,并且可以作为静态二进制安装使用。在下方找到您首选的操作系统。
- 要以非 root 用户身份运行 Compose,请参阅以非 root 用户身份管理 Docker。
在 Linux 上,您可以从 GitHub 上的 Compose 存储库发布页面下载 Docker Compose 二进制文件。按照链接中的说明进行操作,其中涉及curl在终端中运行命令以下载二进制文件。这些分步说明也包括在下面。
在线安装详细教程 菜鸟教程
离线安装官网教程
1.下载安装包
选择自己的版本,我选的是当前最新的1.24.0版本,点击下载。下载后上传到服务器/usr/local/bin/目录下
进入上述目录,对文件重命名,然后赋予执行权限:
cd /usr/local/bin
mv docker-compose-Linux-x86_64 docker-compose
sudo chmod +x docker-compose
查看docker-compose版本号:
docker-compose --version
2.使用步骤
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
docker-compose.yml 的配置案例如下(配置参数参考下文):
version: '3'
services:
nginx:
container_name: DZ-nginx
restart: always
image: nginx
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "10"
# links:
# - DZ-service
ports:
- 28089:28089
volumes:
- ./config/nginx.conf:/etc/nginx/nginx.conf
- ./dist:/usr/share/nginx/wwwroot/dist
- ./log/nginxlog:/var/log/nginx
postgis:
restart: always
image: postgis/postgis
container_name: DZ-postgis
privileged: true
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: "root"
POSTGRES_USER: "postgres"
POSTGRES_DB: "postgres"
volumes:
- ./data/postgis-data:/var/lib/postgresql/data
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "10"
mysql:
container_name: DZ-mysql # 指定容器的名称
restart: always
image: mysql:8.0 # 指定镜像和版本
ports:
- "13306:3306"
environment:
MYSQL_ROOT_PASSWORD: "root"
volumes:
- ./data/mysql-data/data:/var/lib/mysql
# - ./config/my.conf:/etc/mysql/my.cnf
redis:
image: redis
container_name: DZ-redis
restart: always
command: redis-server /usr/local/etc/redis/redis.conf
ports:
- "6379:6379"
volumes:
- ./data/redis-data:/data
- ./config/redis.conf:/usr/local/etc/redis/redis.conf
3.使用 Compose 命令构建和运行您的应用
在测试目录中,执行以下命令来启动应用程序:
docker-compose up
如果你想在后台执行该服务可以加上 -d 参数:
docker-compose up -d
8.jar包通过Dockerfile做成镜像运行
一.操作步骤
- 在自己电脑打包出jar
- 传到远程服务器,新建一个文件夹,把jar包放进去
- 在jar包同一文件夹下创建Dockerfile文件
FROM openjdk:8u332-jdk-oracle
#把文件夹内的jar复制到容器中,重命名为wdcloud.jar
ADD wdcloud-docker.jar wdcloud.jar
# 将外部配置文件复制到容器
COPY ./config /home/dance/config
# ENTRYPOINT 执行项目 app.jar及外部配置文件,多个配置文件逗号隔开
ENTRYPOINT ["java", "-jar", "-Dspring.config.location=/home/dance/config/application.properties" ,"wdcloud.jar"]
在jar包所在目录创建镜像
docker build -t testimage:1.0 .
最后一个点表示Dockerfile的位置,即当前文件夹注意镜像名不能有大写**
根据镜像创建容器并运行
docker run -itd --name dance-cloud-con -p 20011:10307 -v /data/dance/images/config:/home/dance/config dance-cloud:1.0
—name dance-cloud-con(容器名称)
-p 20011:10307 20011(对外访问端口) 10307(配置文件内定义的服务使用端口)
-v /data/dance/images/config:/home/dance/config /data/dance/images/config(外部配置文件所在文件夹的绝对路径)
dance-cloud:1.0 镜像名称:版本号-
二.辅助命令
- docker logs -f 容器名 实时查看容器日志
- docker rm -f 容器名 删除容器
- docker rmi -f 镜像名 删除镜像