-
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.
sudo gpasswd -a $USER docker
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
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.