同福

使用Portainer管理Docker服务器

使用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地址】换成特定的主机头即可。

输入管理密码

1.jpg

选择本地Docker环境

2.jpg

查看容器列表

经过初始化之后,我们就可以通过Web界面管理Docker了


3.jpg

这是容器列表

4.jpg
5.jpg

远程容器终端

点击容器actions里的 >_ 按钮就可以开启远程终端操作了


这里直接点 Connect 按钮

这样就可以连到容器的终端了,利用的是H5的SSH功能