docker 部署 portainer(http)

===============================================

2019/4/30_第6次修改                       ccb_warlock

 

更新说明:

2019/4/30:修改了local英文拼写错误的问题;

2019/4/16:修改了2.1创建目录不正确的问题;

2019/4/10:调整了docker、docker compose的部署方法的引用;

2019/4/6:优化了run、compose、stack的部署方式;

2018/8/3:删除2.1中无用的目录创建命令;

               对2.2.2中对容器的资源限制进行扩容;

===============================================

部署完swarm(http://www.cnblogs.com/straycats/p/8978135.html)之后,寻找可以管理swarm的web系统方便管理,经过使用portainer可以满足对swarm的基本管理,而且该项目github上的收藏也较多。

  


一、前提

 


二、部署portainer

2.1 创建目录

mkdir -p /opt/compose/portainer
mkdir -p /usr/docker-vol/portainer/data

 PS.由于方便持久化文件定位,这里使用目录映射而不是卷映射来做数据持久化

 

2.2 创建网络

# 本地用的network

docker network create \
  --driver=bridge \
  --subnet=172.11.0.0/16 \
  --ip-range=172.11.0.0/16 \
  --gateway=172.11.0.1 \
  --attachable \
  local-net

 

# swarm用的network

docker network create \
  --driver=overlay \
  --subnet=172.12.0.0/16 \
  --ip-range=172.12.0.0/16 \
  --gateway=172.12.0.1 \
  --attachable \
  swarm-net

  

2.3 创建portainer容器

2.3.1 run方式

# 创建容器portainer

docker run -d \
  --name portainer \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /usr/docker-vol/portainer/data:/data \
  -p 9000:9000 \
  --network local-net \
  --cpus 0.5 \
  --memory 200M \
  --restart on-failure \
  portainer/portainer

 

PS.如果需要移除该容器,可以使用命令

docker stop portainer
docker rm portainer

 

2.3.2 compose方式

# 编辑docker-compose.yml

vi /opt/compose/portainer/docker-compose.yml

将下面的内容添加到docker-compose.yml内,wq保存。

version: '3'
services:

  portainer:
    image: portainer/portainer
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/docker-vol/portainer/data:/data
    ports:
      - 9000:9000
    networks:
      - local-net

networks:
  local-net:
    external: true

 

# 创建容器portainer

cd /opt/compose/portainer
docker-compose up -d

 

PS.如果需要移除该compose文件创建的所有容器,可以使用命令

cd /opt/compose/portainer
docker-compose down

 

2.3.3 stack方式

# 编辑portainer-stack.yml

vi /opt/compose/portainer/portainer-stack.yml

将下面的内容添加到portainer-stack.yml内,wq保存。

version: '3.4'
services:

  portainer:
    image: portainer/portainer
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/docker-vol/portainer/data:/data
    deploy:
      placement:
        constraints: [node.role == manager]
      replicas: 1
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: "0.5"
          memory: 200M
      update_config:
        parallelism: 1
        delay: 5s
        monitor: 10s
        max_failure_ratio: 0.1
        order: start-first
    ports:
      - 9000:9000
    networks:
      - swarm-net

networks:
  swarm-net:
    external: true

 

# 创建portainer-stack

cd /opt/compose/portainer
docker stack deploy -c portainer-stack.yml portainer-stack

 

PS.如果需要移除该stack创建的所有service,可以使用命令

docker stack rm portainer-stack

 


三、配置portainer

3.1 访问页面

浏览器访问 https://192.168.12.11:9000

填写8位以上密码,创建管理员用户。进入系统后可以再修改8位以内的密码。(某个版本更新后改成了8位以上的要求,坑啊)

选择“Local”,点击“Connect”。

 

3.2 添加镜像仓库

为了方便部署,swarm可以通过portainer的stacks来部署容器,故需要配置需要拉取的镜像仓库。

 

左侧导航栏选择“Registries”,点击“Add registry”,填写镜像仓库的名称、URL、管理员的账号/密码。




由于拉取的仓库是我内部搭建的私有仓库,故选择“Custom registry”,填写仓库信息。

 


参考资料:

1.https://www.portainer.io/installation/

 

 

转载于:https://www.cnblogs.com/straycats/p/8978201.html

<think>好的,我现在需要帮助用户解决在Docker部署Portainer时页面显示空白的问题。根据用户提供的引用内容,特别是引用[4]提到的Tomcat镜像问题,可能是因为webapps目录为空导致404错误。Portainer可能也遇到了类似的情况,即静态文件未正确部署到容器中。 首先,我需要回忆Portainer部署步骤。通常,用户会使用`docker run`命令来启动Portainer容器,映射端口并挂载Docker的sock文件。例如: ```bash docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce ``` 如果页面空白,可能的原因包括: 1. **静态文件缺失或路径错误**:类似Tomcat的webapps目录问题,Portainer的前端文件可能没有被正确加载。这可能是镜像本身的问题,或者在挂载卷时覆盖了容器内的文件。 2. **网络配置问题**:端口映射错误或者防火墙设置导致无法正确加载资源。 3. **浏览器缓存问题**:旧缓存可能导致页面无法正确显示。 4. **权限问题**:容器无法访问所需文件或套接字。 根据引用[4],解决方案可能涉及检查容器内的文件结构,确保必要的文件存在。例如,进入Portainer容器查看相关静态文件路径是否正确: ```bash docker exec -it portainer /bin/sh ls /public ``` 如果没有文件,可能需要重新拉取镜像或者检查挂载卷是否覆盖了正确路径。另外,用户可能需要清除浏览器缓存或尝试使用隐私模式访问。如果问题依旧,可以尝试更新Portainer到最新版本,或者检查Docker日志: ```bash docker logs portainer ``` 查看是否有错误输出,例如文件加载失败或权限拒绝。同时,确保挂载的卷没有冲突,比如用户可能错误挂载了其他卷到Portainer的静态文件目录。此外,检查端口是否正确映射,比如宿主机的9000端口是否被占用或防火墙阻止访问。 总结可能的解决步骤:检查镜像完整性,确保正确挂载,清除缓存,查看日志,更新版本。这些步骤应该能帮助用户解决Portainer页面空白的问题。</think>### 解决DockerPortainer页面空白问题的步骤 1. **检查Portainer容器运行状态** 确认容器已正常启动且无报错: ```bash docker ps -a | grep portainer ``` 若状态为`Exited`,查看日志定位原因: ```bash docker logs portainer ``` [^3] 2. **验证静态文件路径** Portainer的前端文件默认位于容器内的`/public`目录。进入容器检查文件是否存在: ```bash docker exec -it portainer ls /public ``` 若目录为空,可能是镜像损坏或挂载覆盖。重新拉取镜像并运行: ```bash docker pull portainer/portainer-ce:latest docker run -d -p 9000:9000 --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce ``` [^4] 3. **清除浏览器缓存或使用隐私模式访问** 部分浏览器会缓存错误页面,导致持续空白。尝试使用`Ctrl+Shift+R`强制刷新或隐身模式访问`http://宿主机IP:9000`。 4. **检查端口冲突与防火墙设置** - 确认宿主机9000端口未被占用: ```bash netstat -tuln | grep 9000 ``` - 开放防火墙规则(以firewalld为例): ```bash firewall-cmd --zone=public --add-port=9000/tcp --permanent firewall-cmd --reload ``` 5. **检查挂载卷冲突** 若自定义了挂载路径(如`-v ./public:/public`),可能覆盖容器内原有文件。移除非必要挂载参数再测试。 6. **升级到最新版本** 旧版本可能存在兼容性问题,更新PortainerDocker: ```bash # 升级Portainer docker stop portainer docker rm portainer docker pull portainer/portainer-ce:latest # 重启容器(使用原命令) # 升级Docker(CentOS示例) yum update docker-ce docker-ce-cli containerd.io # 需先配置Docker官方源[^1] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值