使用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 目录。
http://192.168.36.139:5000/v2/

出现 {} 表示搭建成功

打标签:

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.36.138做相关设置,不使用https传输
将下面的代码放进去保存并退出。

 vi  /etc/docker/daemon.json
添加
"insecure-registries":["192.168.36.138: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"
  ]
多个配置, "192.168.36.138:5000","192.168.36.139: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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值