• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

docker四运行java程序

武飞扬头像
李王家的翠花
帮助1

一、运行简单的java程序

1、准备一个简单的java web程序,打成jar包之后上传到服务器上。
学新通
2、创建Dockerfile文件

# 基于openjdk镜像
FROM openjdk:8

#定义环境变量
ARG MS_NAME=docker-demo
ENV JAVA_OPTS="-Xms512m -Xmx512m -Xmn200m -Xss512K"

#声明需要暴露的端口
EXPOSE 2001

#设置工作目录
WORKDIR /app/data/${MS_NAME}

# 复制文件到容器目录
ADD ${MS_NAME}*.jar .

#定义匿名数据卷
VOLUME ["/app/data/${MS_NAME}/logs"]

#配置容器启动后执行的命令
ENTRYPOINT java ${JAVA_OPTS} -Duser.timezone=GMT 8 -Dlog4j2.formatMsgNoLookups=true -XX:MetaspaceSize=256m   -XX:MaxMetaspaceSize=256m -XX: DisableExplicitGC -XX: UseConcMarkSweepGC -XX: CMSParallelRemarkEnabled  -XX: UseFastAccessorMethods -XX: UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX: HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump/${MS_NAME}.dump -jar  ${MS_NAME}*.jar

学新通

以上命令涉及到宿主机的目录或者文件是相对dockerfile文件相对路径。
3、生成镜像
将jar包和Dockerfile文件上传到宿主机上,如下图:
学新通
执行以下命令,生成镜像。

docker build -t demo-test .

其中demo-test代码镜像名称,.代表dockerfile文件所在目录在当前目录。
4、启动镜像
我这里拿我之前已经构建好的镜像为示例(方便自己记忆,同时方便后文讲解),如下图:
学新通
上图的eureka等都是构建好的镜像,启动命令如下:

run -d -e PROFILE="dev" -p 2014:2014 --hostname ms-recognition-1 --name ms-recognition-1 --network test-net host:5000/library/ms-recognition:1.2.0

其中,PROFILE="dev"代表开发环境,2014:2014代码端口映射为2014,容器名称为ms-recognition-1。
在Docker中,默认情况下容器与容器、容器与外部宿主机的网络是隔离开来的。当你安装Docker的时候,docker会创建一个桥接器docker0,通过它才让容器与容器之间、与宿主机之间通信。
上面命令中的–network就是指定桥接网络,保证容器之间进行通信的。我们docker中的network 如下:
学新通
5、日志查看
镜像启动之后,我们查看已经启动的容器:
学新通
利用docker logs -f 93c70416fca7查看实时日志(这里就不截图了)。
至此,启动完成。

二、docker-maven-plugin插件使用

对于maven项目来说,除了上面的方法之外,还有一个插件的方法能够进行docker构建镜像和启动。
1、修改宿主机的docker配置,开放2375端口,让其可以远程访问

//修改配置文件
vi /lib/systemd/system/docker.service

修改内容如下:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \

表示允许任何远程客户端通过 2375 端口连接 Docker Daemon。
重启:

systemctl daemon-reload		//加载docker守护线程
systemctl restart docker 	//重启docker

2、关闭防火墙
参考linux防火墙的操作
3、修改pom.xml文件
新增如下配置:

<plugin>
                <groupId>io.fabric8</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.35.0</version>
                <executions>
                    <execution>
                        <id>docker-build</id>
                        <goals>
                            <goal>build</goal>
                        </goals>
                        <phase>package</phase>
                    </execution>
                    <execution>
                        <id>docker-push</id>
                        <goals>
                            <goal>push</goal>
                        </goals>
                        <phase>install</phase>
                    </execution>
                </executions>
                <configuration>
                    <!--指定远程 docker api地址-->
                    <dockerHost>http://XXX:2375</dockerHost>
                    <images>
                        <image>
                            <!--镜像名(含版本号)-->
                            <!--私有仓库地址和端口,再加上镜像id和TAG,我们要直接传到私服-->                 
                            <name>
                                XXX:5000/library/${project.name}:${project.version}
                            </name>
                            <!--registry地址,用于推送,拉取镜像-->
                            <registry>XXX</registry>
                            <!--指定远程 docker api地址-->
                            <build>
                                <dockerFile>${project.basedir}/Dockerfile</dockerFile>
                                <contextDir>${project.basedir}/target/package</contextDir>
                            </build>
                        </image>
                    </images>
                </configuration>
            </plugin>
学新通

4、打包和推送
学新通
如图所示,先build,再push就能在docker镜像中构建。然后就是和简单java程序一样进行启动镜像进行使用了。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcgkaf
系列文章
更多 icon
同类精品
更多 icon
继续加载