遇到的问题记录
- 在rancher里添加主机时,由于在系统设置里面设置主机注册地址时使用了域名而不是ip,导致执行rancher提供的添加主机脚本命令报错(Failed to load registration env from CATTLE_URL=XXX, ENV_URL=)。原因:
在您需要使用外部DNS服务(类似 Bind9 这类)或者通过程序来控制DNS记录的时候,如果所需的IP不是主机IP的话,那就要在运行
rancher/agent
时增加标签io.rancher.host.external_dns_ip=<IP_TO_BE_USED_FOR_EXTERNAL_DNS>
。切记,当要某个容器服务要使用外部DNS服务时,一定要增加这个标签。
2.为什么不使用docker部署jenkins,考虑到jenkins容器里需要调用宿主机的docker守护进程,涉及到权限问题,为避免问题,直接在主机上部署成服务。(??)
3.在使用dockerfile-maven-plugin插件的时候,想不需要在开发的windows电脑上安装docker,考虑通过tcp协议调用远程主机暴露的dockerd端口,但是又涉及到安全问题(??)。远程主机通过修改/lib/systemd/system/docker.service,暴露外部可访问的端口。
安全问题解决:用tls协议保证只有发送了客户端证书的客户端才能访问远程主机暴露的docker2376端口。在windows电脑上需要配置环境变量如下:
DOCKER_HOST: 远程主机tcp端口
DOCKER_TLS_VERIFY:是否使用tls 1为启用
DOCKER_CERT_PATH: 自定义证书存放位置
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock
4.docker client 在linux上默认连接到unix:///var/run/docker.sock,在Windows上默认连接到tcp://127.0.0.1:2376,可以通过修改环境变量DOCKER_HOST自定义客户端连接。
5.使用dockerfile-maven-plugin插件deploy时报错,unauthorized: authentication required。按照官方文档的验证方法,使用了直接在pom里面指定username和password、或者在setting.xml里指定username和password,都有问题。(使用的远程dockerd的主机有问题,重装系统还是没解决,连接到另外的主机的dockerd进程解决。。)
6.在dockerd -H fd://中,fd://的作用是告诉docker,该服务将会被systemd(负责管理守护进程、工具和库的集合)启动,systemd会创建目标socket并传给dockerd进程使用。# what does fd:// mean exactly in dockerd -H fd://。