一、Docker开启远程访问
[root@izwz9eftauv7x69f5jvi96z docker]# vim /usr/lib/systemd/system/docker.service
#修改ExecStart这行
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
#重新加载配置文件
[root@izwz9eftauv7x69f5jvi96z docker]# systemctl daemon-reload
#重启服务
[root@izwz9eftauv7x69f5jvi96z docker]# systemctl restart docker.service
#查看端口是否开启
[root@izwz9eftauv7x69f5jvi96z docker]# netstat -nlpt
#直接curl看是否生效
[root@izwz9eftauv7x69f5jvi96z docker]# curl http://127.0.0.1:2375/info
可能是版本问题。现在的/usr/lib/systemd/system/docker.service
比以前多了些内容,但依旧是把-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
添加到ExecStart
这行,如下:
二、IDEA默认已经安装了插件
三、启用Docker
配置ip
添加完成后可以看到自己的docker
四、Spring Boot服务docker部署
1、新建一个Spring Boot工程,在工程里写一个REST接口,如下,简单返回一个字符串。
@RestController
public class DockerController {
@GetMapping("/docker")
public String docker(){
return "Hello Docker";
2、修改pom文件,添加properties,添加plugin:(可以不需要)
- 很多文章都说需要添加
properties
,但经过自己测试,发现可以不需要添加,还是把它贴出来吧
<?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.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.scitc</groupId>
<artifactId>docker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>docker</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<!--分割线-->
<docker.image.prefix>docker-demo</docker.image.prefix>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--分割线-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory></dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!--分割线-->
</plugins>
</build>
</project>
- 配置Dockerfile文件:在工程根目录下新建Dockerfile文件,内容如下:
#指定基础镜像,在其上进行定制
FROM java:8
#维护者信息
MAINTAINER chy
#设置时区
RUN echo "Asia/Shanghai" > /etc/timezone
#添加上下文目录下的target/*.jar 到容器里 待会用maven打包后就会有文件了
ADD target/*.jar demo-1.0.0.jar
#声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8080
#指定容器启动程序及参数 <ENTRYPOINT> "<CMD>"
ENTRYPOINT ["java","-jar","demo-1.0.0.jar"]
- 添加配置
apply
—>ok
- 使用
Maven
打包项目 - 打包完成,这里我maven里面设置的
<finalName>docker</finalName>
运行我们的docker
此时,docker就多了我们的镜像和容器
6. 访问测试
六、推送到阿里云
https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
- 创建自己的镜像仓库
- 输入账号密码
- 查看信息
5. 推送
几乎来自于文章