docker创建镜像

1、编写DockerFile文件

内容:

    FROM openjdk:8u282-jdk

    WORKDIR /home/XXX/XXXApp

    ADD ./XXXApp/* /home/XXX/XXXApp/

    EXPOSE 8088

    CMD sh startup.sh

其中,

FROM镜像    指定新镜像所基于的镜像,第一条指令必须为FROM指令 ,
每创建一个镜像就需要一 条FROM指令。
MAINTAINER名字    说明新镜像的维护人信息
 
CMD[”要运行的程序",”参数1,
“参数2 "]    指令启动容器时要运行的命令或者脚本,Dockerfile只能有 -条CMD命令,如果指定多条则只能最后一条被执行
EXPOSE端口号    指定新镜像加载到Docker时要开启的端口
ENV环境变量变量值    设置一个环境变量的值,会被后面的RUN使用
ADD源文件/目录目标文件/目录    将源文件复制到目标文件,源文件要与Dockerfile位于相同 目录中,或者是一个URL
COPY源文件/目录目标文件/目录    将本地主机上的文件/目录复制到目标地点,源文件/目录要 与Dockerfile在相同的目录中
VOLUME[“目录"]    在容器中创建一个挂载点
USER用户名/UID    指定运行容器时的用户
WORKDIR路径    为后续的RUN、CMD、ENTRYPOINT指定工作目录
ONBUILD命令    指定所生成的镜像作为一个基础镜像时所要运行的命令
HEALTHCHECK    健康检查
RUN命令    在所基于的镜像上执行命令,并提交到新的镜像中

2、编写startup.sh文件内容

#!/bin/bash
workpath=/home/XXX/XXX
hostIp=X.X.X.X
Xms=4096m
Xmx=4096m
rootLogLevel=INFO
apiLogLevel=DEBUG
customConfigPath=./custom-config/
skywalkingPath=${workpath}/lib/skywalking-agent/skywalking-agent.jar

cd ${workpath}

java -Xms${Xms} -Xmx${Xmx} -XX:+HeapDumpOnOutOfMemoryError -Dcom.sun.management.jmxremote -Dskywalking.agent.service_name=XXX -Djava.rmi.server.hostname=${hostIp} -Dcom.sun.management.jmxremote.port=6687 -Dcom.sun.management.jmxremote.rmi.port=6687 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -javaagent:${skywalkingPath} -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5007 XXX.jar --spring.config.location=${customConfigPath} --XXX.log.level.root=${rootLogLevel} --XXX.log.level.api=${apiLogLevel}
 

3、编写compose-XXX.yml文件,内容:

# yaml 配置
version: '3'
services:
  XXX: #服务名称
    image: "xxx/XXX:1.0.0"
    container_name: "XXX"
    network_mode: "host"
    restart: always
    environment:
      - TZ=Asia/Shanghai
      - NACOS_SERVER=localhost:8848
      - NACOS_NAMESPACE=xxxx-xxxx-xxxx-xxxx-xxxx
      - ADMIN_SERVER_URL=http://xxxx:8060

    volumes:
      - "/home/docker/volumes/xxx/_data/startup.sh:/home/xxx/xxx/startup.sh"
      - "/home/docker/volumes/xxx/_data/custom-config:/home/xxx/xxx/custom-config"
      - "/home/docker/volumes/xxx/_data/lib/skywalking-agent:/home/xxx/xxx/lib/skywalking-agent"
      - "/home/docker/volumes/xxx/_data/node1/data:/home/xxx/xxx/data"
      - "/home/docker/volumes/xxx/_data/node1/logs:/home/xxx/xxx/logs"
      - "/home/docker/volumes/xxx/_data/node1/xxx.jar:/home/xxx/xxx/xxx.jar"
      - "/etc/localtime:/etc/localtime"
      - "/etc/timezone:/etc/timezone"
    logging:
      options:
        max-size: 500m
    privileged: true
 

4、编写install.sh文件,内容:

#!/bin/bash
echo "preparing for system envrionment ..."

image_home="./images"
image_service="xxx.tar.gz"
service_data="/home/docker/volumes/xxx/_data"

echo "Loading docker images ..."
docker load -i ${image_home}/${image_service}

echo "Creating volumes ..."
docker volume create xxx
echo "preparing for envrionment ..."

cp  conf/startup.sh ${service_data}/
cp -r conf/custom-config ${service_data}/
mkdir ${service_data}/node1
mkdir ${service_data}/node1/logs
mkdir ${service_data}/node1/data
mkdir -p  ${service_data}/lib/skywalking-agent
cp -r lib/skywalking-agent/* ${service_data}/lib/skywalking-agent/
cp xxx.jar ${service_data}/node1/


chmod 777 -R ${service_data}

echo "=============Starting containers...========== "

echo "=============creating all containers ...==================="
docker-compose -f compose-xxx.yml up -d gateway-xxx
 

5、编写uninstall.sh文件,内容:

#! /bin/bash

docker-compose -f compose-xxx.yml down

docker rmi xxx/xxx:1.0.0

docker volume rm xxx
 


创建镜像
    /home/XXX10/docker/Dockerfiles/XXX#
    docker build -t xxx/XXX:2.0.0 .
    docker save -o XXX.tar.gz xxx/XXX:2.0.0

   
 创建所用的文件
   /home/XXX10/docker/XXX#

 复制tar到XXX/images目录下,先到images目录下
   cp /home/XXX10/docker/Dockerfiles/XXX/XXX.tar.gz  ./

   
 赋值目录文件权限
   chmod 775 XXX/
   
  执行命令,创建容器
   ./install.sh*

修改代码后提交

1、 生成jar包
    双击maven --> clean  和 package

2、替换jar包
   /home/docker/volumes/xxx_data/_data/xxx#

3、修改权限
        chmod 777 xxx.jar
        chown root:root xxx.jar


4、重启docker 或者在docker管理界面重启
   docker ps -a    --查看各个服务容器id
   docker stop 1234426b6aa
   docker start 1234426b6aa

其中 1234426b6aa 为容器id

5、查看日志目录;
/home/docker/volumes/xxx/_data/node1/logs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值