对于想了解如何删除与NextCloudDockerContainers相关的所有内容,以便我可以重新安装新的?的读者,本文将是一篇不可错过的文章,并且为您提供关于(转)Docker、Container
对于想了解如何删除与 NextCloud Docker Containers 相关的所有内容,以便我可以重新安装新的?的读者,本文将是一篇不可错过的文章,并且为您提供关于(转)Docker、Containerd、RunC...:你应该知道的所有、1.Nextcloud云盘部署(Docker环境)、centos 7.6 docker 安装 nextcloud、CentOS-Docker搭建Nextcloud的有价值信息。
本文目录一览:- 如何删除与 NextCloud Docker Containers 相关的所有内容,以便我可以重新安装新的?
- (转)Docker、Containerd、RunC...:你应该知道的所有
- 1.Nextcloud云盘部署(Docker环境)
- centos 7.6 docker 安装 nextcloud
- CentOS-Docker搭建Nextcloud
如何删除与 NextCloud Docker Containers 相关的所有内容,以便我可以重新安装新的?
如何解决如何删除与 NextCloud Docker Containers 相关的所有内容,以便我可以重新安装新的??
我希望删除与 NextCloud 相关的所有内容,以便我可以进行全新安装并继续获得较旧的实例。
我通过 docker compose 文件(见下文)安装了 NextCloud(以及 Nginx、letsencrypt 和 maria)。第一次登录时,遇到了MariaDB的问题,无法完成初始登录。
在进行故障排除时,我尝试使用 sqlite 进行初始登录并且成功,但我不想在生产中运行 sqlite。我最终找到了一个包含在 MariaDB 定义中的命令,并进行了全新安装。
我尝试了 docker-compose down
和 docker compose up -d
,但这使我回到了 sqlite 实例。
我停止了所有 NextCloud 容器并运行 docker system prune --volumes -a
,然后运行 docker-compose up -d
。这重新下载并提取了所有 docker 图像。当我返回 NextCloud URL 时,它仍然指向我的 sqlite 实例,而不是我正在寻找的全新安装。
我还可以尝试哪些其他方法来进行全新安装?
version: ''3''
services:
proxy:
image: jwilder/Nginx-proxy:alpine
labels:
- "com.github.jrcs.letsencrypt_Nginx_proxy_companion.Nginx_proxy=true"
container_name: nextcloud-proxy
networks:
- nextcloud_network
ports:
- 80:80
- 443:443
volumes:
- ./proxy/conf.d:/etc/Nginx/conf.d:rw
- ./proxy/vhost.d:/etc/Nginx/vhost.d:rw
- ./proxy/html:/usr/share/Nginx/html:rw
- ./proxy/certs:/etc/Nginx/certs:ro
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: unless-stopped
letsencrypt:
image: jrcs/letsencrypt-Nginx-proxy-companion
container_name: nextcloud-letsencrypt
depends_on:
- proxy
networks:
- nextcloud_network
volumes:
- ./proxy/certs:/etc/Nginx/certs:rw
- ./proxy/vhost.d:/etc/Nginx/vhost.d:rw
- ./proxy/html:/usr/share/Nginx/html:rw
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
db:
image: mariadb
container_name: nextcloud-mariadb
networks:
- nextcloud_network
volumes:
- db:/var/lib/MysqL
- /etc/localtime:/etc/localtime:ro
environment:
- MysqL_ROOT_PASSWORD=toor
- MysqL_PASSWORD=MysqL
- MysqL_DATABASE=nextcloud
- MysqL_USER=nextcloud
restart: unless-stopped
command: [''--innodb_read_only_compressed=OFF'']
app:
image: nextcloud:latest
container_name: nextcloud-app
networks:
- nextcloud_network
depends_on:
- letsencrypt
- proxy
- db
volumes:
- nextcloud:/var/www/html
- ./app/config:/var/www/html/config
- ./app/custom_apps:/var/www/html/custom_apps
- ./app/data:/var/www/html/data
- ./app/themes:/var/www/html/themes
- /etc/localtime:/etc/localtime:ro
environment:
- VIRTUAL_HOST=your-subdomain.duckdns.org
- LETSENCRYPT_HOST=your-subdomain.duckdns.org
- LETSENCRYPT_EMAIL=you@youremail.com
restart: unless-stopped
volumes:
nextcloud:
db:
networks:
nextcloud_network:
解决方法
您的某些容器上似乎有“绑定卷”。 尤其是在您的 nextcloud-app 实例上。
此命令不会删除绑定卷。仅管理卷。
docker system prune --volumes -a
下一个云可能在./app文件夹中保存了一些配置数据
因此,如果您想完全重置它,您需要停止所有容器,手动删除此文件夹。删除托管卷。 并重新启动它
(转)Docker、Containerd、RunC...:你应该知道的所有
从 Docker 1.11 开始,Docker 容器运行已经不是简单的通过 Docker daemon 来启动,而是集成了 containerd、runc 等多个组件。Docker 服务启动之后,我们也可以看见系统上启动了 dockerd、docker-containerd 等进程,本文主要介绍新版 Docker(1.11 以后)每个部分的功能和作用。
Docker Daemon
作为 Docker 容器管理的守护进程,Docker Daemon 从最初集成在docker
命令中(1.11 版本前),到后来的独立成单独二进制程序(1.11 版本开始),其功能正在逐渐拆分细化,被分配到各个单独的模块中去。从 Docker 服务的启动脚本,也能看见守护进程的逐渐剥离:
在 Docker 1.8 之前,Docker 守护进程启动的命令为:
docker -d
这个阶段,守护进程看上去只是 Docker client 的一个选项。
Docker 1.8 开始,启动命令变成了:
docker daemon
这个阶段,守护进程看上去是docker
命令的一个模块。
Docker 1.11 开始,守护进程启动命令变成了:
dockerd
此时已经和 Docker client 分离,独立成一个二进制程序了。
当然,守护进程模块不停的在重构,其基本功能和定位没有变化。和一般的 CS 架构系统一样,守护进程负责和 Docker client 交互,并管理 Docker 镜像、容器。
下面就来介绍下独立分拆出来的其他几个模块。
Containerd
containerd 是容器技术标准化之后的产物,为了能够兼容 OCI 标准,将容器运行时及其管理功能从 Docker Daemon 剥离。理论上,即使不运行 dockerd,也能够直接通过 containerd 来管理容器。(当然,containerd 本身也只是一个守护进程,容器的实际运行时由后面介绍的 runc 控制。)
最近,Docker 刚刚宣布开源containerd 。从其项目介绍页面可以看出,containerd 主要职责是镜像管理(镜像、元信息等)、容器执行(调用最终运行时组件执行)。
containerd 向上为 Docker Daemon 提供了 gRPC 接口,使得 Docker Daemon 屏蔽下面的结构变化,确保原有接口向下兼容。向下通过 containerd-shim 结合 runc,使得引擎可以独立升级,避免之前 Docker Daemon 升级会导致所有容器不可用的问题。
Docker、containerd 和 containerd-shim 之间的关系,可以通过启动一个 Docker 容器,观察进程之间的关联。首先启动一个容器,
docker run -d busyBox sleep 1000
然后通过pstree
命令查看进程之间的父子关系(其中 20708 是dockerd
的 PID):
pstree -l -a -A 20708
输出结果如下:
dockerd -H fd:// --storage-driver=overlay2 |-docker-containe -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc | |-docker-containe b9a04a582b66206492d29444b5b7bc6ec9cf1eb83eff580fe43a039ad556e223 /var/run/docker/libcontainerd/b9a04a582b66206492d29444b5b7bc6ec9cf1eb83eff580fe43a039ad556e223 docker-runc | | |-sleep 1000
docker-containerd-shim 另一个参数,是一个和容器相关的目录 /var/run/docker/libcontainerd/b9a04a582b66206492d29444b5b7bc6ec9cf1eb83eff580fe43a039ad556e223,里面的内容有:虽然pstree
命令截断了命令,但我们还是能够看出,当 Docker daemon 启动之后,dockerd 和 docker-containerd 进程一直存在。当启动容器之后,docker-containerd 进程(也是这里介绍的 containerd 组件)会创建 docker-containerd-shim 进程,其中的参数 b9a04a582b66206492d29444b5b7bc6ec9cf1eb83eff580fe43a039ad556e223 就是要启动容器的 id。最后 docker-containerd-shim 子进程,已经是实际在容器中运行的进程(既 sleep 1000)。
. ├── config.json ├── init-stderr ├── init-stdin └── init-stdout
runc其中包括了容器配置和标准输入、标准输出、标准错误三个管道文件。
OCI 定义了容器运行时标准,runc 是 Docker 按照开放容器格式标准(OCF, Open Container Format)制定的一种具体实现。
runc 是从 Docker 的 libcontainer 中迁移而来的,实现了容器启停、资源隔离等功能。Docker 默认提供了 docker-runc 实现,事实上,通过 containerd 的封装,可以在 Docker Daemon 启动的时候指定 runc 的实现。
我们可以通过启动 Docker Daemon 时增加--add-runtime
参数来选择其他的 runc 现。例如:
docker daemon --add-runtime "custom=/usr/local/bin/my-runc-replacement"
下面就让我们看下这几个模块如何工作。
举个例子
这里通过 Docker 一些命令,实现不使用 Docker Daemon 直接启动一个镜像,以便了解 Docker Daemon 每个模块的作用。
首先,需要创建容器标准包,这部分实际上由 containerd 的 bundle 模块实现,将 Docker 镜像转换成容器标准包。
mkdir my_container cd my_container mkdir rootfs docker export $(docker create busyBox) | tar -C rootfs -xvf -
上述命令将 busyBox 镜像解压缩到指定的 rootfs 目录中。如果本地不存在 busyBox 镜像,containerd 还会通过 distribution 模块去远程仓库拉取。
现在整个 my_container 目录结构如下:
$ tree -d my_container/ my_container/ └── rootfs ├── bin ├── dev │ ├── pts │ └── shm ├── etc ├── home ├── proc ├── root ├── sys ├── tmp ├── usr │ └── sbin └── var ├── spool │ └── mail └── www 17 directories
此时,标准包所需的容器数据已经准备完毕,接下来我们需要创建配置文件:
docker-runc spec
此时会生成一个名为config.json
的配置文件,该文件和 Docker 容器的配置文件类似,主要包含容器挂载信息、平台信息、进程信息等容器启动依赖的所有数据。此时,标准包所需的容器数据已经准备完毕,接下来我们需要创建配置文件:
最后,可以通过runc
命令来启动容器:
runc run busyBox
注意,runc 必须使用 root 权限启动。
执行之后,我们可以看见容器已经启动:
localhost my_container # runc run busyBox / # ps aux PID USER TIME COMMAND 1 root 0:00 sh 9 root 0:00 ps aux
此时,事实上已经可以不依赖 Docker 本身,如果系统上安装了runc
包,即可运行容器。对于 Gentoo 系统来说,安装app-emulation/runc
包即可。
当然,也可以使用 docker-runc 命令来启动容器:
localhost my_container # docker-runc run busyBox / # ps aux PID USER TIME COMMAND 1 root 0:00 sh 7 root 0:00 ps aux
从这里可以看到标准化的重要性。
总结
从 Docker 1.11 之后,Docker Daemon 被分成了多个模块以适应 OCI 标准。拆分之后,结构分成了以下几个部分。
其中,containerd 独立负责容器运行时和生命周期(如创建、启动、停止、中止、信号处理、删除等),其他一些如镜像构建、卷管理、日志等由 Docker Daemon 的其他模块处理。
Docker 的模块块拥抱了开放标准,希望通过 OCI 的标准化,容器技术能够有很快的发展。
1.Nextcloud云盘部署(Docker环境)
Nextcloud云盘部署(Docker环境)
NextCloud 是一款开源网络硬盘系统。任何人都可以自由的获取 NextCloud 程序,在家庭或公司构建私有且免费的网络硬盘。它是完全由你用户控制的私有、安全且功能完整的文件同步与共享解决方案。
1、安装Docker-ce
#1.下载阿里镜像源 [root@docker1 ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [root@docker1 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #2.安装并配置docker-ce yum -y install docker [root@docker1 ~]# echo ' { "registry-mirrors": ["https://registry.docker-cn.com"], "insecure-registries": ["harbor.corp.trusit.com"], "live-restore": true }' > /etc/docker/daemon.json //如果没有/etc/docker/目录 则创建 [root@docker1 ~]# systemctl start docker && systemctl enable docker
@H_301_18@2、部署Nextcloud云盘
#1.下载nextcloud:latest镜像 [root@docker1 ~]# docker pull nextcloud:latest #2.启动nextcloud容器 [root@docker1 ~]# docker run -it -d -p 8880:80 -v nextcloud-data:/var/www/html --name nextcloud-server harbor.corp.trusit.com/library/nextcloud:latest
@H_301_18@3、登录http://ip:8880
出现以下界面部署成功
centos 7.6 docker 安装 nextcloud
docker search nextcloud
docker pull docker.io/nextcloud
docker images
mkdir /home/nextcloud
chmod -R 777 nextcloud/
docker run -d --restart=always --name nextcloud -p 9001:80 -v /home/nextcloud:/data docker.io/nextcloud
浏览器访问9001端口,按照浏览器配置即可。
CentOS-Docker搭建Nextcloud
下载镜像
$ docker pull nextcloud
运行镜像
$ docker run -d --restart=unless-stopped --name nextcloud -v /home/nextcloud/html:/var/www/html -p 18080:80 nextcloud
访问nextcloud服务
http://ip:18080
1.设置管理员用户和密码
2.指定存储目录(默认即可)
3.指定数据库信息(MysqL)
注:点击完成之前,请确保MysqL中已创建配置的数据库
点击完成后服务会自动创建表及文件等,稍后几分钟即可
关于如何删除与 NextCloud Docker Containers 相关的所有内容,以便我可以重新安装新的?的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于(转)Docker、Containerd、RunC...:你应该知道的所有、1.Nextcloud云盘部署(Docker环境)、centos 7.6 docker 安装 nextcloud、CentOS-Docker搭建Nextcloud的相关知识,请在本站寻找。
本文标签: