====== Docker flusher ====== 新版flusher使用JAVA编写,需要JAVA 21环境。 镜像加速: ``` mkdir -p /etc/docker ``` ``` cat <<-EOF > /etc/docker/daemon.json { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.imgdb.de", "https://docker-0.unsee.tech", "https://docker.hlmirror.com" ] } EOF systemctl daemon-reload systemctl restart docker ``` ===== 安装Docker ===== https://developer.aliyun.com/article/1369203 ``` # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新并安装Docker-CE sudo yum makecache fast sudo yum -y install docker-ce # Step 4: 开启Docker服务 sudo service docker start systemctl enable docker ``` ===== 安装portainer ===== 1、创建一个名为portainer_data​的数据卷 ``` docker volume create portainer_data ``` 2、安装portainer ``` docker run -d \ -p 9000:9000 \ -p 9443:9443 \ --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest ``` ===== 参考文档 ===== https://www.cnblogs.com/ejiyuan/p/18114574 https://blog.csdn.net/weixin_46799707/article/details/137877881 - Dockerfile # 使用 Alpine Linux 作为基础镜像 FROM alpine:latest # 设置语言环境变量为中文 ENV LANG=zh_CN.UTF-8 # 安装所需的软件包,包括中文字体和中文语言支持 RUN apk add --no-cache \ ttf-dejavu \ fontconfig \ tzdata \ openjdk21 \ && \ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ echo "Asia/Shanghai" > /etc/timezone # 设置 JAVA_HOME 环境变量 ENV JAVA_HOME=/usr/lib/jvm/default-jvm - 构建镜像 ``` docker build -t ejiyuan/openjdk:21-jdk-alpine . ``` 得到了一个基于alpine包含jdk21的docker镜像,下面就可以使用了 - 使用 ``` FROM ejiyuan/openjdk:21-jdk-alpine VOLUME /data ADD maven/oa-0.0.1-SNAPSHOT.war app.war RUN sh -c 'touch /app.war' ENV JAVA_OPTS="" ENV spring.profiles.active="prod" ENTRYPOINT ["java","-jar","/app.war"] ``` ===== 制作镜像 ===== 制作flusher镜像,基础镜像:ejiyuan/openjdk:21-jdk-alpine ``` FROM ejiyuan/openjdk:21-jdk-alpine VOLUME /data ADD demo.jar app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENV spring.profiles.active="prod" ENTRYPOINT ["java","-jar","/app.jar"] ``` ``` docker build -t yan/flusher:x86_64-v1 . ``` 运行: ``` docker run -d --name=flusher -p:8080:8080 --restart=on-failure:1 yan/flusher:x86_64-v1 ``` 查看web: ``` http://192.168.142.143:8080/templates/index ``` ===== 保存镜像 ===== https://blog.csdn.net/qq_41204464/article/details/122034637 作用:在现在容器镜像上保存镜像进行打包,在另一台服务上使用;或现有的容器安装了一些库,配置了开发环境,需要保存下载,下次加载后直接使用。 **一、docker保存镜像** 1.1 首先查看下现有容器镜像(目的是查询需要保存镜像的ID) ``` docker ps -a ``` 1.2 接下来用commit参数进行保存镜像(精简版) ``` docker commit 7ca736d99653 yolov5:v6.2 ``` 其中,7ca736d99653 是需要保存镜像的ID,刚才用docker ps -a 查询到的。 yolov5:v6.2 是需要保存镜像的REPOSITORY、和TAG,这两个自由设定的。(yolov5 对应REPOSITORY、v6.2对应TAG;两者用:分割开。) 或者用commit参数进行保存镜像, -a 提交人的姓名 -m “提交内容”,格式如:docker commit -a -m 现有容器ID 保存后的名称:版本号(详细版) ``` docker commit -a "xiaoming" -m "Update target detection model" 7ca736d99653 yolov5:v6.2 ``` 1.3 查看镜像是否保存成功 ``` docker images ``` 能看到刚才保存的镜像yolov5:v6.2出现了,说明成功了。 **二、打包tar** 使用save参数进行打包,格式如:docker save -o tar文件名称 镜像REPOSITORY:TAG ``` docker save -o yolov5-v6.2.tar yolov5:v6.2 ``` 其中yolov5:v6.2 是需要保存镜像的REPOSITORY、和TAG;也是上面保存的镜像名称。 **三、加载tar镜像** 使用load进行从tar文件导出镜像 ``` docker load -i yolov5-v6.2.tar ``` 然后查看是否出现镜像 ``` docker images ``` ===== 更新镜像 ===== 进入正在运行的镜像: ``` docker exec -it 48f5bbd75f17 /bin/ash ``` 更新应用程序: ``` wget http://flush.ax-cloud.cn/demo-0.0.1.jar ```