docker搭建部署

本文详细介绍了如何使用Dockerfile部署Java应用的jar包,包括基本步骤如创建Dockerfile、构建镜像,以及使用docker-compose进行更复杂的多服务部署,并展示了如何检查和处理端口占用问题。
摘要由CSDN通过智能技术生成

# **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)

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值