occ命令是Nextcloud的命令行界面,nextcloud管理员可以通过occ执行许多常见的服务器操作。通常非Docker环境部署的nextcloud系统中,用户可以在nextcloud的根目录(例如:/var/www/html)下通过如下格式执行occ命令:
sudo -u www-data php occ <your_command>
但是在docker中的nextcloud会报错:

occ命令是Nextcloud的命令行界面,nextcloud管理员可以通过occ执行许多常见的服务器操作。通常非Docker环境部署的nextcloud系统中,用户可以在nextcloud的根目录(例如:/var/www/html)下通过如下格式执行occ命令:
sudo -u www-data php occ <your_command>
但是在docker中的nextcloud会报错:
在Linux下安装使用PPTP VPN非常简单。自从IOS 10不支持PPTP后,只能使用L2TP协议的VPN了。
L2TP名词解释:
L2TP(Layer 2 Tunneling Protocol)
IPSec(Internet Protocol Security)
IKEv2 (Internet Key Exchange v2)
能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。
libreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。当然也有使用 strongswan 的。
在自己的服务器开启防火墙,使用UFW设置规则:
ufw default deny
默认禁用所有连接,测试发现,用Docker运行的APP端口能正常访问。
UFW是为了简化Iptables产生的,它在Iptables有自己的规则链。Docker在启动时在Iptables会创建自己的规则链,所以不生效。
网上有些文章说,要让docker 的容器自动在开机启动,是写脚本,比如在 rc.local 中写。
其实完全没必要这么麻烦,docker 有相关指令,docker run 指令中加入 –restart=always 就行。
sudo docker run –restart=always …..
如果创建时未指定 –restart=always ,可通过update 命令设置
docker update –restart=always xxx
在Docker运行容器+端口映射和磁盘映射:
docker run -it -d -p 80:8080 -v /root/www/www:/usr/local/tomcat/webapps/ROOT tomcat
参数解读:
-d:后台运行;
-p:端口映射 上述80为宿机端口,8080为容器内部端口;
-v:文件挂载 指定宿机目录映射到容器内部的目录(上述就是把宿机/root/www/www的地址映射到容器内部的/usr/local/tomcat/webapps/ROOT目录里面去,容器加载/tomcat/webapps/ROOT目录的时候,实际就是用的www目录)
大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改。通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射。
有没有办法不保存镜像而直接修改已有的这个容器呢?有。在stackoverflow上面找到答案了,原帖链接
启动Docker容器的时候,使用默认的网络是不支持指派固定IP的
Docker安装后,默认会创建三种网络类型,bridge、host和none,可通过如下命令查看
sudo docker network ls
bridge:网络桥接
默认情况下启动、创建容器都是用该模式,所以每次Docker容器重启时会按照顺序获取对应ip地址,这就导致容器每次重启,ip都发生变化
none:无指定网络
启动容器时,可以通过–network=none,Docker容器不会分配局域网ip
host:主机网络
Docker容器的网络会附属在主机上,两者是互通的。
docker 启动脚本添加–privileged=true特权模式
运行脚本之后通过 docker ps 查看当前正在运行的容里面并没有看到 gitlab这个容器,通过 ps -a显示所有容器时发现它的状态一直是 starting 或者 restarting。 这个时候我们可以使用 docker logs 来查看当前容器的运行日志。
Preparing services... Starting services... /opt/gitlab/embedded/bin/runsvdir-start: line 24: ulimit: pending signals: cannot modify limit: Operation not permitted /opt/gitlab/embedded/bin/runsvdir-start: line 37: /proc/sys/fs/file-max: Read-only file system Configuring GitLab package... Configuring GitLab... ============================================================================= Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]' =============================================================================
通过 docker logs 可以方便大家来论断错误,一切正常还好,如果一旦出现问题,新手是很懵圈的。这个时候可能通过google 查找错误日志,多数情况下都能找到正确答案,我遇到的是个权限不足的问题, 在这个链接里面有完整的讨论,解决办法就是执行下面这句命令之后就可以正常启行了。
sudo chmod 2770 /srv/gitlab/data/git-data/repositories
另外的权限问题可以通过docker打印出来的方法来解决
For a comprehensive list of configuration options please see the Omnibus GitLab readme https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md If this container fails to start due to permission problems try to fix it by executing: docker exec -it gitlab update-permissions docker restart gitlab
原文: https://blog.csdn.net/lan120576664/article/details/79310069
写该文时,已经迁移成功,中途出现的问题没有截图,就用文字描述吧。
把Docker安装部署的GitLab,迁移到另外一台机器。
第一次的做法是把数据目录打包,然后放到新机器上,运行失败。提示没有权限。
找到一个相似的问题,https://www.oschina.net/question/2607587_2274426,评论中给出的方法,运行:
docker exec -it gitlab update-permissions
docker restart gitlab
虽然能启动成功,但是登录报错,代码503。
执行 gitlab-ctl reconfigure ,依然不能登录。
于是打算使用GitLab自带的备份恢复。
安装docker版nexus,拉取镜像失败:
pull access denied for snoatype/nexus3, repository does not exist or may require ‘docker login’
使用 docker login 登录 docker账号,依然不能拉取镜像。但是拉取 gitlab、nextcloud、wordpress 都正常。
网上的方法都是登录 docker 账号,估计这些人提供方法前自己没试过的。进入 hub.docker.com ,登录docker账号(如果没有则创建一个),搜索 nexus,找到sonatype/nexus3,标星收藏。
再用docker获取镜像,成功!
自从使用Docker就变得一发不可收拾。和以前用虚拟机相比,它占资源少,启动快,方便管理。我主要用Docker来管理多个版本的软件共存、切换和升级,比如数据库,NextCloud,Wordpress。
开源的东西总是衷爱Linux,像Docker在Windows下就没那么方便。Windows的Linux子系统目前还不支付Docker,据说下个版本,WSL2会支付。所以我一直都是用VMware安装Linux,再安装Docker。
其实官方有提供在Windows环境下使用Docker的支持。一种是Docker Toolbox
工具,它是基于Oracle的VirtualBox虚拟机的,兼容性好,Windows各个版本都能用。还有一种是Docker Desktop for Windows,它是基于Hyper-V虚拟机。Hyper-V是微软的虚拟机,只在Windows专业版、企业版、工作站版中有。打开控制面板-程序-启用或关闭Windows功能,勾选Hyper-V,确定然后重启生效。
需要注意的是,Hyper-V和VMware、VirtualBox有冲突,开启后,VMware和VirtualBox包括Android虚拟机就不能使用CPU虚拟化了,性能会大打折扣。
从官网,docker.com下载Docker Desktop for Windows安装,安装完成后Docker会自动连接Hyper-V创建MobyLinux系统。Docker可能会提示需要用户登录,如果没有,可以去官网注册一个Docker账号。下载镜像是必须登录的。