使用Portainer部署Docker容器实践

发布时间:2023-05-19 09:11:24

一、背景

最近使用rancher2.5.5部署Redis主从复制时,发现Rancher会产生很多iptables规则,导致Redis主从复制功能在部署Rancher的机器上无法使用,因为我对Rancher和K8s的理解仅限于网络架构和使用,对底层没有深入的了解。这种网络冲突问题短期内无法解决;

所以我用protainer代替rancher管理docker的模式。这个portainer比较轻,在施工过程中花了几个小时学习。现在我们来谈谈整个过程,尽量给大家一些参考。

二、操作步骤
  1. 安装Portiner
  2. 管理节点
  3. 部署容器
三、安装Portiner

安装Portiner的方法有很多,但我总是喜欢用最简单的方法来完成我需要做的事情,所以我会用docker来构建它。

3.1 部署docker

部署docker的方法非常简单,只需执行简单的操作容器命令,如下所示。

docker run -d \-p 9000:9000 \-p 8000:8000 \--restart always \-v /var/run/docker.sock:/var/run/docker.sock \-v /opt/docker/portainer-ce/data:/data \--name portainer-ce portainer/portainer-ce

命令反映了物理机器的8000端口和9000端口到容器中的8000端口和9000端口,并反映了宿主机的docker通信文件/var/run/docker.sock此外,为了持续部署,目录也映射到容器中。/opt/docker/portainer-ce/data映射到容器中/data命令执行完成后,返回结果信息如下图所示

使用Portainer部署Docker容器实践_初始化

从上图可以看出,docker容器已经成功运行。接下来,我需要验证服务是否正常运行。使用浏览器访问URLhttp://127.0.0.1:9000/地址,结果如下所示

使用Portainer部署Docker容器实践_k8s_02

Portainer系统可以在上图中访问, 说明系统安装成功。

3.2 节点初始化

现在我需要设置管理员的帐户密码。在这里,在我简单地填写密码并确认密码后,单击Create user按钮可以创建管理员账户。

管理员账户设置完成后,需要初始化,如下图所示

使用Portainer部署Docker容器实践_docker_03

 

上图中有三个选项,我选择使用Portainer管理本地docker程序,点击Connect初始化操作可以通过按钮完成。

3.3 功能初探

初始化操作完成后,即可进入Portainer的工作界面,如下图所示

使用Portainer部署Docker容器实践_添加节点_04

在上图中,我们可以看到Portainer系统中已经有了一个local我们可以点击本地节点进入节点管理,如下图所示

使用Portainer部署Docker容器实践_docker_05

Portainer系统可以在上图中列出local节点的 Stack、集装箱信息、镜像信息、磁盘信息、网络信息等,这里我随意点击Containers如下图所示,可以看到容器列表

四、管理节点

本地docker现在可以控制了,但我对此并不满意,我需要控制其他机器。

4.1 开始添加节点

Portainer系统中有一个endpoints菜单中可以添加多个节点,如下图所示

使用Portainer部署Docker容器实践_添加节点_07

从上图可以看出,已经有一个了local列表上方有一个节点Add endpoint按钮,点击按钮到添加节点的详细信息页面,如下图所示

使用Portainer部署Docker容器实践_添加节点_08

在上图中可以看到五个选项。在这里,我选择最简单的方法使用它们Docker API进行控制。

4.2 开放API控制

这种方法需要在节点的docker启动程序中添加参数,所以我需要先登录到节点服务器。ssh登录服务器的命令如下所示

ssh root@xxx.xxx.xxx.xxx

命令执行后,返回如下图所示

使用Portainer部署Docker容器实践_k8s_09

在上图中可以看到已经进入节点的服务器,然后需要编辑docker启动的配置文件,命令如下所示

vim /usr/lib/systemd/system/docker.service

执行命令后,可以在vim编辑界面上修改配置,如下图所示

使用Portainer部署Docker容器实践_添加节点_10

将远程访问代码添加到docker的启动命令行中,代码如下所示

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

复制代码 /usr/bin/dockerd程序后面如下图所示

使用Portainer部署Docker容器实践_k8s_11

在保存配置文件后,需要重启docker服务,重启docker的命令如下所示

systemctl daemon-reload  && systemctl restart docker

重启docker后,一切正常就完成了

4.3 验证端口状态

查看docker的配置信息,命令如下所示

docker info

命令执行后,返回的信息如下图所示

使用Portainer部署Docker容器实践_k8s_12

从上图可以看出,docker给出了warning的警告提示,告诉我打开远程访问会有安全风险,这里暂时忽略了,但这个提示确实打开了远程访问的功能

此外,可以通过打开端口来验证打开是否成功。命令如下所示

netstat -ntl

命令执行后,将返回当前主机的端口开放,如下图所示

使用Portainer部署Docker容器实践_k8s_13

 

可以在上图中看到2375端口已成功开启, 说明节点本身打开docker是可以的;

但是Portainer通过ip访问这个节点时,要考虑网络中的防火墙是否会屏蔽这个端口,这里可以使用nmap工具检测节点的端口是否可以访问。现在我回到Portainer系统的命令终端,用nmap工具检测。命令如下所示

nmap -p 2375 xxx.xxx.xxx.xxx

命令执行后,2375是否打开将返回。执行结果如下图所示

使用Portainer部署Docker容器实践_初始化_14

节点可以在上图中看到2375端口是打开的,可以连接。

4.4 添加节点完成

然后回到浏览器窗口,如下图所示

使用Portainer部署Docker容器实践_初始化_15

在上图所示的网页中,通过URL填写节点的IP地址和端口,然后单击Add endpodint按钮可以添加节点,添加成功会有相应的提示,如下图所示

使用Portainer部署Docker容器实践_k8s_16

如上图所示,Portainer系统提示添加节点已成功,节点列表可见此节点。

五、部署容器

添加节点完成后,我将在远程节点中部署我的容器;

5.1 部署单个容器

回到Portainer主页,在主页上可以看到刚刚添加的节点信息,如下图所示

使用Portainer部署Docker容器实践_初始化_17

在上图中选择刚刚添加的节点,然后进入容器菜单选项,您可以看到该节点的容器列表,如下图所示

使用Portainer部署Docker容器实践_添加节点_18

上图所示页面列表上方有一个Add container点击此按钮后,将调整到添加容器详细信息页面

使用Portainer部署Docker容器实践_添加节点_19

在上图所示的页面中,需要填写docker镜像地址。在这里,我随意选择了nginx镜像,并将主机的8888端口映射到容器的80端口。提交这些信息后,portainer系统会告诉您容器运行是否成功,如下图所示

使用Portainer部署Docker容器实践_docker_20

在上图中,我们可以看到容器已经成功运行,并跳转到容器列表中。接下来,我们可以访问该节点对应的8888端口,以验证该服务是否可用。打开浏览器,然后在地址栏中填写URLhttp://xxx.xxx.xxx.xxx:8888/,访问后返回的结果如下图所示

使用Portainer部署Docker容器实践_添加节点_21

可以在上图中看到nginx服务已成功运行;

5.2 部署 docker-compose

Portainer系统除了在容器列表页面上部署容器外,还支持使用docker-compose进行部署,在Portainer系统中称为stacks,在菜单栏中选择此项,可以输入docker-compose服务列表,如下图所示

使用Portainer部署Docker容器实践_docker_22

列表上方有一个Add stack点击此按钮添加按钮docker-compose服务,如下图所示

使用Portainer部署Docker容器实践_k8s_23

在上图所示的页面中,我将被要求填写docker-compose信息。在这里,我准备了Redis服务docker-compose配置代码如下所示

version: '3.5'services:  redis:    image: "redis:latest"    container_name: redis_test    command: redis-server    ports:      - "16379:16379"

填写页面后,提交Portainer的Portainer将部署在相应的节点docker-compose服务,如下图所示

使用Portainer部署Docker容器实践_k8s_24

部署成功后,您可以在stacks列表中看到刚刚部署的服务。您还可以点击列表中的服务名称,输入详细信息页面进行查看和修改,如下图所示

使用Portainer部署Docker容器实践_初始化_25

在上图中,您可以看到该服务的具体操作容器,也可以终止或删除该容器。

这篇文章也是对Portainer的初步探索,更详细的还需要你孜孜不倦的探索。

上一篇 docker安装clickhouse步骤
下一篇 安装cuda9.0对应版本cudnn

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题