springboot docker应用发布


springboot docker应用发布

                      

idea docker 官网:https://www.jetbrains.com/help/idea/docker.html

说明:idea docker插件默认已经安装(file ==> settings ==> plugins)

             

                     

                  

 ************************

docker 远程连接

                                     

2375:非认证端口,不安全

2376:认证端口,需使用ca证书

                        

制作 ca 证书:https://docs.docker.com/engine/security/protect-access/

country=cn
state=zj
city=hz
orginazation=ali
department=dev
host=******
[email protected]

openssl genrsa -aes256 -passout pass:123456 -out ca-key.pem 4096
openssl req -new -x509 -passin "pass:123456" -days 365 -key ca-key.pem -sha256 -out ca.pem -subj "/C=$country/ST=$state/L=$city/O=$orginazation/OU=$department/CN=$host/emailAddress=$emailAddress"

openssl genrsa -out server-key.pem 4096
openssl req -subj "/CN=$host" -sha256 -new -key server-key.pem -out server.csr

echo subjectAltName = IP:$host,IP:0.0.0.0 >> extfile.cnf
echo extendedKeyUsage = serverAuth >> extfile.cnf
openssl x509 -req -days 365 -sha256 -passin pass:123456 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf

openssl genrsa -out key.pem 4096
openssl req -subj '/CN=client' -new -key key.pem -out client.csr

echo extendedKeyUsage = clientAuth > extfile-client.cnf
openssl x509 -req -days 365 -sha256 -passin pass:123456 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf

rm -rf client.csr server.csr extfile.cnf extfile-client.cnf ca.srl
chmod 400 ca-key.pem  server-cert.pem server-key.pem
chmod 444 ca.pem key.pem cert.pem

                                

查看生成的证书

[root@centos ca]# pwd
/usr/docker/ca
[root@centos ca]# ls
ca-key.pem  ca.pem  cert.pem  key.pem  server-cert.pem  server-key.pem

                          

修改docker配置

vim /usr/lib/systemd/system/docker.service

修改ExecStart
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd \
--tlsverify --tlscacert=/usr/docker/ca/ca.pem \
--tlscert=/usr/docker/ca/server-cert.pem \
--tlskey=/usr/docker/ca/server-key.pem \
-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock \
-H fd:// --containerd=/run/containerd/containerd.sock 

保存退出

加载配置、重启docker
systemctl daemon-reload
systemctl restart docker

                       

查看2376端口是否开启

[root@centos ~]# netstat -tunlp | grep 2376
tcp6       0      0 :::2376                 :::*                    LISTEN      7659/dockerd        

-t:tcp连接
-u:udp连接
-n:显示ip(numberic)
-l:listen状态的连接
-p:占用端口的应用程序

                    

防火墙开放 2376端口

firewall-cmd  --zone=public --add-port=2376/tcp --permanent
#firewall-cmd  --zone=public --remove-port=2376/tcp --permanent
firewall-cmd --zone=public --query-port=2376/tcp

#修改后,重载防火墙配置
firewall-cmd --reload

                  

证书文件导出到本地:sz ca.pem cert.pem key.pem

                    

                  

idea 连接docker:file ==> settings ==> docker

             

idea 成功连接宿主机docker后台程序

                                    

idea 查看宿主机上docker容器、镜像

                                          

                              

************************

使用测试

                

**************

controller 层

                   

HelloController

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello(){
        return "hello";
    }
}

                         

**************

相关操作

                      

maven 项目打包

                    

                     

编写Dockerfile文件(与target同目录级别)

from java:16
workdir /work
add target/demo.jar /usr/local/app.jar
expose 8080
cmd ["java","-jar","/usr/local/app.jar"]

                          

创建镜像、运行容器:run ==> edit configuration ==> docker ==> dockerfile

       

点击run、运行创建docker程序

                           

docker运行日志

Deploying 'hello-docker Dockerfile: Dockerfile'...

# 创建镜像
Building image...
Preparing build context archive...
[==================================================>]101/101 files
Done

Sending build context to Docker daemon...
[==================================================>] 15.64MB
Done

Step 1/5 : from java:16
 ---> 13ac866391d0
Step 2/5 : workdir /work
 ---> Using cache
 ---> 540b97750f8b
Step 3/5 : add target/demo.jar /usr/local/app.jar
 ---> Using cache
 ---> e34ee23b0f97
Step 4/5 : expose 8080
 ---> Using cache
 ---> 021f6d7f936f
Step 5/5 : cmd ["java","-jar","/usr/local/app.jar"]
 ---> Using cache
 ---> 36d611f6c923

Successfully built 36d611f6c923
Successfully tagged lihu12344/hello-docker:latest


# 创建容器
Creating container...
Container Id: 4d2ea999dfaaad8f2ea2ef89520c1084e36176a8f417ba519b239a8059aead17
Container name: 'hello-docker'
Starting container 'hello-docker'
'hello-docker Dockerfile: Dockerfile' has been deployed successfully.

此时,访问宿主机ip:8080/hello,输出hello

                        

右击容器对象:查看日志、进入容器对象、删除容器等操作

       

                          

右击镜像:查看镜像、删除镜像、推送镜像等操作

       

                                                            

                                                                 

猜你喜欢

转载自blog.csdn.net/weixin_43931625/article/details/119982459