Endre Docker.sock-filbane: Steg-for-steg guide

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.