一、修改配置文件,打開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,就能正常啟動鏡像的容器了