一、修改配置文件,打開2375端口
[root@microservice ~]# vim /usr/lib/systemd/system/docker.service 在ExecStart=/usr/bin/dockerd 后面加上-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 重新加載配置文件和啟動: systemctl daemon-reload systemctl start docker
二、idea安裝docker插件(Docker integration)並配置

插件安裝完成重啟idea后可以看到底部多了個docker標志

三、編寫DockerFile(放在根目錄下)
#使用jdk8作為基礎鏡像 FROM java:8 #指定作者 MAINTAINER gaox #暴露容器的8088端口 EXPOSE 8089 #將復制指定的xxl-job-admin-2.1.0.jar為容器中的job.jar,相當於拷貝到容器中取了個別名 ADD target/xxl-job-admin-2.1.0.jar /job.jar #創建一個新的容器並在新的容器中運行命令 RUN bash -c 'touch /job.jar' #設置時區 ENV TZ=PRC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone #相當於在容器中用cmd命令執行jar包 指定外部配置文件 ENTRYPOINT ["java","-jar","/job.jar","--spring.config.location=/usr/local/project/docker/xxl-job/config/application.yml"]

方法一:不配置maven,創建鏡像的同時啟動鏡像


命令解釋:
-
Image tag : 指定鏡像名稱和tag
-
Bind ports : 綁定宿主機端口到容器內部端口。格式為[宿主機端口]:[容器內部端口]
-
Bind mounts : 將宿主機目錄掛到到容器內部目錄中。
格式為[宿主機目錄]:[容器內部目錄]。這個springboot項目會將日志打印在容器 /usr/local/project/docker/xxl-job-admin 目錄下,將宿主機目錄掛載到容器內部目錄后,那么日志就會持久化容器外部的宿主機目錄中。
方法二:配置maven,打包即創建鏡像,然后手動添加容器
<!--使用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>gaox/${project.artifactId}</imageName>
<!--指定標簽,也就是版本號,可以自定義-->
<imageTags>
<imageTag>v1.5</imageTag>
</imageTags>
<!-- 指定 Dockerfile 路徑-->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!--指定遠程 docker api地址 也就是服務器ip+docker的端口號-->
<dockerHost>http://192.168.56.104: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>

如圖所示配置好容器名稱,綁定端口號,點擊apply,然后點擊run,就能正常啟動鏡像的容器了


