乐趣区

关于云计算:Docker可视化工具Portainer全解

Docker 可视化工具——Portainer 全解

明天,小九给大家举荐一个好用的 docker 可视化界面~

Portainer 是一个可视化的 Docker 操作界面,提供状态显示面板、利用模板疾速部署、容器镜像网络数据卷的基本操作(包含上传下载镜像,创立容器等操作)、事件日志显示、容器控制台操作、Swarm 集群和服务等集中管理和操作、登录用户治理和管制等性能。性能非常全面,根本能满足中小型单位对容器治理的全副需要。

上面,小九将从登录、部署,再到实际,全方位地介绍 Portainer。

登录 Portainer

如果你部署了蕴含 Portainer 的 Docker 环境,请间接登录应用。否则,请先装置 Portainer:

# 通过命令装置 Portainer

docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
cd /usr/libexec/docker/
sudo ln -s docker-runc-current docker-runc
  1. 通过本地浏览器拜访:http:// 服务器公网 IP:9000,间接进入 Portainer 界面
  2. 设置管理员账号密码,点击【Create user】
  3. 抉择【Local】作为镜像连贯选项,而后点击【Connect】
  4. 进入 Portainer 后盾治理界面,点击 Local 我的项目就能够开始应用 Portainer

部署 MySQL 容器

上面具体介绍通过 Portainer 部署 MySQL:

  1. 登录 Portainer,关上【Containers】>【Add container】
  2. 设置容器运行所需的参数(上面示图并形容重点设置局部)

    • Name 为自定义的容器名称
    • Image 为容器镜像名称,例如 ”mysql:5.6″ 零碎会主动到 DockerHub (opens new window)中拉取 MySQL5.6
    • Network ports configuration:倡议开启【Publish all exposed network ports…】以保障容器中的服务能够通过服务器端口被外界拜访。如果不开启,需手工建设精确的映射关系 ( 难度系数有点高)。
    • Env 环境变量设置:增加如所示的容器环境变量,对于 MySQL 镜像来说,数据库 root 明码MySQL_ROOT_PASSWORD 为必填变量,其余更多可选变量查看 MySQL 镜像阐明
    • Restart policy:倡议抉择【Always】,使得容器无论在什么状况下进行总会主动重新启动;
  3. 点击 Deploy the container 创立容器;
  4. 如果服务器平安组的 3306 端口曾经凋谢,当初就能够在本地通过近程连贯 MySQL 数据库

    MySQL8 近程拜访测试失败,报错:Authentication plugin caching_sha_password cannot be loaded…

部署 WordPress 容器

上面具体介绍通过 Portainer 部署 WordPress 以及应用上一步的 MySQL 作为数据存储:

  1. 登录 Portainer,关上【Containers】>【Add container】
  2. 设置容器运行所需的参数(上面示图并形容重点设置局部)

    • Name 为自定义的容器名称
    • Image 为容器镜像名称,例如 ”wordpress” 零碎会主动到 [DockerHub] 中拉取 WordPress
    • Network ports configuration:倡议开启【Publish all exposed network ports…】以保障容器中的服务能够主动匹配服务器端口被外界拜访。如果不开启,需手工建设精确的映射关系 ( 难度系数有点高)。
    • Restart policy:倡议抉择【Always】,使得容器无论在什么状况下进行总会主动重新启动;
  3. 点击 Deploy the container 创立容器,创立胜利后查看映射的服务器端口号;
  4. 本地浏览器拜访:http:// 服务器公网 IP:端口 即可拜访 WordPress 的初始化装置界面
  5. 此处如果你打算应用 MySQL 容器,数据库主机地址填写的是 服务器公网 IP: 端口
  6. 数据库验证通过后,零碎提醒正式“进行装置”

进阶实战:Nginx 容器实现端口转发

以上一章节中的 WordPress 网站作为示例,在 WordPress 部署实现后,须要在浏览器内输出 http:// 公网 IP 地址:端口 的模式拜访网站,但咱们不加端口就能拜访域名,所以这时就要用到 Nginx 的端口转发性能。

要实现这个需要,有三个部署:部署 Nginx 容器,部署 FileBrowser 容器,

部署 Nginx 容器

上面具体介绍通过 Portainer 部署 Nginx:

  1. 登录 Portainer,关上【Containers】>【Add container】
  2. 依照下图创立 Nginx 容器;
  3. 回到容器列表,点击刚刚创立的 Nginx 容器,可进入到容器详情页,往下可看到 volueme 信息,记录下 /etc/nginx 目录 对应的 volume 的值。

部署 FileBrowser 容器

  1. 进入到 Portainer 页面,抉择右边的 App Templates 选项,往下找到 File browser 容器模板,单击抉择;
  2. 依照下图创立 File browser 容器;
  3. 进入到容器列表,单击刚刚创立的 File browser 容器,点击 Duplicate/Edit 按钮,进入到批改容器信息页面;
  4. 依照下图,将 File browser 的 volume 值批改为 和 Nginx 的 volume 值雷同;

设置 Nginx 配置文件实现端口转发

  1. 关上第二步中创立的 File Browser 网站([公网 ip: 端口]),账号密码为 admin/admin,登录到 File Browser;
  2. 进入

conf.d

目录,双击

default.conf

文件,将原来的配置删除,批改为如下图所示内容:

upstream wordpress {server 159.138.6.145:32773;}

server {
    listen 80;
    server_name  test.example.top; #绑定域名

    location / {
    proxy_pass http://wordpress;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Via "nginx";
    }
}

[danger] 留神:请将 server_name 改为本人的域名,proxy_pass 改为本人网站容器的 IP: 端口号

  1. 到容器列表重启 Nginx 容器,当初就能够在浏览器地址栏输出域名间接拜访本人的网站了。

批改完 Nginx 的配置文件后,File Browser 容器可抉择持续保留应用或删除。

进阶实战:Portainer 设置 HTTPS

  1. 参考 装置 File Browser 容器章节新建 File Browser 容器;

    留神设置 File Browser 的 volume。

  2. 在浏览器关上 File Browser,新建一个名为 cert 文件夹,将证书上传至 cert;

3. 批改 Nginx 的配置文件, 留神将 IP 和域名改成本人的服务器 IP 和域名;

upstream portainer {server 159.138.6.145:9000;}

server {
    listen 80;
    listen 443 ssl;
    server_name  test.websoft9.top;

    ssl_certificate /etc/nginx/cert/cert-1540972394298_test.websoft9.top.crt;
    ssl_certificate_key /etc/nginx/cert/cert-1540972394298_test.websoft9.top.key;

    location / {
    proxy_pass http://portainer;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Via "nginx";
    }
}

[warning] 如果证书门路和图中不同,请将图中证书门路改为本人的证书所在门路,并将证书名改为本人的证书名。

  1. 在容器列表中重启 Nginx 容器使配置失效,就能够在浏览器内应用 https:// 域名 拜访 Portainer 了。
  2. 如果想要达到拜访 http 主动跳转到 https 的成果,请将配置改成如下所示:

     upstream portainer {server 159.138.6.145:9000;}
    
     server {
         listen 80;
         listen 443 ssl;
         server_name  test.websoft9.top;
    
     ssl_certificate /etc/nginx/cert/cert-1540972394298_test.websoft9.top.crt;
     ssl_certificate_key /etc/nginx/cert/cert-1540972394298_test.websoft9.top.key;
     
     if ($scheme != "https") {return 301 https://$host$request_uri;}
    
     location / {
     proxy_pass http://portainer;
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header Via "nginx";
     }
     }

技巧

Portainer 运行容器外部命令

在此以连贯到 MySQL 容器为例进行阐明:

  1. 返回到容器列表,点击下图中 MySQL 的 Quick actions 一栏下的 >_ 图标;
  2. 在新关上的页面,点击 Connetc 按钮,连贯到容器;
  3. 接下来就能够在命令窗口中输出mysql -uroot -ppassword;", 其中“password”为您在本人设置的数据库明码,这样就能够开始应用数据库命令对 MySQL 进行治理了;

Portainer 备份

到 Portainer 的容器列表外面查看 portainer 的 volume 对应的服务器目录,在 /var/lib/docker/volumes 下可找到 volume 对应的目录名,将其备份即可。

Portainer 降级

只需运行 docker pull portainer就能够将 Portainer 降级到最新版本。

Portaniner 绑定域名

域名绑定可在 [配置 Nginx 实现端口转发]章节中将 server_name 改成本人的域名即可。

常见问题

不晓得容器镜像所需的端口怎么办?

倡议开启【Publish all exposed network ports…】以保障容器中的服务能够主动匹配服务器端口被外界拜访。如果不开启,需自行到 [DockerHub] 网站查看端口。

容器的端口与服务器的端口有什么区别?

容器端口须要通过服务器端口做映射,才能够被互联网用户拜访。

本文由 Websoft9 原创公布,转载请注明出处。

退出移动版