最近在学jenkins的时候,发现涉及到了docker的远程发布调用。后续应该还要自己搭建一个docker的本地仓库。
简单描述一下具体是如何实现的:
1、将docker的服务器开启2375端口(注意,这里的开启是将端口直接暴露出去,不用登录也可以通过这个端口操作docker,所以我就踩了这个坑,把我的阿里云服务器整死了,别人使用这个端口上传一个docker镜像,然后运行它,用过镜像挂在到宿主机,然后操控宿主机运行挖矿程序)
当时忘记截图服务器的情况了,看了这个阿里云记录,你们就懂了:
后面完全登录不上服务器,我只好用阿里云的控制台强制关闭服务器了。
回归正题,我们先开启2375这个端口,然后在搞几个ac证书,判断操作人。
开启端口需要修改docker的配置,然后刷新监听服务,重启docker:
将
-H tcp://0.0.0.0:2375
添加至:/lib/systemd/system/docker.service
让后刷新监听线程、重启docker:
systemctl daemon-reload systemctl restart docker
记得开启防火墙端口哦。
使用idea远程连接docker:
执行前的maven打包指令:
clean package -U -DskipTests
docker服务器开启2375后,这里就可以直接用服务器账号密码连接:
最麻烦的是maven打包为docker镜像:
maven配置:
<build> <finalName>app</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> 打包插件版本,我刚开始没指定,默认使用了高版本,结果高版本的打包插件使用的jdk17,就报错了 <version>2.7.0</version> <configuration> springboot启动类路径 <mainClass>com.quxiao.QueryCheckApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
dockerfile:
# 基础镜像 FROM openjdk:8-jre ## 设置输出格式 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 # 设定时区 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone #设置容器工作目录 VOLUME /tmp WORKDIR /opt/tyjt # 将宿主机中的文件复制到docker容器中app.jar ADD target/app.jar /opt/tyjt/app.jar ENTRYPOINT ["java", "-jar","/opt/tyjt/app.jar"] # 声明容器提供服务端口 EXPOSE 8001
然后运行就好了: