zoukankan      html  css  js  c++  java
  • Docker开启远程访问、IDEA Docker 连接 linux 上的 Docker

    前提条件:Docker开启远程访问

    修改Docker服务文件:

    vi /lib/systemd/system/docker.service

    将文件内的ExecStart注释,添加如下代码:

    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

    重新加载配置文件、重启Docker服务

    systemctl daemon-reload
    systemctl restart docker

    查看端口号(若指令无法使用,执行yum install net-tools)

    netstat -nplt |grep 2375

    安装插件(最新版IDEA已经内置Docker插件)

    1. Docker插件,首先需要在你的IDEA中安装Docker插件,定位到File-Setting-Plugins后搜索Docker Integration安装

    2. 配置Docker服务器,在IDEA中定位到File-Setting-build,Execution,Deployment-Docker

    运行 idea 项目到 远程 linux docker 上

    1、编写 Dockerfile 文件

    FROM jdk1.8:v1.0_271
    EXPOSE 9000
    WORKDIR /usr/local/data/myProject
    VOLUME /usr/local/data
    ADD shop.jar /usr/local/data/myProject
    ENTRYPOINT ["java","-jar","/usr/local/data/myProject/shop.jar"]
    ENV LANG en_US.UTF-8
    ENV LANGUAGE en_US:UTF-8
    ENV LC_ALL en_US.UTF-8

    其中,jdk1.8:v1.0_271为自定义镜像。

    2、添加 maven 依赖

     1 <build>
     2     <finalName>${project.artifactId}</finalName>
     3     <plugins>
     4         <plugin>
     5             <groupId>org.springframework.boot</groupId>
     6             <artifactId>spring-boot-maven-plugin</artifactId>
     7         </plugin>
     8 
     9         <!--使用docker-maven-plugin插件-->
    10         <plugin>
    11             <groupId>com.spotify</groupId>
    12             <artifactId>docker-maven-plugin</artifactId>
    13             <version>1.0.0</version>
    14 
    15             <!--将插件绑定在某个phase执行-->
    16             <executions>
    17                 <execution>
    18                     <id>build-image</id>
    19                     <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
    20                     <phase>package</phase>
    21                     <goals>
    22                         <goal>build</goal>
    23                     </goals>
    24                 </execution>
    25             </executions>
    26 
    27             <configuration>
    28                 <!--指定生成的镜像名-->
    29                 <imageName>zhangjianbin1991/${project.artifactId}</imageName>
    30                 <!--指定标签-->
    31                 <imageTags>
    32                     <imageTag>latest</imageTag>
    33                 </imageTags>
    34                 <!-- 指定 Dockerfile 路径-->
    35                 <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
    36                 
    37                  <!--指定远程 docker api地址-->
    38                 <dockerHost>http://192.168.75.132:2375</dockerHost>
    39 
    40                 <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
    41                 <resources>
    42                     <resource>
    43                         <targetPath>/</targetPath>
    44                         <!--jar 包所在的路径  此处配置的 即对应 target 目录-->
    45                         <directory>${project.build.directory}</directory>
    46                         <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
    47                         <include>${project.build.finalName}.jar</include>
    48                     </resource>
    49                 </resources>
    50             </configuration>
    51         </plugin>
    52     </plugins>
    53 </build>

    此处,小编使用版本号+时间戳作为镜像tag

        <build>
            <!--${build.time} 错误提示不影响-->
            <!--<finalName>shop-v1.0.0_${build.time}</finalName>-->
            <finalName>${project.artifactId}</finalName>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <includeSystemScope>true</includeSystemScope>
                        <fork>true</fork>
                    </configuration>
                </plugin>
                <!-- 跳过单元测试 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <skipTests>true</skipTests>
                    </configuration>
                </plugin>
    
                <!--打包时间-->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.10</version>
                    <executions>
                        <execution>
                            <id>timestamp-property</id>
                            <goals>
                                <goal>timestamp-property</goal>
                            </goals>
                            <configuration>
                                <name>build.time</name>
                                <pattern>yyyyMMddHHmmss</pattern>
                                <locale>zh_CN</locale>
                                <timeZone>Asia/Shanghai</timeZone>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
                <!--使用docker-maven-plugin插件-->
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>1.0.0</version>
    
                    <!--将插件绑定在某个phase执行-->
                    <executions>
                        <execution>
                            <id>build-image</id>
                            <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
                            <phase>package</phase>
                            <goals>
                                <goal>build</goal>
                            </goals>
                        </execution>
                    </executions>
    
                    <configuration>
                        <!--指定生成的镜像名-->
                        <imageName>shop/${project.artifactId}</imageName>
                        <!--指定标签-->
                        <imageTags>
                            <imageTag>v1.0.0_${build.time}</imageTag>
                        </imageTags>
                        <!-- 指定 Dockerfile 路径-->
                        <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
    
                        <!--指定远程 docker api地址-->
                        <dockerHost>http://192.168.56.11:2375</dockerHost>
    
                        <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                        <resources>
                            <resource>
                                <targetPath>/</targetPath>
                                <!--jar 包所在的路径  此处配置的 即对应 target 目录-->
                                <directory>${project.build.directory}</directory>
                                <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
                                <include>${project.build.finalName}.jar</include>
                            </resource>
                        </resources>
                    </configuration>
                </plugin>
            </plugins>
    
            <!--打包时开启,排除yml-->
            <!--<resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <excludes>
                        <exclude>**/application.properties</exclude>
                        <exclude>**/application.yml</exclude>
                    </excludes>
                </resource>
            </resources>-->
    
        </build>

    3、mvn 打包

     打包容器,启动容器前,完成端口映射

    参考:https://www.cnblogs.com/zhangjianbin/p/9277229.html

  • 相关阅读:
    Linux-线程同步(day14续)
    Linux之线程(day14)
    Linux-网络编程-UDP网络编程(day13续2)
    ES6 模块加载
    let与var声明区别
    vue 常用指令v-if v-else v-show v-for
    动态路由的意义,以及路由重定向
    前端路由的理解
    socpe 与 包的引入
    VUE 组件注册(全局、局部)
  • 原文地址:https://www.cnblogs.com/116970u/p/14156909.html
Copyright © 2011-2022 走看看