Forstå og endre Docker Socket-filbanen
Er du nysgjerrig på hvordan du kan endre plasseringen til docker.sock-filen? Her får du en forklaring og en steg-for-steg guide.
Hva er Docker Socket?
Docker socket-filen, som standard ligger i /var/run/docker.sock, er kommunikasjonskanalen til Docker-demonen. Den fungerer som et grensesnitt for Docker API-et. Docker CLI bruker denne kontakten for å utføre kommandoer.
La oss utforske hvordan du kan endre hvor denne viktige filen er plassert.
Stopp Docker-tjenesten
Før du endrer noe, må Docker-tjenesten stoppes. For å sjekke statusen og bekrefte at den er avsluttet, bruk følgende kommandoer:
[email protected]:~$ sudo service docker stop [email protected]:~$ sudo service docker status
Du bør se en melding som indikerer at Docker-tjenesten er inaktiv.
Modifiser konfigurasjonsfilene
I dette eksemplet endrer vi stien fra /var/run/docker.sock til /home/tipsbilk.net/docker.sock.
- Først må du endre docker.conf-filen i /etc/init/-mappen. Det eneste du trenger å endre er linjen som definerer DOCKER_SOCKET-banen.
[email protected]:~$ sudo gedit /etc/init/docker.conf description "Docker daemon" start on (filesystem and net-device-up IFACE!=lo) stop on runlevel [!2345] limit nofile 524288 1048576 # Having non-zero limits causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. limit nproc unlimited unlimited respawn kill timeout 20 pre-start script # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount if grep -v '^#' /etc/fstab | grep -q cgroup || [ ! -e /proc/cgroups ] || [ ! -d /sys/fs/cgroup ]; then exit 0 fi if ! mountpoint -q /sys/fs/cgroup; then mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup fi ( cd /sys/fs/cgroup for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do mkdir -p $sys if ! mountpoint -q $sys; then if ! mount -n -t cgroup -o $sys cgroup $sys; then rmdir $sys || true fi fi done ) end script script # modify these in /etc/default/$UPSTART_JOB (/etc/default/docker) DOCKERD=/usr/bin/dockerd DOCKER_OPTS= if [ -f /etc/default/$UPSTART_JOB ]; then . /etc/default/$UPSTART_JOB fi exec "$DOCKERD" $DOCKER_OPTS --raw-logs end script # Don't emit "started" event until docker.sock is ready. # See https://github.com/docker/docker/issues/6647 post-start script DOCKER_OPTS= DOCKER_SOCKET= if [ -f /etc/default/$UPSTART_JOB ]; then . /etc/default/$UPSTART_JOB fi if ! printf "%s" "$DOCKER_OPTS" | grep -qE -e '-H|--host'; then DOCKER_SOCKET=/home/tipsbilk.net/docker.sock else DOCKER_SOCKET=$(printf "%s" "$DOCKER_OPTS" | grep -oP -e '(-H|--host)W*unix://K(S+)' | sed 1q) fi if [ -n "$DOCKER_SOCKET" ]; then while ! [ -e "$DOCKER_SOCKET" ]; do initctl status $UPSTART_JOB | grep -qE "(stop|respawn)/" && exit 1 echo "Waiting for $DOCKER_SOCKET" sleep 0.1 done echo "$DOCKER_SOCKET is up" fi end script
- Deretter endrer du docker.socket-filen i /lib/systemd/system/ med den nye plasseringen.
[email protected]:~$ sudo gedit /lib/systemd/system/docker.socket [Unit] Description=Docker Socket for the API PartOf=docker.service [Socket] ListenStream=/home/tipsbilk.net/docker.sock SocketMode=0660 SocketUser=root SocketGroup=docker [Install] WantedBy=sockets.target
For å aktivere endringene, bruk kommandoen:
[email protected]:~$ sudo systemctl daemon-reload
Start Docker på nytt
Nå kan du starte Docker-tjenesten igjen og bekrefte at endringene er på plass. Sjekk statusen, og du vil se den oppdaterte stien til docker.sock-filen i loggen.
[email protected]:~$ sudo service docker start [email protected]:~$ sudo service docker status
Du skal nå se at Docker er aktiv og at den nye stien er brukt i meldingen «API listen on /home/tipsbilk.net/docker.sock».
Kontroller at filen ble opprettet ved å kjøre ls-kommandoen:
[email protected]:~$ ls -l
Du vil nå se at docker.sock filen finnes på den nye stien.
Gratulerer, du har endret plasseringen av Docker socket-filen!
Hvis du ønsker å lære mer om Docker, men har lite tid, anbefales denne raske innføringen.
Håper du syntes denne veiledningen var nyttig! Del den gjerne med andre.