Docker安装nextcloud实验
修改验证方式:从密钥到密码
sudo passwd root
su – root
vi /etc/ssh/sshd_config
去掉下面前的# 或修改yes、no
port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
PermitRootLogin yes
PasswordAuthentication yes
GSSAPIAuthentication no
然后重启服务
systemctl restart sshd
一、 关闭selinux
临时关闭:setenforce 0
永久关闭:vim /etc/selinux/config
SELINUX=disabled
二、 docker 安装和启动
1. yum install epel-release
2. yum install docker
3. systemctl enable docker
4. systemctl start docker
三、 安装 python-pip
Docker-Compose是一个部署多个容器的简单但是非常必要的工具.
安装Docker-Compose之前,请先安装 python-pip
1、首先检查linux有没有安装python-pip包,终端执行 pip -V
[root@vm-50-151 network-scripts]# pip -V
-bash: pip: command not found
2、执行成功之后,再次执行yum -y install python-pip
[root@vm-50-151 network-scripts]# yum install python-pip
3、对安装好的pip进行升级 pip install --upgrade pip
[root@vm-50-151 network-scripts]# pip install --upgrade pip
至此,pip安装好了,执行pip -V 再次检查pip环境。
[root@vm-50-151 network-scripts]# pip -V
四、 安装Docker-Compose
1.终端执行:pip install docker-compose
若报错:ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org',port=443): Read timed out
解决:pip --default-timeout=200 install -U docker-compose
2、检查docker-compose安装:docker-compose -version
[root@vm-50-151 network-scripts]#docker-compose -version
如果报错:
pkg_resources.DistributionNotFound:backports.ssl-match-hostname>=3.5
解决方法:更新backports.ssl-match-hostname的版本,在终端输入命令
pip install --upgrade backports.ssl_match_hostname
五、 镜像配置
1,上传docker-compose.yml至/opt目录下,并切换到此目录下
cd /opt
1,需要创建一个nextcloud的网络:
docker network create nextcloud
[root@VM_0_3_redhat nextcloud]# docker network create nextcloud
执行结果: b01cd2af784023bb9deb416f6f147b883ceac3d4094b0573bcbe4fe29eb8ef7e
2,编辑docker-compose.yml文件设置镜像信息:vi docker-compose.yml
version: '2'
services:
db:
container_name: cloud_db
image: mysql
volumes:
- "./data/cloud/mysql:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: nextcloud
app:
container_name: cloud_app
depends_on:
- db
image: nextcloud
volumes:
- ./data/cloud/config:/var/www/html/config
- ./data/cloud/data:/var/www/html/data
- ./data/cloud/apps:/var/www/html/apps
links:
- db
ports:
- "2333:80"
restart: always
cron:
container_name: cloud_cron
image: nextcloud
links:
- db
volumes_from:
- app
user: www-data
entrypoint: |
bash -c 'bash -s <<EOF
trap "break;exit" SIGHUP SIGINT SIGTERM
while /bin/true; do
/usr/local/bin/php /var/www/html/cron.php
sleep 900
done
EOF'
restart: always
web:
container_name: cloud_web
image: abiosoft/caddy
volumes:
- ./Caddyfile:/etc/Caddyfile
- ~/.caddy:/root/.caddy
ports:
- 80:80
- 443:443
restart: always
networks:
default:
external:
name: nextcloud
3,拉取镜像:docker-compose up -d
若异常,参考下部的异常处理
六、 开始配置:
1,镜像拉取成功之后查看监听端口,和我们在docker-compose.yml中设置的一样2333端口监听
2,登录http://ip:2333
3,创建用户用户登录nextcloud使用,接着填写数据库信息,我们前面指定使用mysql数据库,这里填写mysql用户名密码数据库,主机名这里直接填写db就可以。最后点击安装。
4,安装完成,进入nextcloud主界面,第一次进入提示他的多客户端下载地址。
5,个人存储主界面。
6,按照docker-compose.yml配置,镜像中数据信息会保存在本地
异常处理:
异常一:若无法联网看看DNS 是否出问题
vi /etc/resolv.conf
; Created by cloud-init on instance boot automatically, do not edit.
;
; generated by /usr/sbin/dhclient-script
search openstacklocal
nameserver 114.114.114.114
nameserver 8.8.8.8
异常二:无法下拉:
[root@wb2 opt]# docker-compose up -d
Pulling web (abiosoft/caddy:)...
Trying to pull repository docker.io/abiosoft/caddy ...
latest: Pulling from docker.io/abiosoft/caddy
ff3a5c916c92: Pulling fs layer
d9c6388ca90b: Pulling fs layer
d8978f464d08: Pulling fs layer
f12e77480ad6: Waiting
be3c7521af74: Waiting
ab902d1f9b18: Waiting
解决办法:增加下面红字地方
[root@px-30 opt]# vi /etc/sysconfig/docker
# /etc/sysconfig/docker
# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=http://f2d6cb40.m.daocloud.io'
然后重启docker
systemctl restart docker
再次测试docker-compose up -d
若继续异常再执行下面,否则不需要
解决 Docker pull出现的
error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net/
出现这个问题,一般的原因是无法连接到 docker hub,通过:
systemctl stop docker
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://f2d6cb40.m.daocloud.io\"" | sudo tee -a /etc/default/docker
service docker restart
然后就能正常使用docker pull