1. Docker开启远程访问,注意端口不要用默认的,防止被攻击
[root@localhost ~]# vi /usr/lib/systemd/system/docker.service
修改
# 修改该行-注意端口不要用默认的 2375 # ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2370
开放端口:
#防火墙开放端口 [root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=2370/tcp [root@localhost ~]# firewall-cmd --reload
#重新加载配置文件 [root@localhost ~]# systemctl daemon-reload #重启服务 [root@localhost ~]# systemctl restart docker.service #查看端口是否开启 [root@localhost ~]# netstat -nlpt #直接curl看是否生效 [root@localhost ~]# curl http://127.0.0.1:2370/info
IntelliJ IDEA安装Docker插件
Spring Boot服务docker部署
<properties> <docker.image.prefix>vipsoft</docker.image.prefix> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- Docker maven plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.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> <!-- Docker maven plugin --> </plugins> </build>
创建 Dockerfile
# Docker image for SpringBoot file run # VERSION 0.0.1 # Author: Jimmy # 基础镜像使用java FROM java:8 # 作者 MAINTAINER Jimmy <Jimmy.Chen@thothcloud.com> # VOLUME 指定了临时文件目录为/tmp。 # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp VOLUME /tmp # 将jar包添加到容器中并更名为app.jar ADD target/vipsoft-demo-1.0.0.jar app.jar # 运行jar包 RUN bash -c 'touch /app.jar' #修改Docker时区-否则里面的时间会慢8小时 ENV TZ=Asia/Shanghai #通过文件链接的方式修改 时区 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENV SPRING_PROFILES_ACTIVE="" #这种写法不支持 Skywalking #ENTRYPOINT ["java","-Dspring.profiles.active=$SPRING_PROFILES_ACTIVE","-jar","app.jar"] ENTRYPOINT [ "sh", "-c", "java -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE -jar /app.jar" ] #放 linux 上编译 #docker build -t vipsoft-demo:1.0.0 . #docker run --name vipsoft-demo-9091 --restart always \ # -d -p 9091:9099 \ # -e SPRING_PROFILES_ACTIVE=dev \ # -v /opt/logs/vipsoft-demo/:/logs/ \ # vipsoft-demo:1.0.0 SPRING_PROFILES_ACTIVE=dev 不能写成 SPRING_PROFILES_ACTIVE="dev" 加了双引号,命令行可以运行,但IDEA集成时不能运行
创建docker镜像
Environment variables 参数的值不能带“”双引号
命令解释:
Image tag:指定镜像名称和tag,镜像名称为docker-demo,tag为1.1
Bind ports:绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口]
Bind mounts:将宿主机目录挂到到容器内部目录中。格式为[宿主机目录]:[容器内部目录]。这个Spring Boot项目会将日志打印在容器/home/developer/app/logs/目录下,将宿主机目录挂载到容器内部目录后,那么日志就会持久化容器外部的宿主机目录中。
Connect 后,可以查看容器的运行情况
ENTRYPOINT [ "sh", "-c", "java -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE -jar /app.jar" ]