-----------------docker仓库-----------------
#下载Registry的Docker镜像
docker pull registry:2
#启动Registry镜像
docker run -p 5000:5000 --name registry2 --restart=always -e REGISTRY_STORAGE_DELETE_ENABLED="true" -d registry:2
-----------------docker ui-----------------
#下载docker-registry-ui的Docker镜像
docker pull joxit/docker-registry-ui:static
#启动docker-registry-ui镜像
docker run -p 8280:80 --name registry-ui --link registry2:registry2 -e REGISTRY_URL="http://registry2:5000" -e DELETE_IMAGES="true" -e REGISTRY_TITLE="Registry2" -d joxit/docker-registry-ui:static
这些启动完毕之后需要开通防火墙端口
linux:
# 开启8280端口
firewall-cmd --zone=public --add-port=8280/tcp --permanent
firewall-cmd --zone=public --add-port=5000/tcp --permanent
# 重启防火墙才能生效
systemctl restart firewalld
# 查看已经开放的端口
firewall-cmd --list-ports
win10开通端口:
docker开启远程连接访问
linux版dacker:
1、编辑docker.service文件
vim /usr/lib/systemd/system/docker.service
进入编辑模式
2、修改的内容如下,修改完毕保存
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
3、使修改的docker文件生效
systemctl daemon-reload
4、重启docker
systemctl restart docker
window版docker:
步骤一:在电脑左下角找到docker图标,单击图标
鼠标右键选择settings。 将General菜单下的Expose daemon on tcp://localhost:2375 without TLS勾选。
步骤三:创建springboot项目,这段省略
步骤四:项目创建完成之后会有pom文件,在pom文件添加如下代码
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--添加配置跳过测试-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<!--添加配置跳过测试-->
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.33.0</version>
<executions>
<!--如果想在项目打包时构建镜像添加-->
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- Docker 远程管理地址 这里我用windows本地的docker 所以ip用的localhost-->
<dockerHost>http://localhost:2375</dockerHost>
<!-- Docker 推送镜像仓库地址 -->
<pushRegistry>http://localhost:5000</pushRegistry>
<images>
<image>
<!--由于推送到私有镜像仓库,镜像名需要添加仓库地址-->
<name>localhost:5000/template${project.name}:${project.version}</name>
<!--定义镜像构建行为-->
<build>
<!--定义基础镜像-->
<from>java:8</from>
<args>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</args>
<!--定义哪些文件拷贝到容器中-->
<assembly>
<!--定义拷贝到容器的目录-->
<targetDir>/</targetDir>
<!--只拷贝生成的jar包-->
<descriptorRef>artifact</descriptorRef>
</assembly>
<!--定义容器启动命令-->
<entryPoint>["java", "-jar","/${project.build.finalName}.jar"]</entryPoint>
<!--定义维护者-->
<maintainer>jiang</maintainer>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
步骤五:操作idea的maven窗口如图所示:
步骤六:打包,镜像构建、推送镜像
打包指令:mvn clean package
镜像构建:mvn package docker:build
推送镜像文件:mvn docker:push
执行完成就可以在docker中查询到打包的镜像文件
需要注意地方:我的项目是用maven管理子项目的,父工程下面会有很多的子工程,执行指令的时候需要选择打包的项目,如图所示
步骤七:启动打包的镜像文件即可
<!--定义容器启动行为-->
<run>
<!--设置容器名,可采用通配符-->
<containerNamePattern>${project.artifactId}</containerNamePattern>
<!--设置端口映射-->
<ports>
<port>8080:8080</port>
</ports>
<!--设置容器间连接-->
<links>
<link>mysql:db</link>
</links>
<!--设置容器和宿主机目录挂载-->
<volumes>
<bind>
<volume>/etc/localtime:/etc/localtime</volume>
<volume>/mydata/app/${project.artifactId}/logs:/var/logs</volume>
</bind>
</volumes>
</run>
启动指令:mvn docker:start
步骤六和步骤七,项目打包,镜像构建,镜像推送,运行指令:
mvn clean package docker:build docker:push docker:start