Zerotier搭建

1.搭建Zerotier根服务器

docker run –restart=on-failure:3 -d –name ztncui -e HTTP_PORT=4000 -e HTTP_ALL_INTERFACES=yes -e ZTNCUI_PASSWD=admin@123 -p 4000:4000 keynetworks/ztncui

2.搭建Moon服务器

创建一个持久化存放文件的目录

mkdir -p /opt/docker/moon

获得云服务器的公网ip

public_ip=curl ip.sb

建立moon服务器

docker run –name zerotier-moon -d -p 9993:9993 -p 9993:9993/udp -v /data/docker/docker_data/moon:/var/lib/zerotier-one jonnyan404/zerotier-moon -4 162.14.109.28
docker run –name zerotier-moon -d –restart always -p 9993:9993/udp -v /data/docker/docker_data/moon:/var/lib/zerotier-one seedgou/zerotier-moon -4 162.14.109.28
记录一下moon id,后面加入会用到。
docker logs -f zerotier-moon
76f892c608

3.创建网络

a、使用我们云服务器http://ip:4000访问,ip为云服务器的公网ip,打开配置页
b、点击右上角的login登录
c、使用默认用户名和密码登录: admin/admin@123,登录完成后根据提示修改密码
d、设置完成后,切换到Add network选项卡,任意为网络起一个名字
点击Create Network
这样我们的网络就设置好了,请记录创建好的网络id
回到上一级页面,最后在network上,设置网段,可以点击自动生成,然后提交

88a9b85b371ed699

4.搭建客户端

linux
docker run -d –device=/dev/net/tun –name zerotier-one –net=host –restart=always –cap-add=NET_ADMIN –cap-add=SYS_ADMIN -v /var/lib/zerotier-one:/var/lib/zerotier-one bltavares/zerotier:latest
加入zerotier网络
docker exec zerotier-one zerotier-cli join [网络ID]
最后再加入moon服务器,同样的需要把moon_ID的值修改为自建moon服务器的id
#加入moon服务器
docker exec zerotier-one zerotier-cli orbit [moon_ID] [moon_ID]
#确认是否加入
docker exec zerotier-one zerotier-cli listpeers

windows
官网下载
https://www.zerotier.com/download/
安装很简单,下一步即可。完成后,在开始菜单中可以找到安装的ZeroTier软件,右下角会多出图标,打开面板。把之前记下的网络填入下方,点击Join Network。

客户端上,状态显示成功时,表示搭建成功

cd C:\Program Files (x86)\ZeroTier\One
zerotier-cli orbit [moon_id] [moon_id]

zerotier-cli listpeers

nginx服务器

docker run -itd –restart=always –name=xxxx -v /home/nginxWebUI:/home/nginxWebUI -e BOOT_OPTIONS=”–server.port=8081” –privileged=true –net=host cym1102/nginxwebui:latest /bin/bash

//linux
docker run -d –name nginx -p 80:80 -p 443:443 -v /data/docker/docker-container/nginx/conf:/etc/nginx -v /data/docker/docker-container/nginx/html:/usr/share/nginx/html -v /data/docker/docker-container/nginx/logs:/var/log/nginx v /etc/localtime``:``/etc/localtime``:ro nginx

docker run -d –restart=always –name nginx -p 80:80 -p 443:443 -v /work/docker/docker_volume/nginx/conf:/etc/nginx -v /work/docker/docker_volume/nginx/html:/usr/share/nginx/html -v /work/docker/docker_volume/nginx/logs:/var/log/nginx -v /etc/localtime``:``/etc/localtime``:ro nginx
docker rm -f nginx
docker run -d –restart=always –name nginx -p 80:80 -p 443:443 -v /data/docker/docker_volume/nginx/conf:/etc/nginx -v /data/docker/docker_volume/nginx/html:/usr/share/nginx/html -v /data/docker/docker_volume/nginx/logs:/var/log/nginx -v /data/java/portalManage/uploadPath/upload:/data/java/portalManage/uploadPath/upload -v /etc/localtime``:``/etc/localtime``:ro nginx

docker run -d –name nginx -p 80:80 -p 443:443 -v /data/docker/docker_volume/nginx/conf:/etc/nginx -v /data/docker/docker_volume/nginx/html:/usr/share/nginx/html -v /data/docker/docker_volume/nginx/logs:/var/log/nginx -v /etc/localtime``:``/etc/localtime``:ro nginx

docker run -d –restart=always –name nginx -p 80:80 -p 443:443 -v /data/nginx/conf:/etc/nginx -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/logs:/var/log/nginx -v /data/java/portalManage/uploadPath/upload:/data/java/portalManage/uploadPath/upload -v /etc/localtime``:``/etc/localtime``:ro nginx

//windows
docker run –name nginx-netty -d -p 11010:80 -p 11011:11011 -p 11012:11012  -v D:/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v D:/data/nginx/logs:/var/log/nginx -v D:/data/nginx/html:/usr/local/nginx/html -d docker.io/nginx

sh /data/jenkins/shell/start-driving-rest-test.sh

1
docker run -d --name nginx -p 80:80 -p 443:443 -p 8113:8113 -v /data/nginx/conf:/etc/nginx -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/logs:/var/log/nginx nginx

docker run -d –name nginx -p 8181:443 -v /datatwo/docker/docker-container/nginx/conf:/etc/nginx -v /datatwo/docker/docker-container/nginx/html:/usr/share/nginx/html -v /datatwo/docker/docker-container/nginx/logs:/var/log/nginx -v /etc/localtime``:``/etc/localtime``:ro nginx

docker run -d –name nginx -p 8181:443 -p 8019:8019 -p 443:443 -p 80:80 -v /datatwo/docker/docker-container/nginx/conf:/etc/nginx -v /datatwo/docker/docker-container/nginx/html:/usr/share/nginx/html -v /datatwo/docker/docker-container/nginx/logs:/var/log/nginx -v /etc/localtime``:``/etc/localtime``:ro nginx

docker run -d –restart=always –name nginx -p 80:80 -p 443:443 -v /work/docker/docker_volume/nginx/conf:/etc/nginx -v /work/docker/docker_volume/nginx/html:/usr/share/nginx/html -v /work/docker/docker_volume/nginx/logs:/var/log/nginx -v /etc/localtime``:``/etc/localtime``:ro nginx

docker run -d –restart=always –name nginx -p 80:80 -p 443:443 -v /work/docker/nginx/conf:/etc/nginx -v /work/docker/nginx/html:/usr/share/nginx/html -v /work/docker/nginx/logs:/var/log/nginx -v /etc/localtime``:``/etc/localtime``:ro nginx

docker exec -it nginx bash
/usr/local/nginx/sbin/nginx -参数
-c :使用指定的配置文件而不是 conf 目录下的 nginx.conf 。
nginx -t:测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否有语法错误。
nginx -s reload 重载
nginx -s stop 停止

docker run -d –restart=always –name nginx –net=host -v /data/docker/docker_data/nginx/conf:/etc/nginx -v /data/docker/docker_data/nginx/html:/usr/share/nginx/html -v /data/docker/docker_data/nginx/logs:/var/log/nginx -v /etc/localtime``:``/etc/localtime``:ro nginx

nexus maven私库

1、拉取镜像
docker pull sonatype/nexus3
2、创建数据映射地址
mkdir -p /data/docker/docker_volume/nexus-data
chmod 777 /data/docker/docker_volume/nexus-data
3、安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## 编写启动脚本docker-nexus3-start.sh
docker rm -f docker-nexus3 || true
##arm64版本
docker run --name docker-nexus3 -p 8081:8081 -p 8082:8082 -p 8083:8083 -v /data/docker/docker_volume/nexus-data:/nexus-data -v /etc/localtime:/etc/localtime:ro --restart=always -d klo2k/nexus3

docker run --name docker-nexus3 -p 8081:8081 -v /home/docker/docker_volume/nexus-data:/nexus-data --restart=always -d sonatype/nexus3

## 参数说明
--name nexus #启动该容器的名字,可以自己更改为自己想要的名字
-p 8081:8081 #端口映射,将本地8081端口映射为容器的8081端口,第一个8081可以改成自己想要放开的端口
-v /docker/nexus/nexus-data:/nexus-data # 将容器的/nexus-data地址 代理到 本地/docker/nexus/nexus-data文件夹下
--restart=always #在重启docker时,自动重启改容器。
-d sonatype/nexus3 #即为后台运行一直sonatype/nexus3






docker远程连接 证书版本

(1)首先创建一个ca文件夹用来存放私钥跟公钥
mkdir -p /root/local/ca
cd /root/local/ca
(2)生成CA私钥和公钥
要输密码,示例使用 test
openssl genrsa -aes256 -out ca-key.pem 4096
e99wiD0HwMfCHBuW
(3)补全CA证书信息
可以随便输,示例都用 test
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
(4)生成server-key.pem
openssl genrsa -out server-key.pem 4096
(5)用CA签署公钥
192.168.1.102 改为实际ip
openssl req -subj “/CN=192.168.1.102” -sha256 -new -key server-key.pem -out server.csr
(6)匹配白名单,允许指定的ip可以连接到服务器中的docker,多个ip用逗号分隔。
192.168.1.102 改为实际ip
这里跟原文有点不一样,多写一个 IP:服务器地址 ,不然最后连接会报错。(想来应该是DNS:得改成IP:,毕竟用的不是dns)
echo subjectAltName = DNS:192.168.1.102,IP:192.168.1.102,IP:0.0.0.0 >> extfile.cnf
(7)将Docker守护程序密钥的扩展使用属性设置为仅用于服务器身份验证
echo extendedKeyUsage = serverAuth >> extfile.cnf
(8)生成签名整数
要输密码,示例为 test
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
(9)生成客户端的key.pem
openssl genrsa -out key.pem 4096
openssl req -subj ‘/CN=client’ -new -key key.pem -out client.csr
(10)要使秘钥适合客户端身份验证
echo extendedKeyUsage = clientAuth >> extfile.cnf
echo extendedKeyUsage = clientAuth > extfile-client.cnf
(11)生成签名整数
要输密码,示例为 test
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf
(12)删除不需要的文件,两个整数签名请求
rm -f -v client.csr server.csr extfile.cnf extfile-client.cnf
(13)限制文件权限
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
(14)归集服务器证书
cp server-*.pem /work/docker/cert/docker
cp ca.pem /work/docker/cert/docker
(15)修改Docker配置, 使Docker守护程序仅接收来自提供CA信任的证书的客户端的链接
vim /lib/systemd/system/docker.service
/usr/bin/dockerd 后面的部分:
–tlsverify –tlscacert=/work/docker/cert/docker/ca.pem –tlscert=/work/docker/cert/docker/server-cert.pem –tlskey=/work/docker/cert/docker/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

systemctl daemon-reload
systemctl restart docker