跳至主要内容
版本:14.x

Docker

部份步驟也許不適用於你的安裝過程。 Understand what they do, and ignore, or customize as necessary.

準備

對作業系統支援與服務套件所需,

Debian Linux

安裝 Docker(引擎):https://docs.docker.com/engine/install/debian/

Fedora Linux

安裝 Docker(引擎):https://docs.docker.com/engine/install/fedora/

額外指示

sudo usermod -a -G docker <username>;

重新登入或重開機

sudo su -;
mkdir /srv/UMS;
chcon -t svirt_sandbox_file_t /srv/UMS;
chgrp docker /srv/UMS;
chmod -R g+w /srv/UMS;

Mount storage to host and link into that directory, probably read-only. mount <Videos-Share> '/srv/UMS/Videos'

Test example: Simple symlinking to another path on the host system may not work, since there will be no access to it outside of the mounted volume path for the docker container. Try copying files inside this location instead.

容器 (Container) 設置

Mount the following volumes:

  • Media folder /media
  • Profile folder containing UMS.conf /profile

Expose/forward these ports from the host: 1044, 5001, 9001.

The following scripts accomplish that (using the fish shell):

sudo su -;
set rootDir "$HOME/.config/UMS";
mkdir -p "$rootDir/data";

docker pull universalmediaserver/ums;

docker create --name UMS \
-p 1044:1044 -p 5001:5001 -p 9001:9001 \
-v /srv/UMS:/root/media \
-v "$HOME/.config/UMS":/root/.config/UMS \
universalmediaserver/ums \
;

docker start UMS;

調查問題

一般

docker ps -a;
#docker attach [--no-stdin] UMS; # Still unintentionally stops container when done inspecting..
docker container logs [-f] UMS;
docker exec -it UMS /bin/sh;
docker diff UMS;
docker container logs [-f] UMS;
docker exec -it UMS /bin/sh;
docker diff UMS;
docker container logs [-f] UMS;
docker exec -it UMS /bin/sh;
docker diff UMS;
docker container logs [-f] UMS;
docker exec -it UMS /bin/sh;
docker diff UMS;
docker container logs [-f] UMS;
docker exec -it UMS /bin/sh;
docker diff UMS;

For detailed logs in the terminal: echo -e '\nlog_level=ALL' >> UMS.conf

docker cp <containerName>:/var/log/UMS/root/debug.log ./;

Mount trouble

Using Fedora CoreOS, I had access/permission denied problems trying to use bind mounts.

It may be recommended to use the Docker-managed, named-volumes capability instead, but to avoid that complexity, I found that the additional :Z as a suffix to the bind mount's descriptor option value allowed container write access to host files. :z can also be used instead, but security advice may suggest keeping resources more isolated between application/service environments, rather than shared.

Matching error messages can be seen using journalctl, so it is an SELinux problem. Matching error messages can be seen using journalctl, so it is an SELinux problem. The solution for that would be to run chcon -Rt svirt_sandbox_file_t host_dir, but that also seems discouraged. Matching error messages can be seen using journalctl, so it is an SELinux problem. The solution for that would be to run chcon -Rt svirt_sandbox_file_t host_dir, but that also seems discouraged. Matching error messages can be seen using journalctl, so it is an SELinux problem. The solution for that would be to run chcon -Rt svirt_sandbox_file_t host_dir, but that also seems discouraged. The solution for that would be to run chcon -Rt svirt_sandbox_file_t host_dir, but that also seems discouraged.

Strangely this is not an issue on Fedora Workstation, but I guess installing it manually added a package to deal with this. Seems to be container-selinux. Seems to be container-selinux. Seems to be container-selinux. Seems to be container-selinux. Seems to be container-selinux.

参考