尝试修改docker镜像

本次使用ESXI的群晖进行操作,第一root方便,第二没有重要数据保存,第三出现故障可以恢复快照。

  1. 连接SSH,端口22,使用winscp,连接后Ctrl+P访问putty

  2. 使用系统自带的镜像列表下载fusengine/apaxy,这个安装后是黑色风格,我们将要修改一下。

  3. 进入管理员权限:sudo su,输入密码

  4. docker run -t -i fusengine/apaxy /bin/bash

  5. 上步骤失败,本次参考教程https://www.cnblogs.com/bruce1992/p/16504001.html


后续想能否直接修改这个tar,首先导出这个镜像为 fusengine_apaxy_latest.tar,然后修改fusengine_apaxy_latest.tar\10185c54964509925b10f482b07c387e79168522a68abcac99e13570f2f18abc\app\theme和htaccess。

保存,上传,测试。

测试失败,继续步骤4,使用系统自带的镜像安装容器,端口84。

6.使用putty 运行docker ps -a|grep apaxy,获取到容器id,如81d40109edda。

7.可以查看目前web中的文件,使用putty:docker exec -it 81d40109edda ls /app/web

7.创建一个路径,在群晖的根目录,注意不能用文件管理器,用winscp,创建一个:/tmp/apaxy_xinmeng

8.拖拽文件入内,如theme,.htaccess到/tmp/apaxy_xinmeng

9.拷贝文件夹进入容器:docker cp /tmp/apaxy_xinmeng/*.* 81d40109edda:/app/web

10.以上操作确实拷贝成功了,但是只有文件,没有包含子文件夹,搜索了docker cp和cp不一样,没有比如覆盖或者包含子目录的参数供选择。所以换个思路。

11.调试容器 docker inspect 81d40109edda,找到/app/web目录所在的位置 "/volume1/@docker/volumes/9053ab7fe90e482f860db4f5c5ef99f79c6f2b10b9b4a652364a0783b92e3a31/_data"。

12.winscp进入以上路径,手动覆盖需要修改的文件。

13.因为权限问题,需要先修改允许访问群晖的root账号和密码:

群晖nas设置root用户密码(篇首语:本片段由小常识网(cha138.com)小编整理)
1、启用ssh登录
– 这里建议修改端口以防止恶意登录。
2、使用shell工具链接
3、切换至root用户
sudo -i
– 密码为登录时密码
4、修改权限
cd /etc/ssh
chmod 755 sshd_config
5、修改配置文件
vi /etc/ssh/sshd_config
5、1输入 i 进入编辑模式
– 底部会显示INSERT
5、2 修改配置
找到这个,将前面的#号删除
PermitRootLogin prohibit-password
5、3 推出编辑模式
按“esc”键退出编辑模式,输入“:wq”保存
6、重启系统
reboot
7、切换至root用户
sudo -i
– 密码为登录时密码
8、修改root密码
synouser --setpw root 密码
输入命令后回车即可,到此时root密码已经修改完毕

14.操作完成之后,修改winscp中的账户名为root,在新建站点窗口编辑这个记录。

15.继续第11步,失败,在目录中没有找到theme

16.继续查找,发现路径/volume1/@docker/btrfs/subvolumes/03b8f036634d715f2da4260364054d507d4e8cfaacf307edad6fbb4deca26119/app中就是实际需要的路径,覆盖之。

17.测试失败,测试新办法。先把目录复制进容器,而不是*.*,然后再想办法移动目录包括子目录和覆盖。

18.docker cp /tmp/app/ cb02ff57a35f:/app/app,外部复制到docker内部,/app/app路径很关键,因为后边收尾需要用app,复制并替换的时候不能改名,如果只用一个/app,会导致无法覆盖已存在文件。如果使用其他的如,/xinmeng/app,会因为目录不存在无法写入。

19.docker exec -it cb02ff57a35f cp -rf /app/app/ /,内部传输

20.尝试:docker exec -it 70a6e451dad3 cp -rf /app/app/theme /app

docker exec -it 70a6e451dad3 cp -i /app/app/.htaccess /app/.htaccess

21.第二十条错误,改为第19条,注意最后的空格和斜杠很重要!代表根目录!

22.发现theme下的图标没有过去,21的基础上再加一条docker exec -it da46c6b1a5ad cp -rf /app/app/theme /app/web

23.Ctrl+F5刷新,发现图片无法加载,了解是文件权限问题,putty输入:docker exec -it cb02ff57a35f chmod -R 777  /app ,访问正常

24.docker commit -m="这是apaxy的绿联云版本,提供了更丰富的UI设计。" -a="馨梦"  cb02ff57a35f xinmeng/apaxy

25.成品完成,导入到绿联云也可运行,最好可以创建一个Docker官网账号,就可以发布到互联网了。



总结:


  1. 创建/tmp/app/文件夹,拷贝入theme和htaccess,把htaccess重命名为.htaccess

  2. docker cp /tmp/app/ 1075b0c58198:/app/app,外部复制到docker内部 (cb02ff57a35f是由docker ps获取得到)

  3. docker exec -it 1075b0c58198 cp -rf /app/app/ /,内部传输

  4. docker exec -it 1075b0c58198 chmod -R 777 /app 获取权限

  5. 停止套件docker服务,注意不是docker容器,然后删除路径配置文件config.v2.json中的/etc/apache2/vhost.d 和 /var/log/apache2,删除后重启docker服务,而不是docker容器!否则配置文件会自动还原。删除后提交。(这一步的目的是删除两条必填的映射)

  6. docker commit -m="这是apaxy的绿联云版本,提供了更丰富的UI设计。" -a="馨梦" cb02ff57a35f zdbit/apaxy:20230405

  7. 在镜像列表导出zdbit/apaxy:20230405,发布到Docker官网。


发布到docker官方

docker commit -m="这是apaxy的绿联云版本,提供了更丰富的UI设计。" -a="馨梦" 1075b0c58198 zdbit/apaxy
docker login
输入账号密码
docker push zdbit/apaxy

发布到docker官方(带版本号)

docker commit -m="这是apaxy的绿联云版本,提供了更丰富的UI设计。" -a="馨梦" 1075b0c58198 zdbit/apaxy:20230405
docker login
输入账号密码
docker push zdbit/apaxy:20230405


评论列表:

1.11505  2023-04-05 22:11:09 回复该评论
演示流程:5da3bcf83d69
1.停止服务,删除config.v2.json中的/etc/apache2/vhost.d 和 /var/log/apache2,启动服务
2.docker cp /tmp/app/ 5da3bcf83d69:/app/app
3.docker exec -it 5da3bcf83d69 cp -rf /app/app/ /
4.docker exec -it 5da3bcf83d69 chmod -R 777 /app
5.docker commit -m="这是apaxy的绿联云版本,提供了更丰富的UI设计。" -a="馨梦" 5da3bcf83d69 zdbit/apaxy:20230405
6.docker push zdbit/apaxy:20230405
2.11505  2023-04-06 00:29:52 回复该评论
发布到阿里云镜像:
1.docker login --username=9088*****@qq.com registry.cn-beijing.aliyuncs.com
2.docker commit -m="这是apaxy的绿联云版本,提供了更丰富的UI设计。" -a="馨梦" 5da3bcf83d69 registry.cn-beijing.aliyuncs.com/zdbit/apaxy:20230405
3.docker push registry.cn-beijing.aliyuncs.com/zdbit/apaxy:20230405
区别仅仅是每个镜像前面加了推送网址。
3.馨梦  2023-04-08 10:41:46 回复该评论
绿联安装黑群晖
docker commit -m="这是virtual-dsm的绿联云版本,来自kroese/virtual-dsm" -a="馨梦" 04acee434b55 zdbit/virtual-dsm:20230408
docker push zdbit/virtual-dsm:20230408
4.11505  2023-05-06 00:19:31 回复该评论
登录命令:docker login --username=zdbit
5.馨梦  2023-08-09 00:21:10 回复该评论
更新绿联云一键root工具
docker commit -m="绿联云一键root工具 By Xinmeng" -a="馨梦" ec7c9a48793c zdbit/ugreen_root:20230809
docker push zdbit/ugreen_root:20230809

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。