-
Notifications
You must be signed in to change notification settings - Fork 20
Docker
- container
- image
- volume
-
Problem: neither DNS resolution, nor ping works
-
Solution: check the accepted answer at https://stackoverflow.com/a/23811974/3580502:
sudo vim /etc/NetworkManager/NetworkManager.conf # comment the "dns=dnsmasq" line sudo service network-manager restart
- Stop the service with
sudo service docker stop
. - Create or edit the file
/etc/docker/daemon.json
. - Add the following content
{ "data-root": "/path/to/new/docker/data/dir" }
-
Prior to Docker 17,
graph
should be used instead ofdata-root
. - Copy the contents
sudo rsync -aP /var/lib/docker/ /path/to/your/docker-data
- Restart the service
sudo service docker start
The steps are from this article.
As of March 2021, you can install a not-too-ancient version of Docker, 19.03.8, on Ubuntu 20.04 by simply issuing:
sudo apt install -y docker.io
sudo gpasswd -a $USER docker
There are two options: either reboot the machine (which is often impractical/slow on a big machine) or run the following command in each shell session:
newgrp docker
The previous approach was to use sudo usermod -aG docker $USER
but it required a restart (even with newgrp
).
docker rmi -f $(docker images | grep "<none>" | awk '{print $3}')
docker exec -it $CONTAINER bash
echo $HOSTNAME
Detach from container without stopping it then attach to the same console
- Ctrl+P, Ctrl+Q
docker attach «CONTAINER ID»
docker save $(docker images --format "{{.Repository}}:{{.Tag}}" | grep -v "<none>" ; docker images -qa) | pv | zstd -10 -T0 -o docker.zst
zstdcat docker.zst | pv | docker load
Change these if needed:
- remove
pv
if showing progress is not needed - use other compression
By default, Docker containers running on Linux write to mounted volumes as the root
user. (Note that this problem does not occur on Mac OS due to osxfs remapping the owner in the background.)
The recommended package to use depends on the system running in the container:
- On Debian/Ubuntu, use
gosu
. - On Alpine Linux, use
su-exec
.
Fedora images can be based on the gosu/fedora
image.
Using an Alpine Linux setup, both gosu
and su-exec
are displayed in a PR to the LDBC SNB Datagen (which deprecated the usage of gosu
in favour of su-exec
).
For a more comprehensive example, see the Neo4j Docker container's entrypoint.
Recursive chown might be slow and it blocks others accessing the mounted files while the container is running. In these cases try to avoid it.
Options:
sudo chown -R $USER:$USER folder
-
docker
run
[the image used / a very simple image with root privileges]/bin/chown -R $(stat -c '%u' ..):$(stat -c '%g' ..) .
- Pros: no need for sudo password
If you only have Podman, considering adding a soft symlink (for a global alias) to /usr/bin/docker
that points to the podman
binary.
Problem: apt install
prompts for timezone data and then times out.
debconf: falling back to frontend: Readline
Configuring tzdata
------------------
Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.
1. Africa 4. Australia 7. Atlantic 10. Pacific 13. Etc
2. America 5. Arctic 8. Europe 11. SystemV
3. Antarctica 6. Asia 9. Indian 12. US
Solution:
Add the following environment variable to the Dockerfile:
ENV DEBIAN_FRONTEND noninteractive
Remark: This is also listed on the Linux page but it most commonly occurs in Docker.
wget -q https://registry.hub.docker.com/v1/repositories/$REPOSITORY/tags -O - | jq -r '.[].name'
# or
curl -s https://registry.hub.docker.com/v2/repositories/$REPOSITORY/tags?page_size=10000 | jq -r '.results[].name'
Scheduled cron jobs in GitHub Actions are disabled when no repository activity has occurred in 60 days. Repo admin receives e-mail notification. (docs)