Portainer是一個輕量級的Docker環境管理UI,能夠管理docker host和docker swarm(我主要看中了能管理swarm這個,畢竟市面上能管理swarm的平臺很少)。之因此說是輕量級的,是由於部署只有一個container,也可使用二進制程序直接部署,不像rancher的部署,部署了一大堆container,並且portainer是跨平臺的,windows和linux均可以部署,廢話很少說,直接開幹....html
ubuntu16.04-1 | swarm manager | portainer |
ubuntu16.04-2 | swarm works | portainer agent |
ubuntu16.04-3 | swarm works | portainer agent |
ps:環境仍是以前文章的swarm集羣環境node
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /path/on/host/data:/data portainer/portainer
ps:portainer的數據存儲在容器內部的/data目錄,這樣容器重啓的時候數據會丟失,因此要確保數據持久化linux
docker run -d -p 9000:9000 --name portainer --restart always -v portainer_data:/data portainer/portainer -H tcp://<REMOTE_HOST>:<REMOTE_PORT>
ps:-H 後面的remote是你想用portainert管理的dockernginx
curl -L https://portainer.io/download/portainer-agent-stack.yml -o portainer-agent-stack.yml
docker stack deploy --compose-file=portainer-agent-stack.yml portainer
docker service create \
--name portainer \
--publish 9000:9000 \
--replicas=1 \
--constraint 'node.role == manager' \ --mount type=bind,src=//path/on/host/data,dst=/data \ portainer/portainer
wget https://github.com/portainer/portainer/releases/download/1.19.2/portainer-1.19.2-linux-amd64.tar.gz
tar xvpfz portainer-1.19.2-linux-amd64.tar.gz
cd /opt/portainer ./portainer --template-file "${PWD}/templates.json"
ps:模板文件的內容下面會詳細解釋git
[
{
"type": 1, "title": "Registry", "description": "Docker image registry", "categories": ["docker"], "platform": "linux", "logo": "https://portainer.io/images/logos/registry.png", "image": "registry:latest", "ports": [ "5000/tcp" ], "volumes": [{ "container": "/var/lib/registry"}] }, ]
http://172.31.68.241:9000/
以前說過portainer能夠以二進制程序直接部署,也能夠在啓動容器的時候直接在CLI設置參數,來修改portainer的默認行爲,可以使用的參數主要有以下:github
--help 幫助 --version 查看版本信息 -p, --bind=":9000" 指定portainer監聽的地址和端口 -a, --assets="./" Path to the assets -d, --data="/data" 指定data數據目錄 -H, --host=HOST Endpoint URL --external-endpoints=EXTERNAL-ENDPOINTS 定義外部的endpoints --no-auth 禁止portainer的認證 --no-analytics Disable Analytics in app --tlsverify TLS support --tlsskipverify Disable TLS server verification --tlscacert="/certs/ca.pem" Path to the CA --tlscert="/certs/cert.pem" Path to the TLS certificate file --tlskey="/certs/key.pem" Path to the TLS key --ssl Secure Portainer instance using SSL --sslcert="/certs/portainer.crt" Path to the SSL certificate used to secure the Portainer instance --sslkey="/certs/portainer.key" Path to the SSL key used to secure the Portainer instance --sync-interval="60s" Duration between each synchronization via the external endpoints source --snapshot Start a background job to create endpoint snapshots --snapshot-interval="5m" Duration between each endpoint snapshot job --admin-password=ADMIN-PASSWORD 指定admin的password,是加密事後的,能夠由htpasswd產生 --admin-password-file=ADMIN-PASSWORD-FILE 若是怕泄密,能夠把密碼寫在一個文件中,這個裏面是原始密碼 -l, --hide-label=HIDE-LABEL ... 隱藏具備某些標籤的容器,-l能夠屢次使用 --logo=LOGO 使用你本身的logo -t, --templates=TEMPLATES 或者直接指定一個url --template-file="/templates.json" 使用你本身的模板文件,默認的莫辦文件位置在/templates.json
ps:關於admin密碼,有的同窗以爲cli和文件都不保險,則能夠把密碼設置在docker的secret中,以下:web
$ echo -n mypassword | docker secret create portainer-pass - $ docker service create \ --name portainer \ --secret portainer-pass \ --publish 9000:9000 \ --replicas=1 \ --constraint 'node.role == manager' \ --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \ portainer/portainer \ --admin-password-file '/run/secrets/portainer-pass' \ -H unix:///var/run/docker.sock
portainer中能夠自定義一些模板,而後在portainer中建立容器的時候使用這些模塊快速的建立,模板是json格式的,包含一些必選項和可選項。docker
{
"type": 1, "title": "Nginx", "description": "High performance web server", "logo": "https://cloudinovasi.id/assets/img/logos/nginx.png", "image": "nginx:latest", "ports": [ "8080:80/tcp", "443/tcp" ] }
type 必選項,1表示container,2表示swarm stack,3表示compose stack title 必選項 description 必選項 image 必選項,該應用使用的docker鏡像 administrator_only 可選項,是否只有管理員可用模板 name 可選項,該模板在管理界面中顯示的名稱 log 可選項,自定義的logo registry 可選項,docker鏡像的倉庫,默認是Dockerhub command 可選項,容器裏面運行的命令,若是沒有指定,則默認運行dockerfile的command network 可選項,模板使用的網絡 volumes 可選項,模板使用的volume ports 可選項,模板exposed的端口 labels 可選項,模板上定義的labels privileged 可選項,容器是否能在超級權限啓動 interactive 可選項,容器啓動時是不是交互模式,即添加-i -t restart_policy 可選項,容器的重啓策略 hostname 可選項,容器的主機名 note 可選項,關於模板的信息 platform 可選項,支持的平臺,通常是linux或者windows categories 可選項,模板的類別,能夠在UI上經過category來過濾
{
"type": 2, "title": "CockroachDB", "description": "CockroachDB cluster", "note": "Deploys an insecure CockroachDB cluster, please refer to <a href=\"https://www.cockroachlabs.com/docs/stable/orchestrate-cockroachdb-with-docker-swarm.html\" target=\"_blank\">CockroachDB documentation</a> for production deployments.", "categories": ["database"], "platform": "linux", "logo": "https://cloudinovasi.id/assets/img/logos/cockroachdb.png", "repository": { "url": "https://github.com/portainer/templates", "stackfile": "stacks/cockroachdb/docker-stack.yml" } }
type 必選項,1表示container,2表示swarm stack,3表示compose stack title 必選項 description 必選項 registry 可選項,docker鏡像的倉庫,默認是Dockerhub administrator_only 可選項,是否只有管理員可用模板 name 可選項,該模板在管理界面中顯示的名稱 logo 可選項,自定義的logo env 可選項,定義模板的變量 note 可選項,關於模板的信息 platform 可選項,支持的平臺,通常是linux或者windows categories 可選項,模板的類別,能夠在UI上經過category來過濾