Toto je starší verze dokumentu!
Tento návod se týká zprovoznění dockeru přímo v naší VPS, tedy pod OpenVZ, což jde jen s určitými omezeními, viz níže.
Docker lze bez omezení provozovat s využitím KVM.
Tento návod je vyzkoušen pro CentOS 7.3.1611.
1) vpsAdmin / VPS → Features → je třeba zapnout Bridge, iptables a TUN/TAP (VPS se restartuje)
2) Spusťte následující příkaz a znovu restartujeme VPS:
# echo "JoinControllers=cpu,cpuacct,cpuset freezer,devices" >> /etc/systemd/system.conf
3) Docker u nás funguje jen do verze 1.10. Novější verzi se zatím nikomu nepovedlo zprovoznit, neboť to pravděpodobně vyžaduje úpravu jádra.
V oficiálních repozitářích CentOS (repo extras) je již verze 1.13, ktera s OpenVZ nefunguje. Proto je třeba nainstalovat verzi 1.10.3, která je také v repozitáři.
# yum install docker-1.10.3
yum install centos-release-openshift-origin13.noarch yum install docker-1.10.3 yum install -y yum-utils && yum-config-manager --disable CentOS-OpenShift-Origin13
4) Je vhodné zakázat aktualizace dockeru, což provedeme příkazem:
# echo "exclude=docker*" >> /etc/yum.conf
5) Aby měly kontejnery správný přístup k filesystému, je třeba upravit výchozí systemd unit.
# mkdir -p /etc/systemd/systemd/system/docker.service.d/ # cat <<EOF > /etc/systemd/system/docker.service.d/shared_mounts.conf [Service] MountFlags=shared EOF
6) Dáme vědět systemd o změnách a spustíme Docker:
# systemctl daemon-reload # systemctl start docker.service # systemctl enable docker.service
Zkontrolujeme, zda je Docker úspěšně spuštěný. Můžeme vyzkoušet hello-world image:
# docker run hello-world
usermod -aG dockerroot <username> echo '{"group": "dockerroot"}' > /etc/docker/daemon.json systemctl restart docker
zdroj: https://coderleaf.wordpress.com/2017/02/10/run-docker-as-user-on-centos7/ V /etc/docker/daemon.json je potreba vynechať „live-restore“: true - podpora tejto direktívy bola pridaná až v docker 1.12.
Použijeme neoficiální, ale populárnější image https://hub.docker.com/r/wonderfall/nextcloud/. Databáze MariaDB bude v druhém kontejneru.
1) Vytvoříme systémového uživatele, který bude vlastnit soubory Nextcloudu:
# useradd -r -s /sbin/nologin nextcloud
Zjistíme UID a GID nového uživatele:
# id nextcloud
2) Připravíme složky pro uchovávání dat z Docker kontejnerů. Všechny soubory budou uloženy pod /mnt/nas/nextcloud
, kde /mnt/nas
je připojený dataset z NASu.
/mnt/nas/nextcloud/db /mnt/nas/nextcloud/data /mnt/nas/nextcloud/config /mnt/nas/nextcloud/apps
Změníme vlastníka těchto složek příkazem:
# chown -R nextcloud:nextcloud /mnt/nas/nextcloud
3) Stáhneme si Docker compose:
# curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # chmod +x /usr/local/bin/docker-compose
4) Vytvoříme docker-compose.yml
s následujícím obsahem:
version: '2' services: nextcloud-db: image: mariadb:10.1 volumes: - /mnt/nas/nextcloud/db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=<password1> - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD=<password2> restart: always nextcloud: image: wonderfall/nextcloud:11.0 environment: - UID=991 # nextcloud user - GID=988 # nextcloud group - UPLOAD_MAX_SIZE=10G - APC_SHM_SIZE=128M - OPCACHE_MEM_SIZE=128 - REDIS_MAX_MEMORY=64mb - CRON_PERIOD=15m - TZ=Europe/Prague - ADMIN_USER=admin - ADMIN_PASSWORD=<password3> - DB_TYPE=mysql - DB_NAME=nextcloud - DB_USER=nextcloud - DB_PASSWORD=<password2> - DB_HOST=nextcloud-db depends_on: - nextcloud-db volumes: - /mnt/nas/nextcloud/data:/data - /mnt/nas/nextcloud/config:/config - /mnt/nas/nextcloud/apps:/apps2 ports: - "127.0.0.1:8888:8888/tcp" restart: always
Správně vyplníme některé hodnoty, hlavně hesla a UID a GID vytvořeného uživatele nextcloud.
5) Spustíme kontejnery příkazem:
# /usr/local/bin/docker-compose up -d
6) Nextcloud je nyní připraven na příjem po protokolu http
na localhost adrese 127.0.0.1:8888
, na kterou je třeba nastavit reverse proxy server (např. Apache nebo Nginx). Ten se může zároveň postarat i o příjem po https
a převedení vnějšího IPv6 spojení na interní IPv4.