首页 > 技术文章 > idea秘钥集成docker

nfwys 2021-04-02 09:38 原文

docker开启远程访问

1.修改docker配置,让其可远程操作:
$ vim /lib/systemd/system/docker.service

将文件内的 ExecStart注释。 新增如下行。
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
  1. 重新加载文件: systemctl daemon-reload

  2. 重启: systemctl restart docker.service

  3. 本地检验是否生效:curl http://127.0.0.1:2375/info 如图
    image

  4. 浏览器访问地址:http://ip:2375/version
    如步骤4上图已经生效,浏览器时却显示链接超时:检查云服务器是否配置安全组及防火墙。

防火墙开启2375端口: firewall-cmd --zone=public --add-port=2375/tcp --permanent
更新防火墙配置: firewall-cmd --reload

以上便开启了docker远程访问,但是对于生成环境,这样配置任何人都可以链接,一点安全性不存在,所以需要操作下一步安全远程访问

docker安全远程访问

以下 www.bai.com 所有全部替换成你的云服务器。其他照着命令一一输入即可生成。

服务端

  1. 创建CA私钥和CA公钥
    1.1 首先创建一个ca文件夹用来存放私钥跟公钥
    mkdir -p /usr/local/ca
    cd /usr/local/ca
    1.2 然后在Docker守护程序的主机上,生成CA私钥和公钥ca-key.pem:
    openssl genrsa -aes256 -out ca-key.pem 4096
    输入密码

  2. 生成私钥证书信息ca.pem
    openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
    依次输入:访问密码、国家、省、市、组织名称、单位名称、名字、邮箱等

  3. 生成服务器私钥server-key.pem
    openssl genrsa -out server-key.pem 4096

  4. 用CA签署server私钥,生成server.csr
    允许使用 www.baidu.com 进行连接:
    openssl req -subj "/CN=www.baidu.com" -sha256 -new -key server-key.pem -out server.csr

  5. 匹配白名单,生成extfile.cnf
    echo subjectAltName = DNS:$HOST,IP:XX.XX.XX.XX,IP:XX.XX.XX.XX >> extfile.cnf
    注意:DNS:$HOST 替换成域名网址,IP:$HOST替换为自己的ip地址。配置0.0.0.0,允许所有的ip可以链接。
    echo subjectAltName = DNS:www.bai.com,IP:0.0.0.0 >> extfile.cnf

  6. 将Docker守护程序密钥的扩展使用属性设置为仅用于服务器身份验证:

echo extendedKeyUsage = serverAuth >> extfile.cnf

  1. CA证书生成服务器签名证书server-cert.pem

openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
-CAcreateserial -out server-cert.pem -extfile extfile.cnf

执行后需要输入上方设置的密码

客户端

1.生成客户端私钥key.pem
openssl genrsa -out key.pem 4096
2. 证书签名请求client-csr
openssl req -subj '/CN=client' -new -key key.pem -out client.csr

3.使秘钥适合客户端身份验证,创建扩展配置文件:
echo extendedKeyUsage = clientAuth >> extfile.cnf

echo extendedKeyUsage = clientAuth > extfile-client.cnf

4.CA证书生成生成客户端签名
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \
-CAcreateserial -out cert.pem -extfile extfile-client.cnf
5.删除不需要的文件
生成后cert.pem,server-cert.pem您可以安全地删除两个证书签名请求和扩展配置文件:
rm -v client.csr server.csr extfile.cnf extfile-client.cnf

修改权限

  1. 修改秘钥文件为只读
    chmod -v 0400 ca-key.pem key.pem server-key.pem
  2. 修改证书文件为只读
    chmod -v 0444 ca.pem server-cert.pem cert.pem

修改docker配置

1.文件copy到docker文件下
cp server-*.pem /etc/docker/

cp ca.pem /etc/docker/

2.修改配置文件
vim /lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/usr/local/ca/ca.pem --tlscert=/usr/local/ca/server-cert.pem --tlskey=/usr/local/ca/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

3.重新加载daemon并重启docker

systemctl daemon-reload

systemctl restart docker
4.从目录 /usr/local/ca 下找出ca-key.pem ca.pem cert.pem key.pem 4个文件

IDEA集成docker部署项目

1. 新建DockerFile,配置启动服务

新建DockerFile 文件,一般放在项目根目录下,输入以下配置。

# jdk版本
FROM java:8
#FROM openjdk:8u201-jdk-alpine3.9

#作者
MAINTAINER BolingCavalry <zq2599@gmail.com>

#系统编码
#ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

#声明一个挂载点,容器内此路径会对应宿主机的某个文件夹
VOLUME /tmp


#应用构建成功后的jar文件被复制到镜像内,名字也改成了app.jar
ADD target/sysadmin.jar app.jar

#启动容器时的进程
ENTRYPOINT ["java","-jar","/app.jar"]

#暴露8080端口
EXPOSE 8080

2. Docker 连接配置

image

3. IDEA新建启动

image
Maven 命令:clean package -U -DskipTests

这里要注意image args镜像名称配置要与DockerFile文件中
ADD target/sysadmin.jar app.jar 相对应

参考地址:
https://www.jb51.net/article/190412.htm
https://cloud.tencent.com/developer/article/1494921

推荐阅读