栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用Docker部署服务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Docker部署服务

DockerFile
命令用途
FROM基础镜像文件
RUN构建镜像阶段执行命令
ADD添加文件,从src目录复制文件到容器的dest,其中 src可以是 Dockerfile所在目录的相对路径,也可以是一个 URL,还可以是一个压缩包
COPY拷贝文件,和ADD命令类似,但不支持URL和压缩包
CMD容器启动后执行命令
EXPOSE声明容器在运行时对外提供的服务端口
WORKDIR指定容器工作路径
ENV指定环境变量
ENTRYPINT容器入口, ENTRYPOINT和 CMD指令的目的一样,都是指定 Docker容器启动时执行的命令,可多次设置,但只有最后一个有效。
USER该指令用于设置启动镜像时的用户或者 UID,写在该指令后的 RUN、 CMD以及 ENTRYPOINT指令都将使用该用户执行命令。
VOLUME指定挂载点,该指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享给其他容器。当容器中的应用有持久化数据的需求时可以在 Dockerfile中使用该指令。格式为: VOLUME[“/data”]。

注意:RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令。
注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命令。

# 基于哪个镜像
From java:8
# 复制文件到容器
ADD microservice-eureka-server-0.0.1-SNAPSHOT.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8761
# 配置容器启动后执行的命令
 ENTRYPOINT java ${JAVA_OPTS} ‐jar /app.jar
# 格式: docker  build  -t  镜像名称:标签  Dockerfile的相对位置
在这里,使用-t选项指定了镜像的标签。执行该命令后,终端将会输出如下的内容
docker build -t eureka-images:1.0 -f docker/DockerFile  .
docker  build  -t  eureka-images:1.0 .
启动镜像,加-d可在后台启动
docker run ‐d ‐p 8761:8761 microservice‐eureka‐server:0.0.1

使用 -v 可以挂载一个主机上的目录到容器的目录 
docker run ‐d ‐p 8761:8761 ‐v /log:/container‐log eureka-images:1.0
加上JVM参数:
# ‐‐cap‐add=SYS_PTRACE 这个参数是让docker能支持在容器里能执行jdk自带类似jinfo,jmap这些命令,如果不需要在容器里执 行这些命令可以不加
docker run -e JAVA_OPTS='-Xms1028M -Xmx1028M -Xmn512M -Xss512K -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M' --cap-add=SYS_PTRACE -d -p 8761:8761 --name eureka  eureka-images:1.0
将微服务镜像发布到远程镜像仓库

我们制作好了微服务镜像,一般需要发布到镜像仓库供别人使用,我们可以选择自建镜像仓库,也可以直接使用docker官方镜像仓库,这里我们选择docker官方镜像仓库:Docker Hub
首先,我们需要在docke官方镜像仓库里注册一个账号
然后,在linux服务器上用docker login命令登录镜像仓库

[root@node01 k8s]# docker login

要把镜像推送到镜像仓库,需要将镜像前面加个分组名,执行如下命令修改镜像名字,需要将镜像前面加个分组名(一般就是docker hub的账户名),执行如下命令修改镜像名字

docker tag fairy-images 用户名/fairy-images:1.0

最后将镜像推送到远程仓库

docker push 用户名/fairy-images:1.0

之后就可以登录docker查看推送的镜像

denied: requested access to the resource is denied
因为要求 tag 必须是 hub 仓库的用户名才行。
docker tag fairy-images 用户名/fairy-images:1.0
docker搭建私服 

1.安装docker pull registry,官网上截止目前的版本是V2

启动registry

docker run -itd -v /mydata/docker:/var/lib/registry 
-p 5000:5000 --restart=always --name registry registry:latest


这将使用官方的 registry 镜像来启动私有仓库。
默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下。你可以通过 -v 参数来将镜像文件存放在本地的指定路径,例如下面的例子将上传的镜像放到本地的 /mydata/docker 目录。

打标签:

docker tag cc304d806073 192.168.36.138:5000/eureka:base

push出错

[root@node01 sysconfig]# docker push 192.168.36.138:5000/eureka:base
The push refers to repository [192.168.36.138:5000/eureka]
Get https://192.168.36.138:5000/v2/: http: server gave HTTP response to HTTPS client

原因是docker私有仓库服务器,默认是基于https传输的,所以我们需要在客户端192.168.1.160做相关设置,不使用https传输
将下面的代码放进去保存并退出。

vim /etc/sysconfig/docker
添加
"insecure-registries":["192.168.1.161:5000"]

最终如下所示:

[root@node01 nginx]# cat /etc/sysconfig/docker
{
  "registry-mirrors": ["https://oqx1npiz.mirror.aliyuncs.com"],
   "registry-mirror": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ],
  "insecure-registries": [
    "192.168.36.138:5000"
  ]

}

再次上传即可

[root@node01 sysconfig]# docker push 192.168.36.138:5000/eureka:base
查看 http://192.168.36.13:5000/v2/eureka/tags/list
springBoot项目脚本启动
#!/bin/bash

APPNAME=fairy-images-1.0.jar
LOG_FILE=console.log

export JAVA_HOME
export JAVA="$JAVA_HOME/bin/java"

JAVA_OPT="${JAVA_OPT} -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./java-frontend.hprof 
-Dspring.logging.path=./logs 
-Dfile.encoding=UTF-8 
-Dserver.servlet.context-path=/fairy-images 
-Dserver.port=8081
-Dspring.datasource.type=com.alibaba.druid.pool.DruidDataSource
-Dspring.datasource.druid.username=root
-Dspring.datasource.druid.password=root
-Dspring.datasource.druid.url=jdbc:mysql://node01:33306/fairy?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
-Dspring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver"                                                                                                                                           
echo $JAVA $JAVA_OPT $APPNAME
$JAVA $JAVA_OPT -jar $APPNAME >$LOG_FILE 2>&1 &
sh start.sh
DockeFile带环境参数启动应用

Dockerfile文件

FROM openjdk:latest
MAINTAINER docker部署发布SpringBoot项目
LABEL name="fiary-image镜像" version="1.0" author="lulu"
COPY fairy-images-1.0.jar /data/fairy-images-1.0.jar
WORKDIR /data/java
ENV JAVA_OPTS  ""
ADD  start.sh /data/start.sh
RUN echo 'JAVA_OPTS=' $JAVA_OPTS
CMD sh /data/start.sh $JAVA_OPTS

启动脚本命令

#!/bin/bash
JAVA_OPTS=$*
echo '入参参数:' $JAVA_OPTS
java $JAVA_OPTS  -jar /data/fairy-images-1.0.jar

docker启动

 docker run --name fairy-images -d 
-e JAVA_OPTS="-Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./java-frontend.hprof 
-Dserver.port=8081" -p 8081:8081 fairy-images

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/842454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号