kopia lustrzana https://github.com/linuxserver/docker-documentation
Cleanup markdownlint issues
rodzic
d2e6a79e95
commit
ef98461086
140
FAQ.md
140
FAQ.md
|
@ -6,69 +6,69 @@ Here will some Frequently Asked Questions reside
|
||||||
|
|
||||||
Some x86_64 hosts running older versions of the Docker engine are not compatible with some images based on Ubuntu Jammy.
|
Some x86_64 hosts running older versions of the Docker engine are not compatible with some images based on Ubuntu Jammy.
|
||||||
|
|
||||||
### Symptoms
|
- Symptoms
|
||||||
|
|
||||||
If your host is affected you may see errors in your containers such as:
|
If your host is affected you may see errors in your containers such as:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
ERROR - Unable to determine java version; make sure Java is installed and callable
|
ERROR - Unable to determine java version; make sure Java is installed and callable
|
||||||
```
|
```
|
||||||
|
|
||||||
Or
|
Or
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
Failed to create CoreCLR, HRESULT: 0x80070008
|
Failed to create CoreCLR, HRESULT: 0x80070008
|
||||||
```
|
```
|
||||||
|
|
||||||
Or
|
Or
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
WARNING :: MAIN : webStart.py:initialize:249 : can't start new thread
|
WARNING :: MAIN : webStart.py:initialize:249 : can't start new thread
|
||||||
```
|
```
|
||||||
|
|
||||||
### Resolution
|
- Resolution
|
||||||
|
|
||||||
#### Option 1 (Long-Term Fix)
|
- Option 1 (Long-Term Fix)
|
||||||
|
|
||||||
Upgrade your Docker engine install to at least version `20.10.10`. [Refer to the official Docker docs for installation/update details.](https://docs.docker.com/engine/install)
|
Upgrade your Docker engine install to at least version `20.10.10`. [Refer to the official Docker docs for installation/update details.](https://docs.docker.com/engine/install)
|
||||||
|
|
||||||
#### Option 2 (Short-Term Fix)
|
- Option 2 (Short-Term Fix)
|
||||||
|
|
||||||
For Docker CLI, run your container with:
|
For Docker CLI, run your container with:
|
||||||
|
|
||||||
`--security-opt seccomp=unconfined`
|
`--security-opt seccomp=unconfined`
|
||||||
|
|
||||||
For Docker Compose, run your container with:
|
For Docker Compose, run your container with:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
security_opt:
|
security_opt:
|
||||||
- seccomp=unconfined
|
- seccomp=unconfined
|
||||||
```
|
```
|
||||||
|
|
||||||
## My host is incompatible with images based on rdesktop {#rdesktop}
|
## My host is incompatible with images based on rdesktop {#rdesktop}
|
||||||
|
|
||||||
Some x86_64 hosts have issues running rdesktop based images even with the latest docker version due to syscalls that are unknown to docker.
|
Some x86_64 hosts have issues running rdesktop based images even with the latest docker version due to syscalls that are unknown to docker.
|
||||||
|
|
||||||
### Symptoms
|
- Symptoms
|
||||||
|
|
||||||
If your host is affected you may see errors in your containers such as:
|
If your host is affected you may see errors in your containers such as:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
Failed to close file descriptor for child process (Operation not permitted)
|
Failed to close file descriptor for child process (Operation not permitted)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Resolution
|
- Resolution
|
||||||
|
|
||||||
For Docker CLI, run your container with:
|
For Docker CLI, run your container with:
|
||||||
|
|
||||||
`--security-opt seccomp=unconfined`
|
`--security-opt seccomp=unconfined`
|
||||||
|
|
||||||
For Docker Compose, run your container with:
|
For Docker Compose, run your container with:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
security_opt:
|
security_opt:
|
||||||
- seccomp=unconfined
|
- seccomp=unconfined
|
||||||
```
|
```
|
||||||
|
|
||||||
## My host is incompatible with images based on Ubuntu Focal and Alpine 3.13 and later {#libseccomp}
|
## My host is incompatible with images based on Ubuntu Focal and Alpine 3.13 and later {#libseccomp}
|
||||||
|
|
||||||
|
@ -80,54 +80,54 @@ This is due to a bug in the libseccomp2 library (dependency of Docker itself), w
|
||||||
|
|
||||||
You have a few options as noted below. Options 1 is short-term, while option 2 is considered the best option if you don't plan to reinstall the device (option 3).
|
You have a few options as noted below. Options 1 is short-term, while option 2 is considered the best option if you don't plan to reinstall the device (option 3).
|
||||||
|
|
||||||
### Resolution
|
- Resolution
|
||||||
|
|
||||||
If you decide to do option 1 or 2, you should just need to restart the container after confirming you have libseccomp2.4.4 installed.
|
If you decide to do option 1 or 2, you should just need to restart the container after confirming you have libseccomp2.4.4 installed.
|
||||||
|
|
||||||
If 1 or 2 did not work, ensure your Docker install is at least version 20.10.0, [refer to the official Docker docs for installation.](https://docs.docker.com/engine/install/debian/)
|
If 1 or 2 did not work, ensure your Docker install is at least version 20.10.0, [refer to the official Docker docs for installation.](https://docs.docker.com/engine/install/debian/)
|
||||||
|
|
||||||
#### Option 1
|
- Option 1
|
||||||
|
|
||||||
Manually install an updated version of the library with dpkg.
|
Manually install an updated version of the library with dpkg.
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
wget http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.4.4-1~bpo10+1_armhf.deb
|
wget http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.4.4-1~bpo10+1_armhf.deb
|
||||||
sudo dpkg -i libseccomp2_2.4.4-1~bpo10+1_armhf.deb
|
sudo dpkg -i libseccomp2_2.4.4-1~bpo10+1_armhf.deb
|
||||||
```
|
```
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
This url may have been updated. Find the latest by browsing [here](http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/).
|
This url may have been updated. Find the latest by browsing [here](http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/).
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
#### Option 2
|
- Option 2
|
||||||
|
|
||||||
Add the backports repo for DebianBuster. As seen [here](https://github.com/linuxserver/docker-jellyfin/issues/71#issuecomment-733621693).
|
Add the backports repo for DebianBuster. As seen [here](https://github.com/linuxserver/docker-jellyfin/issues/71#issuecomment-733621693).
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138
|
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138
|
||||||
echo "deb http://deb.debian.org/debian buster-backports main" | sudo tee -a /etc/apt/sources.list.d/buster-backports.list
|
echo "deb http://deb.debian.org/debian buster-backports main" | sudo tee -a /etc/apt/sources.list.d/buster-backports.list
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install -t buster-backports libseccomp2
|
sudo apt install -t buster-backports libseccomp2
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Option 3
|
- Option 3
|
||||||
|
|
||||||
Reinstall/update your OS to a version that still gets updates.
|
Reinstall/update your OS to a version that still gets updates.
|
||||||
|
|
||||||
* Any distro based on DebianStretch does not seem to have this package available
|
- Any distro based on DebianStretch does not seem to have this package available
|
||||||
* DebianBuster based distros can get the package trough backports, as outlined in point 2.
|
- DebianBuster based distros can get the package trough backports, as outlined in point 2.
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
RaspberryPI OS (formerly Raspbian) Can be upgraded to run with a 64bit kernel
|
RaspberryPI OS (formerly Raspbian) Can be upgraded to run with a 64bit kernel
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Symptoms
|
- Symptoms
|
||||||
|
|
||||||
* 502 errors in __Jellyfin__ as seen in [linuxserver/docker-jellyfin#71](https://github.com/linuxserver/docker-jellyfin/issues/71)
|
- 502 errors in __Jellyfin__ as seen in [linuxserver/docker-jellyfin#71](https://github.com/linuxserver/docker-jellyfin/issues/71)
|
||||||
* `Error starting framework core` messages in the docker log for __Plex__. [linuxserver/docker-plex#247](https://github.com/linuxserver/docker-plex/issues/247)
|
- `Error starting framework core` messages in the docker log for __Plex__. [linuxserver/docker-plex#247](https://github.com/linuxserver/docker-plex/issues/247)
|
||||||
* No WebUI for __Radarr__, even though the container is running. [linuxserver/docker-radarr#118](https://github.com/linuxserver/docker-radarr/issues/118)
|
- No WebUI for __Radarr__, even though the container is running. [linuxserver/docker-radarr#118](https://github.com/linuxserver/docker-radarr/issues/118)
|
||||||
* Images based on our Nginx base-image(Nextcloud, SWAG, Nginx, etc.) fails to generate a certificate, with a message similar to `error getting time:crypto/asn1/a_time.c:330`
|
- Images based on our Nginx base-image(Nextcloud, SWAG, Nginx, etc.) fails to generate a certificate, with a message similar to `error getting time:crypto/asn1/a_time.c:330`
|
||||||
* `docker exec <container-name> date` returns 1970
|
- `docker exec <container-name> date` returns 1970
|
||||||
|
|
||||||
## I want to reverse proxy a application which defaults to https with a selfsigned certificate {#strict-proxy}
|
## I want to reverse proxy a application which defaults to https with a selfsigned certificate {#strict-proxy}
|
||||||
|
|
||||||
|
|
|
@ -12,4 +12,3 @@ The team resides primarily in our Discord server. We also have a forum if chat i
|
||||||
| Forum | [https://discourse.linuxserver.io](https://discourse.linuxserver.io) |
|
| Forum | [https://discourse.linuxserver.io](https://discourse.linuxserver.io) |
|
||||||
|
|
||||||
For those interested in our CI environment via Jenkins: [https://ci.linuxserver.io/](https://ci.linuxserver.io/)
|
For those interested in our CI environment via Jenkins: [https://ci.linuxserver.io/](https://ci.linuxserver.io/)
|
||||||
|
|
||||||
|
|
|
@ -4,11 +4,12 @@
|
||||||
* Created 2021-08-18
|
* Created 2021-08-18
|
||||||
* Updated 2021-08-18
|
* Updated 2021-08-18
|
||||||
|
|
||||||
|
|
||||||
## Charter
|
## Charter
|
||||||
|
|
||||||
We will at all times attempt to keep a surplus of $6,000 in the bank account, or an amount which covers 3 years of expenses, whichever is higher. All other money will be disbursed by agreement of a general consensus of linuxserver.io staff members.
|
We will at all times attempt to keep a surplus of $6,000 in the bank account, or an amount which covers 3 years of expenses, whichever is higher. All other money will be disbursed by agreement of a general consensus of linuxserver.io staff members.
|
||||||
|
|
||||||
## Annual Expenses
|
## Annual Expenses
|
||||||
|
|
||||||
* DigitalOcean yearly costs (currently paid for) **$1200**
|
* DigitalOcean yearly costs (currently paid for) **$1200**
|
||||||
* AWS **~$200**
|
* AWS **~$200**
|
||||||
* Contabo hosting **$287.76**
|
* Contabo hosting **$287.76**
|
||||||
|
@ -18,9 +19,11 @@ We will at all times attempt to keep a surplus of $6,000 in the bank account, or
|
||||||
* Various licenses **~$150**
|
* Various licenses **~$150**
|
||||||
|
|
||||||
## Votes
|
## Votes
|
||||||
|
|
||||||
In order for money to be approved for a project, the requesting member must go through every effort to bring to vote a fully formed idea that is ready to be actioned. This means that all the legwork is done before bringing an idea to vote, or at least as much as is reasonably possible. A vote will last for 3 days in order to give all team members the opportunity to participate without unnecessarily causing delays. A generasl consensus will need to be reached in order for it to proceed.
|
In order for money to be approved for a project, the requesting member must go through every effort to bring to vote a fully formed idea that is ready to be actioned. This means that all the legwork is done before bringing an idea to vote, or at least as much as is reasonably possible. A vote will last for 3 days in order to give all team members the opportunity to participate without unnecessarily causing delays. A generasl consensus will need to be reached in order for it to proceed.
|
||||||
|
|
||||||
## Acceptable uses of money
|
## Acceptable uses of money
|
||||||
|
|
||||||
* Hardware/Software needed to help the group reach a specific goal
|
* Hardware/Software needed to help the group reach a specific goal
|
||||||
* Stationary + Related items for possible Conventions
|
* Stationary + Related items for possible Conventions
|
||||||
* Convention Fees (Both Attendence and Travel)
|
* Convention Fees (Both Attendence and Travel)
|
||||||
|
@ -30,4 +33,5 @@ In order for money to be approved for a project, the requesting member must go t
|
||||||
* Donations to upstream projects
|
* Donations to upstream projects
|
||||||
|
|
||||||
## Links
|
## Links
|
||||||
|
|
||||||
* [https://opencollective.com/linuxserver#category-BUDGET](https://opencollective.com/linuxserver#category-BUDGET)
|
* [https://opencollective.com/linuxserver#category-BUDGET](https://opencollective.com/linuxserver#category-BUDGET)
|
||||||
|
|
|
@ -337,4 +337,3 @@
|
||||||
| [hedgedoc](https://github.com/linuxserver/docker-hedgedoc/) | [HedgeDoc](https://hedgedoc.org/) gives you access to all your files wherever you are. |
|
| [hedgedoc](https://github.com/linuxserver/docker-hedgedoc/) | [HedgeDoc](https://hedgedoc.org/) gives you access to all your files wherever you are. |
|
||||||
| [raneto](https://github.com/linuxserver/docker-raneto/) | [raneto](http://raneto.com/) - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase. |
|
| [raneto](https://github.com/linuxserver/docker-raneto/) | [raneto](http://raneto.com/) - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase. |
|
||||||
| [wikijs](https://github.com/linuxserver/docker-wikijs/) | [wikijs](https://github.com/Requarks/wiki) A modern, lightweight and powerful wiki app built on NodeJS. |
|
| [wikijs](https://github.com/linuxserver/docker-wikijs/) | [wikijs](https://github.com/Requarks/wiki) A modern, lightweight and powerful wiki app built on NodeJS. |
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ if using compose. Where possible, to improve security, we recommend mounting the
|
||||||
|
|
||||||
One example use case is our Piwigo container has a plugin that supports video, but requires ffmpeg to be installed. No problem. Add this bad boy into a script file (can be named anything) and you're good to go.
|
One example use case is our Piwigo container has a plugin that supports video, but requires ffmpeg to be installed. No problem. Add this bad boy into a script file (can be named anything) and you're good to go.
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
echo "**** installing ffmpeg ****"
|
echo "**** installing ffmpeg ****"
|
||||||
|
@ -59,7 +59,7 @@ if using compose. Where possible, to improve security, we recommend mounting the
|
||||||
|
|
||||||
Running cron in our containers is now as simple as a single file. Drop this script in `/custom-services.d/cron` and it will run automatically in the container:
|
Running cron in our containers is now as simple as a single file. Drop this script in `/custom-services.d/cron` and it will run automatically in the container:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
#!/usr/bin/with-contenv bash
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
/usr/sbin/crond -f -S -l 0 -c /etc/crontabs
|
/usr/sbin/crond -f -S -l 0 -c /etc/crontabs
|
||||||
|
@ -83,7 +83,7 @@ This allows community members to publish a relatively static pile of logic that
|
||||||
|
|
||||||
An example of how this logic can be used to greatly expand the functionality of our base containers would be to add VPN support to a Transmission container:
|
An example of how this logic can be used to greatly expand the functionality of our base containers would be to add VPN support to a Transmission container:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
docker create \
|
docker create \
|
||||||
--name=transmission \
|
--name=transmission \
|
||||||
--cap-add=NET_ADMIN \
|
--cap-add=NET_ADMIN \
|
||||||
|
|
|
@ -6,7 +6,7 @@ You may find at some point you need to view the internal data of a container.
|
||||||
|
|
||||||
Particularly useful when debugging the application - to shell in to one of our containers, run the following:
|
Particularly useful when debugging the application - to shell in to one of our containers, run the following:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker exec -it <container_name> /bin/bash
|
docker exec -it <container_name> /bin/bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ docker exec -it <container_name> /bin/bash
|
||||||
|
|
||||||
The vast majority of our images are configured to output the application logs to the console, which in Docker's terms means you can access them using the `docker logs` command:
|
The vast majority of our images are configured to output the application logs to the console, which in Docker's terms means you can access them using the `docker logs` command:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker logs -f --tail=<number_of_lines_to_start_with> <container_name>
|
docker logs -f --tail=<number_of_lines_to_start_with> <container_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ The `--tail` argument is optional, but useful if the application has been runnin
|
||||||
|
|
||||||
To make life simpler for yourself here's a handy bash alias to do some of the leg work for you:
|
To make life simpler for yourself here's a handy bash alias to do some of the leg work for you:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
# ~/.bash_aliases
|
# ~/.bash_aliases
|
||||||
alias dtail='docker logs -tf --tail="50" "$@"'
|
alias dtail='docker logs -tf --tail="50" "$@"'
|
||||||
```
|
```
|
||||||
|
@ -35,13 +35,12 @@ If you are experiencing issues with one of our containers, it helps us to know w
|
||||||
|
|
||||||
To obtain the build version for the container:
|
To obtain the build version for the container:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker inspect -f '{{ index .Config.Labels "build_version" }}' <container_name>
|
docker inspect -f '{{ index .Config.Labels "build_version" }}' <container_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
Or the image:
|
Or the image:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/<image_name>
|
docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/<image_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ A container bundles all the libraries required by an application to run, you no
|
||||||
|
|
||||||
To get started, not much. You will need to know about some of the terminology or concepts when performing more advanced tasks or troubleshooting but getting started couldn't be much simpler.
|
To get started, not much. You will need to know about some of the terminology or concepts when performing more advanced tasks or troubleshooting but getting started couldn't be much simpler.
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker run hello-world
|
docker run hello-world
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -28,11 +28,10 @@ Containers are completely sandboxed environments by the Linux kernel. It may hel
|
||||||
|
|
||||||
By default a running container has absolutely no context of the world around it. Out the box you cannot connect from the outside world to the running webservers on ports 80 and 443 below. To allow entry to the sandbox from the outside world we must explicitly allow entry using the `-p` flag.
|
By default a running container has absolutely no context of the world around it. Out the box you cannot connect from the outside world to the running webservers on ports 80 and 443 below. To allow entry to the sandbox from the outside world we must explicitly allow entry using the `-p` flag.
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker run -d --name=letsencrypt -p 80:80 -p 443:443 linuxserver/letsencrypt
|
docker run -d --name=letsencrypt -p 80:80 -p 443:443 linuxserver/letsencrypt
|
||||||
```
|
```
|
||||||
|
|
||||||
Take this concept and multiply it across all aspects of a running application. Ports, volumes \(i.e. the files you want to be available inside the container from outside the container\), environment variables and so on. For us as developers this allows us to isolate your system from troubleshooting as the box the container is running in \(the container\) is identical to the next.
|
Take this concept and multiply it across all aspects of a running application. Ports, volumes \(i.e. the files you want to be available inside the container from outside the container\), environment variables and so on. For us as developers this allows us to isolate your system from troubleshooting as the box the container is running in \(the container\) is identical to the next.
|
||||||
|
|
||||||
Containers are an amazing way to run applications in a secure, sandboxed way.
|
Containers are an amazing way to run applications in a secure, sandboxed way.
|
||||||
|
|
||||||
|
|
|
@ -8,40 +8,49 @@ Note that when inputting data for variables, you must follow standard YAML rules
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
### Install Option 1 (recommended):
|
- Install Option 1 (recommended)
|
||||||
Starting with version 2, Docker started publishing `docker compose` as a go based plugin for docker (rather than a python based standalone binary). And they also publish this plugin for various arches, including x86_64, armhf and aarch64 (as opposed to the x86_64 only binaries for v1.X). Therefore we updated our recommended install option to utilize the plugin.
|
|
||||||
|
|
||||||
You can install `docker compose` via the following commands:
|
Starting with version 2, Docker started publishing `docker compose` as a go based plugin for docker (rather than a python based standalone binary). And they also publish this plugin for various arches, including x86_64, armhf and aarch64 (as opposed to the x86_64 only binaries for v1.X). Therefore we updated our recommended install option to utilize the plugin.
|
||||||
```
|
|
||||||
ARCH=$(uname -m) && [[ "${ARCH}" == "armv7l" ]] && ARCH="armv7"
|
|
||||||
sudo mkdir -p /usr/local/lib/docker/cli-plugins
|
|
||||||
sudo curl -SL "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-${ARCH}" -o /usr/local/lib/docker/cli-plugins/docker-compose
|
|
||||||
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
|
|
||||||
```
|
|
||||||
|
|
||||||
Assuming you already have docker (or at the very least docker-cli) installed, preferably from the official docker repos, running `docker compose version` should display the compose version.
|
You can install `docker compose` via the following commands:
|
||||||
|
|
||||||
If you don't have docker installed yet, we recommend installing it via the following commands:
|
```shell
|
||||||
```
|
ARCH=$(uname -m) && [[ "${ARCH}" == "armv7l" ]] && ARCH="armv7"
|
||||||
curl -fsSL https://get.docker.com -o get-docker.sh
|
sudo mkdir -p /usr/local/lib/docker/cli-plugins
|
||||||
sh get-docker.sh
|
sudo curl -SL "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-${ARCH}" -o /usr/local/lib/docker/cli-plugins/docker-compose
|
||||||
```
|
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
|
||||||
|
```
|
||||||
|
|
||||||
#### v1.X compatibility:
|
Assuming you already have docker (or at the very least docker-cli) installed, preferably from the official docker repos, running `docker compose version` should display the compose version.
|
||||||
As v2 runs as a plugin instead of a standalone binary, it is invoked by `docker compose args` instead of `docker-compose args`. There are also some slight differences in how the yaml is operated as well. To make migration easier, Docker released a replacement binary for `docker-compose` on x86_64 and aarch64 platforms. More info on that can be found at the [upstream repo](https://github.com/docker/compose-switch).
|
|
||||||
|
|
||||||
### Install Option 2:
|
If you don't have docker installed yet, we recommend installing it via the following commands:
|
||||||
You can install docker-compose using our [docker-compose image](https://github.com/linuxserver/docker-docker-compose) via a run script. You can simply run the following commands on your system and you should have a functional install that you can call from anywhere as `docker-compose`:
|
|
||||||
```
|
```shell
|
||||||
sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/v2/run.sh -o /usr/local/bin/docker-compose
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
||||||
sudo chmod +x /usr/local/bin/docker-compose
|
sh get-docker.sh
|
||||||
```
|
```
|
||||||
In order to update the local image, you can run the following commands:
|
|
||||||
```
|
- v1.X compatibility
|
||||||
docker pull linuxserver/docker-compose:"${DOCKER_COMPOSE_IMAGE_TAG:-v2}"
|
|
||||||
docker image prune -f
|
As v2 runs as a plugin instead of a standalone binary, it is invoked by `docker compose args` instead of `docker-compose args`. There are also some slight differences in how the yaml is operated as well. To make migration easier, Docker released a replacement binary for `docker-compose` on x86_64 and aarch64 platforms. More info on that can be found at the [upstream repo](https://github.com/docker/compose-switch).
|
||||||
```
|
|
||||||
The above commands will use the v2 images (although invoked by`docker-compose` instead of `docker compose`). If you'd like to use v1 images, you can set an env var `DOCKER_COMPOSE_IMAGE_TAG=alpine`, `DOCKER_COMPOSE_IMAGE_TAG=ubuntu` in your respective `.profile`. Alternatively you can set that var to a versioned image tag like `v2-2.4.1-r1` or `version-alpine-1.27.4` to pin it to a specific docker-compose version.
|
- Install Option 2
|
||||||
|
|
||||||
|
You can install docker-compose using our [docker-compose image](https://github.com/linuxserver/docker-docker-compose) via a run script. You can simply run the following commands on your system and you should have a functional install that you can call from anywhere as `docker-compose`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/v2/run.sh -o /usr/local/bin/docker-compose
|
||||||
|
sudo chmod +x /usr/local/bin/docker-compose
|
||||||
|
```
|
||||||
|
|
||||||
|
In order to update the local image, you can run the following commands:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker pull linuxserver/docker-compose:"${DOCKER_COMPOSE_IMAGE_TAG:-v2}"
|
||||||
|
docker image prune -f
|
||||||
|
```
|
||||||
|
|
||||||
|
The above commands will use the v2 images (although invoked by`docker-compose` instead of `docker compose`). If you'd like to use v1 images, you can set an env var `DOCKER_COMPOSE_IMAGE_TAG=alpine`, `DOCKER_COMPOSE_IMAGE_TAG=ubuntu` in your respective `.profile`. Alternatively you can set that var to a versioned image tag like `v2-2.4.1-r1` or `version-alpine-1.27.4` to pin it to a specific docker-compose version.
|
||||||
|
|
||||||
## Single service Usage
|
## Single service Usage
|
||||||
|
|
||||||
|
@ -143,33 +152,34 @@ If your compose yaml makes use of `.env`, please post an output of `docker compo
|
||||||
|
|
||||||
Create or open the file `~/.bash_aliases` and populate with the following content:
|
Create or open the file `~/.bash_aliases` and populate with the following content:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
alias dcup='docker compose -f /opt/docker-compose.yml up -d' #brings up all containers if one is not defined after dcup
|
alias dcup='docker compose -f /opt/docker-compose.yml up -d' #brings up all containers if one is not defined after dcup
|
||||||
alias dcdown='docker compose -f /opt/docker-compose.yml stop' #brings down all containers if one is not defined after dcdown
|
alias dcdown='docker compose -f /opt/docker-compose.yml stop' #brings down all containers if one is not defined after dcdown
|
||||||
alias dcpull='docker compose -f /opt/docker-compose.yml pull' #pulls all new images is specified after dcpull
|
alias dcpull='docker compose -f /opt/docker-compose.yml pull' #pulls all new images is specified after dcpull
|
||||||
alias dclogs='docker compose -f /opt/docker-compose.yml logs -tf --tail="50" '
|
alias dclogs='docker compose -f /opt/docker-compose.yml logs -tf --tail="50" '
|
||||||
alias dtail='docker logs -tf --tail="50" "$@"'
|
alias dtail='docker logs -tf --tail="50" "$@"'
|
||||||
```
|
```
|
||||||
|
|
||||||
If the `docker-compose.yml` file is in a home directory, the following can be put in the `~/.bash_aliases` file.
|
If the `docker-compose.yml` file is in a home directory, the following can be put in the `~/.bash_aliases` file.
|
||||||
```
|
|
||||||
|
```shell
|
||||||
alias dcup='docker-compose -f ~/docker-compose.yml up -d' #brings up all containers if one is not defined after dcup
|
alias dcup='docker-compose -f ~/docker-compose.yml up -d' #brings up all containers if one is not defined after dcup
|
||||||
alias dcdown='docker-compose -f ~/docker-compose.yml stop' #brings down all containers if one is not defined after dcdown
|
alias dcdown='docker-compose -f ~/docker-compose.yml stop' #brings down all containers if one is not defined after dcdown
|
||||||
alias dcpull='docker-compose -f ~/docker-compose.yml pull' #pulls all new images unless one is specified
|
alias dcpull='docker-compose -f ~/docker-compose.yml pull' #pulls all new images unless one is specified
|
||||||
alias dclogs='docker-compose -f ~/docker-compose.yml logs -tf --tail="50" '
|
alias dclogs='docker-compose -f ~/docker-compose.yml logs -tf --tail="50" '
|
||||||
alias dtail='docker logs -tf --tail="50" "$@"'
|
alias dtail='docker logs -tf --tail="50" "$@"'
|
||||||
```
|
```
|
||||||
|
|
||||||
There are multiple ways to see the logs of your containers. In some instances, using `docker logs` is preferable to `docker compose logs`. By default `docker logs` will not run unless you define which service the logs are coming from. The `docker compose logs` will pull all of the logs for the services defined in the `docker-compose.yml` file.
|
There are multiple ways to see the logs of your containers. In some instances, using `docker logs` is preferable to `docker compose logs`. By default `docker logs` will not run unless you define which service the logs are coming from. The `docker compose logs` will pull all of the logs for the services defined in the `docker-compose.yml` file.
|
||||||
|
|
||||||
When asking for help, you should post your logs or be ready to provide logs if someone requests it. If you are running multiple containers in your `docker-compose.yml` file, it is not helpful to submit **all** of the logs. If you are experiencing issues with a single service, say Heimdall, then you would want to get your logs using `docker logs heimdall` or `docker compose logs heimdall`. The bash_alias for `dclogs` can be used if you define your service after you've typed the alias. Likewise, the bash_alias `detail` will not run without defining the service after it.
|
When asking for help, you should post your logs or be ready to provide logs if someone requests it. If you are running multiple containers in your `docker-compose.yml` file, it is not helpful to submit **all** of the logs. If you are experiencing issues with a single service, say Heimdall, then you would want to get your logs using `docker logs heimdall` or `docker compose logs heimdall`. The bash_alias for `dclogs` can be used if you define your service after you've typed the alias. Likewise, the bash_alias `detail` will not run without defining the service after it.
|
||||||
|
|
||||||
|
|
||||||
Some distributions, like Ubuntu, already have the code snippet below in the `~/.bashrc` file. If it is not included, you'll need to add the following to your `~/.bashrc` file in order for the aliases file to be picked up:
|
Some distributions, like Ubuntu, already have the code snippet below in the `~/.bashrc` file. If it is not included, you'll need to add the following to your `~/.bashrc` file in order for the aliases file to be picked up:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
if [ -f ~/.bash_aliases ]; then
|
if [ -f ~/.bash_aliases ]; then
|
||||||
. ~/.bash_aliases
|
. ~/.bash_aliases
|
||||||
fi
|
fi
|
||||||
```
|
```
|
||||||
|
|
||||||
Once configured, you can run `source ~/.bashrc` or log out and the log in again. Now you can type `dcpull` or `dcup` to manage your entire fleet of containers at once. It's like magic.
|
Once configured, you can run `source ~/.bashrc` or log out and the log in again. Now you can type `dcpull` or `dcup` to manage your entire fleet of containers at once. It's like magic.
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,7 @@ All synchronized repositories and images returned.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
{% endapi-method-response-example %}
|
{% endapi-method-response-example %}
|
||||||
{% endapi-method-response %}
|
{% endapi-method-response %}
|
||||||
{% endapi-method-spec %}
|
{% endapi-method-spec %}
|
||||||
|
@ -135,7 +136,7 @@ The username and password that you define must then be provided as part of Fleet
|
||||||
|
|
||||||
All primary configuration for Fleet at runtime is loaded in via a `fleet.properties` file. This can be located anywhere on the file system, and is loaded in via a Runtime argument:
|
All primary configuration for Fleet at runtime is loaded in via a `fleet.properties` file. This can be located anywhere on the file system, and is loaded in via a Runtime argument:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
# Runtime
|
# Runtime
|
||||||
fleet.app.port=8080
|
fleet.app.port=8080
|
||||||
|
|
||||||
|
@ -190,4 +191,3 @@ When starting Fleet for the first time it will create a default user in order fo
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
You should change the default password for this user as soon as possible! This can be done via the `Admin` -> `Users` menu options.
|
You should change the default password for this user as soon as possible! This can be done via the `Admin` -> `Users` menu options.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ We do this because we believe that it makes it easier to answer the common quest
|
||||||
|
|
||||||
To create a container from one of our images, you must use either `docker create` or `docker run`. Each image follows the same pattern in the command when creating a container:
|
To create a container from one of our images, you must use either `docker create` or `docker run`. Each image follows the same pattern in the command when creating a container:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker create \
|
docker create \
|
||||||
--name=<container_name> \
|
--name=<container_name> \
|
||||||
-v <path_to_data>:/config \
|
-v <path_to_data>:/config \
|
||||||
|
@ -28,4 +28,3 @@ docker create \
|
||||||
-p <host_port>:<app_port> \
|
-p <host_port>:<app_port> \
|
||||||
linuxserver/<image_name>
|
linuxserver/<image_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ Using the `PUID` and `PGID` allows our containers to map the container's interna
|
||||||
|
|
||||||
When creating a container from one of our images, ensure you use the `-e PUID` and `-e PGID` options in your docker command:
|
When creating a container from one of our images, ensure you use the `-e PUID` and `-e PGID` options in your docker command:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker create --name=beets -e PUID=1000 -e PGID=1000 linuxserver/beets
|
docker create --name=beets -e PUID=1000 -e PGID=1000 linuxserver/beets
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -30,7 +30,6 @@ environment:
|
||||||
|
|
||||||
It is most likely that you will use the `id` of yourself, which can be obtained by running the command below. The two values you will be interested in are the `uid` and `gid`.
|
It is most likely that you will use the `id` of yourself, which can be obtained by running the command below. The two values you will be interested in are the `uid` and `gid`.
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
id $user
|
id $user
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ Docker containers are, for the most part, immutable. This means that important c
|
||||||
|
|
||||||
Firstly, stop the container.
|
Firstly, stop the container.
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker stop <container_name>
|
docker stop <container_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ Once the container has been stopped, remove it.
|
||||||
|
|
||||||
> **Important**: Did you remember to persist the `/config` volume when you originally created the container? Bear in mind, you'll lose any configuration inside the container if this volume was not persisted. [Read up on why this is important](volumes.md).
|
> **Important**: Did you remember to persist the `/config` volume when you originally created the container? Bear in mind, you'll lose any configuration inside the container if this volume was not persisted. [Read up on why this is important](volumes.md).
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker rm <container_name>
|
docker rm <container_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ docker rm <container_name>
|
||||||
|
|
||||||
Now you can pull the latest version of the application image from Docker Hub.
|
Now you can pull the latest version of the application image from Docker Hub.
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker pull linuxserver/<image_name>
|
docker pull linuxserver/<image_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ docker pull linuxserver/<image_name>
|
||||||
|
|
||||||
Finally, you can recreate the container. This is often cited as the most arduous task as it requires you to remember all of the mappings you set beforehand. You can help mitigate this step by using Docker Compose instead - this topic has been [outlined in our documentation](docker-compose.md).
|
Finally, you can recreate the container. This is often cited as the most arduous task as it requires you to remember all of the mappings you set beforehand. You can help mitigate this step by using Docker Compose instead - this topic has been [outlined in our documentation](docker-compose.md).
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker create \
|
docker create \
|
||||||
--name=<container_name> \
|
--name=<container_name> \
|
||||||
-v <path_to_data>:/config \
|
-v <path_to_data>:/config \
|
||||||
|
@ -50,14 +50,14 @@ docker create \
|
||||||
|
|
||||||
It is also possible to update a single container using Docker Compose:
|
It is also possible to update a single container using Docker Compose:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker-compose pull linuxserver/<image_name>
|
docker-compose pull linuxserver/<image_name>
|
||||||
docker-compose up -d <container_name>
|
docker-compose up -d <container_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
Or, to update all containers at once:
|
Or, to update all containers at once:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker-compose pull
|
docker-compose pull
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
|
@ -66,7 +66,6 @@ docker-compose up -d
|
||||||
|
|
||||||
Whenever a Docker image is updated, a fresh version of that image gets downloaded and stored on your host machine. Doing this, however, does not remove the _old_ version of the image. Eventually you will end up with a lot of disk space used up by stale images. You can `prune` old images from your system, which will free up space:
|
Whenever a Docker image is updated, a fresh version of that image gets downloaded and stored on your host machine. Doing this, however, does not remove the _old_ version of the image. Eventually you will end up with a lot of disk space used up by stale images. You can `prune` old images from your system, which will free up space:
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
docker image prune
|
docker image prune
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -23,4 +23,3 @@ The above example shows how the usage of `-v` has mapped the host machine's `/op
|
||||||
> **Remember**: When dealing with mapping overlays, it always reads `host:container`
|
> **Remember**: When dealing with mapping overlays, it always reads `host:container`
|
||||||
|
|
||||||
You can do this for as many directories as required by either you or the container itself. Our rule-of-thumb is to _always_ map the `/config` directory as this contains pertinent runtime configuration for the underlying application. For applications that require further data, such as media, our documentation will clearly indicate which internal directories need mapping.
|
You can do this for as many directories as required by either you or the container itself. Our rule-of-thumb is to _always_ map the `/config` directory as this contains pertinent runtime configuration for the underlying application. For applications that require further data, such as media, our documentation will clearly indicate which internal directories need mapping.
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue