Intellij Idea 远程连接docker及使用

前提条件及环境

1、虚拟机 CentOS7.6
2、已安装docker
3、虚拟机与宿主机已做网络桥接

idea安装docker插件

开启docker Remote API

连接到虚拟机,执行命令

vi /usr/lib/systemd/system/docker.service

修改框选部分:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock(centos7以下版本好像只要ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 未测试)

重新加载和启动docker:

systemctl daemon-reload
systemctl restart docker

关闭虚拟机防火墙或者放开2375端口:

firewall-cmd --zone=public --add-port=2375/tcp --permanent #开放2375端口

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

浏览器查看镜像验证 http://虚拟机IP:2375/images/json

idea 连接docker

idea中 File - settings 搜索docker,将docker连接信息填入应用即可

使用docker打包镜像

1、创建项目并在项目下创建Dockerfile

示例【openjdk:8-jre-alpine是已经pull下来的JDK镜像包】:
FROM openjdk:8-jre-alpine
ARG JAR_FILE
COPY ${JAR_FILE} /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

2、修改pom.xml文件

示例:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/>
    </parent>
    <groupId>com.keli.demo</groupId>
    <artifactId>plugintest</artifactId>
    <version>1.0.0</version>
    <name>plugintest</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <!--docker镜像打包-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <repository>registry.cn-beijing.aliyuncs.com/library/${project.artifactId}</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
            <!--打包跳过单元测试-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M3</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>        

3、编译打包
命令方式:mvn clean package

界面操作

4、查看验证

docker run -itd --name plugintest -p 8080:8080 registry.cn-beijing.aliyuncs.com/library/plugintest:1.0.0

idea增加docker配置【扩展】

1、选择Edit Configurations...

2、配置中选择Dockerfile项

3、配置定义

4、运行验证

常见问题

错误1:
Caused by: com.spotify.docker.client.shaded.org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect

解决方案:
在开发环境中配置环境变量【计算机 - 属性 - 高级系统设置】
系统变量中增加如下配置【可能需要重启电脑】

变量名:DOCKER_HOST 
变量值:tcp://192.168.75.129:2375 【就是前面配置的docker服务的Engine API URL】
错误2:
Caused by: java.io.IOException: entry '.mvn/wrapper/maven-wrapper.jar' closed at '58727' before the '62823' bytes specified in the header were written

解决方案:
将项目下的.mvn文件夹删除
posted @ 2022-11-30 10:37  #码农9527#  阅读(1947)  评论(0)    收藏  举报