/1panel-in-docker

将 1Panel 运行在容器中; 1Panel running in Docker

Primary LanguageShell

简介

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。

偶然看到 docker-1panel1panel-dood 将 1Panel 部署到容器的办法,便进行了尝试,发现 1Panel 运行良好,完全可以将 1Panel 放在容器里面运行。

和上面两个仓库实现的方式不一样,1panel-in-docker 是通过增加一个仿冒的 systemctl 实现可通过官方安装脚本安装 1Panel。


1. 注意事项

由于容器内部 systemd 限制,1Panel 可能有部分功能不完善。另外 1Panel 官方只提供 amd64arm64armv7ppc64les390x 这些指令集的面板程序,所以目前只提供这些镜像。

2. 相关设置

2.1 环境变量

  • 时区设置 TZ=Asia/Shanghai

以下变量为首次启动安装的过程根据需求设置

  • 面板分支 INSTALL_MODE=stable(默认:stable 稳定分支,可选 dev 开发分支)

  • 安装目录 PANEL_BASE_DIR=/opt(默认:/opt)

  • 面板端口 PANEL_PORT=8888(默认:随机)

  • 管理账户 PANEL_USERNAME=admin(默认:随机)

  • 管理密码 PANEL_PASSWORD=admin888(默认:随机)

    首次启动未设置登录信息,请在安装完成后通过日志查询登录信息,或者首次启动使用 -i 即可在前台打印安装日志

2.2 挂载目录

  • 数据目录 /opt:/opt

    根据自己的需求修改,容器内目录和容器外目录路径需要保持一致

2.2.1 Docker

  • Socket /var/run/docker.sock:/var/run/docker.sock
  • Docker /var/lib/docker:/var/lib/docker

2.2.2 Podman

  • Socket /run/podman/podman.sock:/var/run/docker.sock
  • Podman /var/lib/containers/storage:/var/lib/docker

3. 部署方式

3.1 Docker

3.1.1 命令行

docker run -dt \
    --name 1panel \
    --restart always \
    --network host \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /var/lib/docker:/var/lib/docker \
    -v /opt:/opt \
    -e TZ=Asia/Shanghai \
    xeath/1panel-in-docker:latest

3.1.2 部署文件

创建一个 docker-compose.yml 文件,内容类似如下

version: '3'
services:
  1panel:
    container_name: 1panel # 容器名
    restart: always
    network_mode: "host"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker:/var/lib/docker
      - /opt:/opt
    environment:
      - TZ=Asia/Shanghai
    image: xeath/1panel-in-docker:latest
    labels:  
      createdBy: "Apps"

然后 docker-compose up -dt 运行

3.2 Podman

Podman 虽然也可以运行,但是网络不支持 host,使用上存在一些问题

3.1.1 命令行

podman run -dt \
    --name 1panel \
    --restart always \
    --network bridge \
    -v /run/podman/podman.sock:/var/run/docker.sock \
    -v /var/lib/containers/storage:/var/lib/docker \
    -v /opt:/opt \
    -e TZ=Asia/Shanghai \
    xeath/1panel-in-docker:latest

3.1.2 部署文件

创建一个 docker-compose.yml 文件,内容类似如下

version: '3'
services:
  1panel:
    container_name: 1panel # 容器名
    restart: always
    network_mode: "bridge"
    volumes:
      - /run/podman/podman.sock:/var/run/docker.sock
      - /var/lib/containers/storage:/var/lib/docker
      - /opt:/opt
    environment:
      - TZ=Asia/Shanghai
    image: xeath/1panel-in-docker:latest
    labels:  
      createdBy: "Apps"

然后 podman-compose up -dt 运行