使用Portainer管理Docker(Portainer)
安装Portainer
使用下面的命令创建portainer的容器
docker run -tid --name portainer -h portainer --net eth2 --ip 10.16.1.88 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -p 9000:9000 portainer/portainer
配置成功后就可以通过9000端口访问portainer服务了!
使用下面的命令创建支持ssl的portainer的容器
docker run -tid --name portainer -h portainer --net eth2 --ip 10.16.1.88 -v ~/local-certs:/certs -v portainer_data:/data -p 443:9000 --ssl --sslcert /certs/portainer.crt --sslkey /certs/portainer.key portainer/portainer
这是portainer官方提供的方法,借助 --ssl、--sslcert、--sslkey 参数实现。
但是笔者找遍了百度、谷歌,就是没有发现docker支持这两个参数,放弃!!!
通过Nginx发布Portainer
首先,默认情况下portainer是不支持ssl的,这无疑是一大隐患,这么重要的操作如果被黑客控制了,直接删除容器,我们就玩完了~~
其次,几遍真有仁兄找到了 --ssl 的方式配起了支持SSL的环境,其实也不是非常的安全。
我们可以通过nginx服务将portainer发布出去,这样可以设置必须包含特殊主机头才可以访问,这样就安全多了~~
下面是nginx配置portainer的方法,证书自己做一个即可,我们只要ssl协议。
nginx配置portainer的信息
upstream portainer { server 10.16.1.88:9000; } server { listen 443; server_name portainer; if ($host !~ ^portainer$ ) { return 403; } ssl on; ssl_certificate portainer.crt; ssl_certificate_key portainer.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://portainer/; proxy_set_header Host $host; proxy_set_header X-Real-Ip $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
自制ssl证书
openssl genrsa -out portainer.key 2048 openssl ecparam -genkey -name secp384r1 -out portainer.key openssl req -new -x509 -sha256 -key portainer.key -out portainer.crt -days 3650
好了,现在已经配置好了,重启nginx即可!
初始化Portainer
打开浏览器,输入网址 http://【宿主机IP地址】:9000/ 访问Portainer,如果是ssl方式配置的网址则是 https://【宿主机IP地址】/,如果使用了主机头限制则把【宿主机IP地址】换成特定的主机头即可。
输入管理密码
选择本地Docker环境
查看容器列表
经过初始化之后,我们就可以通过Web界面管理Docker了
这是容器列表
远程容器终端
点击容器actions里的 >_ 按钮就可以开启远程终端操作了
这里直接点 Connect 按钮
这样就可以连到容器的终端了,利用的是H5的SSH功能