感谢tangger2000/1panel-dood与okxlin/docker-1panel项目提供的思路。
基于以上项目,对1panel进行了优化,以此来适配1panel V2版本。
- 分为DinD与DooD架构
- DinD:Docker in Docker,适合需要容器化部署的场景。
- 适合需要容器化部署的场景。
- 适合需要隔离Docker环境的场景。
- 适合需要在容器内运行Docker命令的场景。
- DooD:Docker out of Docker,适合需要直接使用宿主机Docker的场景。
- 适合需要直接使用宿主机Docker的场景。
- 适合需要与宿主机Docker共享资源的场景。
- 适合需要在宿主机Docker环境中运行的场景。
- DinD:Docker in Docker,适合需要容器化部署的场景。
- 优化了镜像体积
- 添加了伪
systemd支持(并没有完整支持) - 多进程信号支持(可在容器内升级
1panel,但还是重新pull下镜像) - DinD容器内预留了
/app/accelerator.sh,这是配置1panel的镜像加速地址,运行后可在容器->配置->全部配置中找到。
- 由于容器限制,部分功能目前尚不完整。
- 如:DooD
1Panel的Docker仓库与配置功能可设置但无效。
- 如:DooD
- 镜像latest是dind-latest
- DinD容器内预留了
/app/accelerator.sh,这是1panel官方的国内镜像加速源配置,运行后可在容器->配置->全部配置中找到。
- 默认端口:
10086 - 默认SSH端口:
22222 - 默认账户:
1panel - 默认密码:
1panel_password - 默认入口:
entrance
- 不可调整参数
- 无
- 可调整参数
/docker/1panel/opt/1panel:/opt/1panel1Panel文件存储映射TZ=Asia/Shanghai时区设置1panel容器名/docker/1panel/root:/rootRoot目录映射/docker/1panel/etc/ssh:/etc/sshSSH配置映射/docker/1panel/var/lib/docker:/var/lib/dockerDocker存储映射/docker/1panel/etc/docker:/etc/dockerDocker配置映射
- 不可调整参数
/var/run/docker.sock的相关映射
- 可调整参数
/opt/1panel:/opt/1panel1Panel文件存储映射(推荐/opt,不然应用可能异常)TZ=Asia/Shanghai时区设置1panel容器名/var/lib/docker/volumes:/var/lib/docker/volumesDocker存储卷映射/root:/rootRoot目录/docker/1panel/ssh:/etc/sshSSH配置映射
- amd64
- arm64
- ppc64le
- s390x
DooD:Docker out of Docker,适合需要直接使用宿主机Docker的场景。
- 适合需要直接使用宿主机Docker的场景。
- 适合需要与宿主机Docker共享资源的场景。
- 适合需要在宿主机Docker环境中运行的场景。
docker
# pull
docker pull dph5199278/1panel:dind-latest
# run
docker run -d \
--name 1panel \
--restart always \
--network host \
-e TZ=Asia/Shanghai \
-v /docker/1panel/opt/1panel:/opt/1panel \
-v /docker/1panel/var/lib/docker:/var/lib/docker \
-v /docker/1panel/etc/docker:/etc/docker \
-v /docker/1panel/root:/root \
-v /docker/1panel/ssh:/etc/ssh \
--cap-add=NET_ADMIN \
dph5199278/1panel:dind-latestdocker-compose
创建一个docker-compose.yml文件,内容类似如下
version: '3'
services:
1panel:
# 容器名
container_name: 1panel
restart: always
network_mode: "host"
volumes:
# 1Panel文件存储映射
- /docker/1panel/opt/1panel:/opt/1panel
# Docker存储映射
- /docker/1panel/var/lib/docker:/var/lib/docker
# Docker配置映射
- /docker/1panel/etc/docker:/etc/docker
# Root目录映射
- /docker/1panel/root:/root
# SSH配置映射
- /docker/1panel/ssh:/etc/ssh
cap_add:
- NET_ADMIN
environment:
# 时区设置
- TZ=Asia/Shanghai
image: dph5199278/1panel:dind-latest
labels:
createdBy: "Apps"然后docker-compose up -d运行
DinD:Docker in Docker,适合需要容器化部署的场景。
- 适合需要容器化部署的场景。
- 适合需要隔离Docker环境的场景。
- 适合需要在容器内运行Docker命令的场景。
docker
# pull
docker pull dph5199278/1panel:dood-latest
# run
docker run -d \
--name 1panel \
--restart always \
--network host \
-e TZ=Asia/Shanghai \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/1panel:/opt/1panel \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
-v /root:/root \
-v /docker/1panel/ssh:/etc/ssh \
dph5199278/1panel:dood-latestdocker-compose
创建一个docker-compose.yml文件,内容类似如下
version: '3'
services:
1panel:
# 容器名
container_name: 1panel
restart: always
network_mode: "host"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# 1Panel文件存储映射
- /opt/1panel:/opt/1panel
# Docker存储卷映射
- /var/lib/docker/volumes:/var/lib/docker/volumes
# Root目录映射
- /root:/root
# SSH配置映射
- /docker/1panel/ssh:/etc/ssh
environment:
# 时区设置
- TZ=Asia/Shanghai
image: dph5199278/1panel:dood-latest
labels:
createdBy: "Apps"然后docker-compose up -d运行
cd dind
docker build --build-arg PANELVER=your_desired_version -t your_image_name:tag .
- 编译当前平台:
cd dind && \
docker build --build-arg PANELVER=v2.0.5 -t 1panel:v2.0.5 .- 编译多平台并推送:
cd dind && \
docker buildx build --platform linux/amd64,linux/arm64,linux/ppc64le,linux/s390x --build-arg PANELVER=v2.0.5 -t dph5199278/1panel:v2.0.5 --push .cd dood && \
docker build --build-arg PANELVER=your_desired_version -t your_image_name:tag .
- 编译当前平台:
cd dood && \
docker build --build-arg PANELVER=v2.0.5 -t 1panel:v2.0.5 .- 编译多平台并推送:
cd dood && \
docker buildx build --platform linux/amd64,linux/arm64,linux/ppc64le,linux/s390x --build-arg PANELVER=v2.0.5 -t dph5199278/1panel:v2.0.5 --push .