赞
踩
# **docker搭建部署**
## **Dockerfile部署jar包**
1. 新建目录
mkdir skyxx
cd skyxx
touch Dockerfile
2. 新建/编辑 Dockerfile
vim Dockerfile
文件内容
FROM java:8
MAINTAINER skyxx
ADD /root/ku/Webstack-Guns-1.0.jar dk-Webstack-Guns-1.0.jar
EXPOSE 8000
ENTRYPOINT ["java","-jar","dk-Webstack-Guns-1.0.jar"]
3. 上传或移动jar包
mv /root/ku/Webstack-Guns-1.0.jar Webstack-Guns-1.0.jar
4. 构建jar包镜像- Docker 镜像的仓库名必须是小写字母
docker build -f Dockerfile -t dk-webstack-guns-1.0 .
5. 运行jar容器
docker run -d --name con_webstack-guns_jar -p 8000:8000 dk-webstack-guns-1.0
6. 创建可执行脚本
vim update_dh.sh
脚本内容
#!/bin/bash
# 停止正在运行的容器
docker stop con_webstack-guns_jar
# 删除容器
docker rm con_webstack-guns_jar
# 移动新的 Jar 包到容器所在的目录
mv /root/ku/Webstack-Guns-1.0.jar Webstack-Guns-1.0.jar
# 重新构建 Docker 镜像
docker build -f Dockerfile -t dk-webstack-guns-1.0 .
# 运行新的容器
docker run -d --name con_webstack-guns_jar -p 8000:8000 dk-webstack-guns-1.0
7. 设置为可执行文件
chmod +x update_dh.sh
8. 执行可执行文件
./update_dh.sh
## **docker-compose部署jar包**
1. 编写yml配置文件
cd /root/skyxx/jar
touch chat.yml
2. 构建并运行-指定文件名称
docker-compose -f chat.yml up -d
备注:dh.yml 示例内容
version: "3"
services:
config:
build:
context: .
dockerfile: ./dockerfile
image: dh:v1
environment:
JAR: config-1.0.0.RELEASE.jar
volumes:
- /data/dh_jar:/app
networks:
- dh
ports:
- "8010:8010"
discovery:
image: dh:v1
environment:
JAR: discovery-1.0.0.RELEASE.jar
volumes:
- /data/dh_jar:/app
networks:
- dh
ports:
- "8761:8761"
extra_hosts:
- "config.zlw.net:192.168.1.166"
gateway:
image: dh:v1
environment:
JAR: gateway-2022-03-18.jar
volumes:
- /data/dh_jar:/app
networks:
- dh
ports:
- "8081:8080"
depends_on:
- config
- discovery
extra_hosts:
- "config.zlw.net:192.168.1.166"
qycg:
image: dh:v1
environment:
JAR: qycg-1.0.0-RELEASE.jar
volumes:
- /data/dh_jar:/app
- /data/hysw/files/temporary/:/app/data/temporary
networks:
- dh
ports:
- "8090:8090"
depends_on:
- config
- discovery
- gateway
extra_hosts:
- "config.zlw.net:192.168.1.166"
networks:
dh:
external: false
下面是各个属性的含义:
● version: "3":指定docker-compose文件的版本号。
● services:定义了docker-compose服务的列表。
● config, discovery, gateway, qycg:服务的名称。
● build:构建服务镜像的配置。
● context: .:指定构建镜像时使用的上下文路径。
● dockerfile: ./dockerfile:指定构建镜像时使用的Dockerfile路径。
● image: dh:v1:指定构建的镜像名称和版本。
● environment:设置容器中的环境变量。
● JAR: config-1.0.0.RELEASE.jar:指定服务启动时运行的jar包。
● volumes:挂载容器中的卷,将主机上的目录映射到容器中。
● networks:指定服务所连接的网络。
● ports:指定容器端口与主机端口的映射关系。
● depends_on:指定服务依赖的其他服务。
● extra_hosts:指定容器中的/etc/hosts文件中的额外主机名和IP地址的映射关系。
● dh:定义了一个名为dh的网络,该网络与docker-compose.yml文件所在的目录下的docker-compose.override.yml文件中定义的网络名称相同。
## **Docker环境搭建**
1. 卸载旧的docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
这是一个用于卸载Docker软件的命令,具体解释如下:
1. sudo:以管理员权限运行命令;
2. yum:Linux系统上的一个包管理器,用于安装、升级和卸载软件包;
3. remove:卸载软件包的命令;
4. docker:要卸载的软件包名;
5. \:表示换行,将命令分成多行以便于阅读;
6. docker-client、docker-client-latest、docker-common、docker-latest、docker-latest-logrotate、docker-logrotate、docker-selinux、docker-engine-selinux、docker-engine:要卸载的Docker软件包及其依赖包的名称,这些包可能是不同版本的Docker软件包或者与Docker相关的其他软件包。
因此,这个命令会卸载所有列出的Docker软件包及其依赖包。
2. 安装docker依赖包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
这是一个用于安装 Docker 所需的依赖包的命令,具体解释如下:
1. sudo: 以管理员权限运行命令;
2. yum: Linux 系统上的一个包管理器,用于安装、升级和卸载软件包;
3. install: 安装软件包的命令;
4. -y: 在安装过程中所有的提问都回答“yes”;
5. yum-utils: 一个包含一些实用程序的软件包,用于增强 yum 的功能;
6. \: 表示换行,将命令分成多行以便于阅读;
7. device-mapper-persistent-data: 用于 Docker 存储驱动程序的一个依赖包;
8. lvm2: 逻辑卷管理器,也是 Docker 存储驱动程序的一个依赖包。
因此,这个命令会安装 yum-utils、device-mapper-persistent-data 和 lvm2 这三个软件包,以支持 Docker 的安装和运行。
3. 下载docker相关软件包
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
这个命令是用来添加 Docker 的 YUM 软件源,以便系统可以从该软件源中下载 Docker 相关的软件包。具体来说,sudo yum-config-manager 命令用于配置 YUM 软件源,--add-repo 参数用于添加一个新的 YUM 软件源,https://download.docker.com/linux/centos/docker-ce.repo 是 Docker 的 YUM 软件源地址。执行该命令后,系统就可以使用 yum 命令安装 Docker 了。
4. 安装docker
sudo yum install -y docker-ce
这个命令是用来安装 Docker CE(社区版)的,具体来说,`sudo yum install` 命令用于安装软件包,`-y` 参数表示自动回答 yes,避免在安装过程中需要手动确认,`docker-ce` 是要安装的 Docker 软件包名称。执行该命令后,系统会自动下载并安装 Docker CE 软件包及其依赖包。
5. 启动docker服务
systemctl start docker
这个命令是用来启动 Docker 服务的,具体来说,`systemctl` 命令用于管理 systemd 系统和服务管理器,`start` 参数用于启动指定的服务,`docker` 是要启动的服务名称。执行该命令后,Docker 服务就会在后台运行,并且可以使用 Docker 命令行工具进行操作了。
6. 配置docker文件
#配置文件,加速器地址可以去阿里云查看
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://l30xmj50.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"data-root": "/data/docker",
"live-restore": true,
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
Docker 的 “live-restore” 参数是一个布尔值,用于启用或禁用 Docker 守护进程在重启时自动恢复容器的运行状态。如果设置为 true,当 Docker 守护进程重启时,它将自动恢复正在运行的容器的状态,而不是停止并重新启动它们。
这个参数的作用是确保在 Docker 守护进程重启时,正在运行的容器不会中断服务,从而保证容器中的应用程序的高可用性。
需要注意的是,启用 “live-restore” 参数可能会增加 Docker 守护进程的资源消耗,因为 Docker 守护进程需要在内存中保存容器的状态信息。
7. 重新加载更新 docker
sudo systemctl daemon-reload
这段命令是用于配置 Docker 的一些参数,具体来说,首先使用 `sudo mkdir -p /etc/docker` 命令创建了一个目录用来存放 Docker 的配置文件,然后使用 `sudo tee /etc/docker/daemon.json <<-'EOF'` 命令创建了一个名为 daemon.json 的配置文件,并将其中的内容写入该文件。其中,`registry-mirrors` 参数用于设置 Docker 镜像加速器地址,`data-root` 参数用于设置 Docker 的数据存储路径,`log-driver` 参数用于设置 Docker 的日志驱动程序,`storage-driver` 参数用于设置 Docker 的存储驱动程序。最后,使用 `sudo systemctl daemon-reload` 命令重新加载 systemd 系统管理器的配置文件,以便 Docker 可以使用新的配置参数。
## **查询端口占用情况并处理**
查看当前占用了3002端口的进程
sudo lsof -i :3002
杀死所有占用该端口的进程
sudo kill $(sudo lsof -t -i:3002)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。