强烈推荐的Docker可视化管理工具Portainer搭建

使用docker+pipline+jenkins部署spring cloud

Posted by 石福鹏 on 2020-03-18

很早就听说了Docker这门技术了,每次心血来潮都是立马安装到自己的电脑上,但是真的都没怎么用,真正的使用是从搭建一个spring cloud微服务开始的,由于线上要使用docker+pipline+jenkins实现,最开始本地只负责实现功能,但是要做部署的时候,发现各种不爽、不方便,况且服务器上还有其他的项目在跑,然后就真正意义上的开始了我的Docker之旅。后面有时间会把使用docker+pipline+jenkins部署spring cloud过程也分享出来

在本地使用Docker部署好环境,直接搬到线上,再不用担心环境不一致导致的各种问题。

一、Docker

Docker的安装和配置等这里不做太多赘述,推荐几个教程,绝对够用

另外,Docker从入门到实战这本书的电子版在github上也是有的,找不到的可以公众号下面回复docker即可获取【也可直接小程序上直接阅读】

二、部署Portainer

Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。

先来看几张图:

img

img

img

img

img

img

使用Docker部署Portainer

Portainer由两个元素组成,即Portainer服务器和Portainer代理。这两个元素都作为轻量级Docker容器在Docker引擎或Swarm集群中运行。由于Docker的性质,存在许多可能的部署方案,但是,我们在下面详细介绍了最常见的方案。请使用与您的配置匹配的方案(或者,如果未列出您的配置,请参见portainer.readthedocs.io以获取其他选项)。

请注意,使用Swarm时建议的部署模式是使用Portainer代理。


\1. 在独立的LINUX Docker主机 /单节点集群(或以“ Linux容器”模式运行的Windows 10 Docker主机)上部署Portainer Server 。

使用以下Docker命令部署Portainer服务器;请注意,在独立主机上不需要代理,但是如果使用代理,它会提供其他功能(请参阅下面的portainer和代理场景):

1
2
$ docker volume create portainer_data
$ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

然后浏览器访问http://localhost:9000/

注意:-v /var/run/docker.sock:/var/run/docker.sock选项只能在Linux环境中使用。

Mac os 系统下类似:

1
2
3
4
5
6
7
8
[StevendeMacBook-Pro:run Steven$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Unable to find image 'portainer/portainer:latest' locally
latest: Pulling from portainer/portainer
d1e017099d17: Pull complete
f4f2fd75fb8a: Pull complete
Digest: sha256:026381c60682b82a863f0c3737a9b4a414beaddd4cf050477a7749ff5ac61189
Status: Downloaded newer image for portainer/portainer:latest
90340b00e9b34d18f08d383da98aad85c677f0159df9bf9b3b900e40a74859eb

2.在独立的WINDOWS Docker主机(运行Windows容器)上部署Portainer Server –注意必须是Windows 1803或更高版本。

1
2
$ docker volume create portainer_data
$ docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart always -v \\.\pipe\docker_engine:\\.\pipe\docker_engine -v portainer_data:C:\data portainer/portainer

然后浏览器访问http://localhost:9000/

开始访问时需要注册个管理账号,然后选择local连接即可,也可以连接远程


下面的不是特别常用,至少对与我,可以学习下


3.使用Portainer服务器和Portainer代理管理LINUX Swarm集群

1
2
3
部署Portainer和Portainer Agent来管理Swarm集群很容易!您可以将Portainer作为服务直接部署在Docker集群中。请注意,此方法将自动部署Portainer Server的单个实例,并将Portainer Agent作为全局服务部署在群集中的每个节点上。
$ curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml
$ docker stack deploy --compose-file=portainer-agent-stack.yml portainer

然后浏览器访问http://localhost:9000/

4.使用Portainer服务器和Portainer代理管理WINDOWS Swarm群集

1
2
3
部署Portainer和Portainer Agent来管理Windows 2016(1803)或Windows 2019(10903)Swarm群集非常容易!您可以将Portainer作为服务直接部署在Docker集群中。请注意,此方法将自动部署Portainer Server的单个实例,并将Portainer Agent作为全局服务部署在群集中的每个节点上。
$ curl https://downloads.portainer.io/portainer_windows_stack.yml -o portainer_windows_stack.yml
$ docker stack deploy --compose-file=portainer_windows_stack.yml portainer

然后浏览器访问http://localhost:9000/

需要注意的是:再部署之前,应该在集群的Docker主机上公开所需要的网络端口

5.仅限Portainer代理部署

  • 在远程LINUX Swarm群集上将Portainer Agent部署为Swarm服务,在远程群集中的管理节点上运行此命令。
1
$ docker service create --name portainer_agent --network portainer_agent_network --publish mode=host,target=9001,published=9001 -e AGENT_CLUSTER_ADDR=tasks.portainer_agent --mode global --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock --mount type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes –-mount type=bind,src=/,dst=/host portainer/agent
  • 在独立的Windows Server 2016 Docker主机上部署Portainer代理\
1
$ docker run -d -p 9001:9001 --name portainer_agent --restart=always -v \\.\pipe\docker_engine:\\.\pipe\docker_engine portainer/agent
  • 在作为Swarm节点运行的SINGLE Windows Server 2016 Docker主机上部署Portainer代理(有关多节点部署,请参阅高级配置)
1
$ docker run -d -p 9001:9001 --name portainer_agent --restart=always -v \\.\pipe\docker_engine:\\.\pipe\docker_engine -e AGENT_CLUSTER_ADDR=tasks.agent portainer/agent

以上三个选项仅部署代理,您必须从现有的Portainer Server实例连接到代理。