Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter DevOps Zuletzt aktualisiert: September 23, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

Sie fragen sich, wie Sie den Dateipfad von docker.sock ändern können?

Was ist Docker Socket?

Die Docker Socket-Datei befindet sich unter /var/run/docker.sock

Sie wird standardmäßig für die Kommunikation mit dem Haupt-Docker-Daemon (Prozess) verwendet. Es ist der Einstiegspunkt für eine Docker-API. Dieser Socket wird von Docker CLI standardmäßig verwendet, um Docker-Befehle auszuführen.

Ich zeige Ihnen, wie Sie den Speicherort der Docker Sock-Datei ändern können.

Docker stoppen

Wenn der Docker-Dienst auf Ihrem System läuft, sollten Sie ihn zunächst stoppen. Um zu bestätigen, dass er angehalten wurde, führen Sie den Befehl status aus.

geekflare@geekflare:~$ sudo service docker stop
geekflare@geekflare:~$ sudo service docker status
● docker.service - Docker Application Container Engine
Geladen: geladen (/lib/systemd/system/docker.service; aktiviert; vendor preset: aktiviert)
Aktiv: inaktiv (tot) seit Sat 2019-11-23 15:37:00 EST; vor 4s
Docs: https://docs.docker.com
Prozess: 1474 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=0/SUCCESS)
Haupt-PID: 1474 (code=exited, status=0/SUCCESS)

Nov 10 01:56:49 geekflare dockerd[1474]: time="2019-11-10T01:56:49-05:00" level=error msg="2019/11/10 06:56:49 Entering go-plugins-helper
Nov 10 01:56:49 geekflare dockerd[1474]: time="2019-11-10T01:56:49-05:00" level=error msg="time=\"2019-11-10T06:56:49Z\" level=debug msg=
Nov 10 01:56:49 geekflare dockerd[1474]: time="2019-11-10T01:56:49-05:00" level=error msg="time=\"2019-11-10T06:56:49Z\" level=error msg=
Nov 10 01:57:23 geekflare dockerd[1474]: time="2019-11-10T01:57:23.635519865-05:00" level=info msg="Container 3141793b98f315dc90a57d81006
Nov 10 01:57:24 geekflare dockerd[1474]: time="2019-11-10T01:57:24.091797103-05:00" level=info msg="ignoring event" module=libcontainerd
Nov 23 15:36:56 geekflare systemd[1]: Stopping Docker Application Container Engine...
Nov 23 15:36:56 geekflare dockerd[1474]: time="2019-11-23T15:36:56.992795411-05:00" level=info msg="Processing signal 'terminated'"
Nov 23 15:36:58 geekflare dockerd[1474]: time="2019-11-23T15:36:58.234014533-05:00" level=info msg="ignoring event" module=libcontainerd
Nov 23 15:37:00 geekflare dockerd[1474]: time="2019-11-23T15:37:00.403572098-05:00" level=info msg="ignoring event" module=libcontainerd
Nov 23 15:37:00 geekflare systemd[1]: Docker Application Container Engine gestoppt.

Bearbeiten Sie docker.conf und docker.socket

Im Folgenden ändere ich den Pfad von /var/run/docker.sock zu /home/geekflare/docker.sock

  • Bearbeiten Sie die Datei docker.conf im Verzeichnis /etc/init/ mit dem neuen Speicherort. Sie müssen nur eine Zeile mit dem Pfad DOCKER_SOCKET bearbeiten.
geekflare@geekflare:~$ sudo gedit /etc/init/docker.conf

Beschreibung "Docker Daemon"

start on (Dateisystem und net-device-up IFACE!=lo)
stoppen bei runlevel [!2345]

limit nofile 524288 1048576

# Limits ungleich Null führen zu Leistungsproblemen aufgrund des Buchhaltungs-Overheads
# im Kernel. Wir empfehlen die Verwendung von cgroups, um Container-lokales Accounting durchzuführen.
limit nproc unbegrenzt unbegrenzt

respawn

kill timeout 20

Vor-Start-Skript
# siehe auch 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 ]; dann
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; dann
if ! mount -n -t cgroup -o $sys cgroup $sys; then
rmdir $sys || true
fi
fi
done
)
Skript beenden

Skript
# ändern Sie dies 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
Skript beenden

# Das Ereignis "started" wird erst ausgegeben, wenn docker.sock bereit ist.
# Siehe https://github.com/docker/docker/issues/6647
Post-Start-Skript
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'; dann
 DOCKER_SOCKET=/home/geekflare/docker<strong>.sock
</strong>sonst
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)/" &amp;&amp; exit 1
echo "Warten auf $DOCKER_SOCKET"
sleep 0.1
fertig
echo "$DOCKER_SOCKET ist gestartet"
fi
Skript beenden
  • Bearbeiten Sie die Datei docker.socket, die sich unter /lib/systemd/system/ befindet, mit dem aktualisierten Speicherort der Datei docker.sock.
geekflare@geekflare:~$ sudo gedit /lib/systemd/system/docker.socket

[Einheit]

Beschreibung=Docker-Socket für die API

PartOf=docker.service

[Socket]

<strong>ListenStream=/home/geekflare/docker.sock
</strong>
 SocketMode=0660

SocketUser=root

SocketGroup=docker

[Installieren]

WantedBy=sockets.target

Führen Sie den folgenden Befehl aus, um die Änderungen zu aktualisieren (Speicherort der Docker Sock-Datei).

geekflare@geekflare:~$ sudo systemctl daemon-reload

Docker starten

Starten Sie nun den Docker-Dienst und überprüfen Sie den Status, ob er gestartet wurde. Sie werden sehen, dass am Ende des Statusprotokolls, das auf dem Terminal ausgegeben wird, der aktualisierte Pfad der Datei docker.sock angegeben wird.

geekflare@geekflare:~$ sudo service docker start
geekflare@geekflare:~$ sudo service docker status

docker.service - Docker Anwendungscontainer-Engine
Geladen: geladen (/lib/systemd/system/docker.service; aktiviert; Hersteller-Voreinstellung: aktiviert)
Aktiv: aktiv (läuft) seit Sat 2019-11-23 15:39:36 EST; vor 3s
Dokumente: https://docs.docker.com
Haupt-PID: 8840 (dockerd)
Aufgaben: 17
Speicher: 47.6M
CGruppe: /system.slice/docker.service
└─8840 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Nov 23 15:39:35 geekflare dockerd[8840]: time="2019-11-23T15:39:35.091941184-05:00" level=warning msg="Ihr Kernel unterstützt nicht cgroup rt runtime"
Nov 23 15:39:35 geekflare dockerd[8840]: time="2019-11-23T15:39:35.093149218-05:00" level=info msg="Container laden: Start."
Nov 23 15:39:35 geekflare dockerd[8840]: time="2019-11-23T15:39:35.957842188-05:00" level=info msg="Default bridge (docker0) ist mit einer IP-Adresse 172.17.0.0/16 zugewiesen. Daemon
Nov 23 15:39:36 geekflare dockerd[8840]: time="2019-11-23T15:39:36.078753190-05:00" level=info msg="Container laden: erledigt."
Nov 23 15:39:36 geekflare dockerd[8840]: time="2019-11-23T15:39:36.664727326-05:00" level=info msg="Docker daemon" commit=481bc77 graphdriver(s)=overlay2 version=18.09.6
Nov 23 15:39:36 geekflare dockerd[8840]: time="2019-11-23T15:39:36.817929464-05:00" level=error msg="cluster exited with error: error while loading TLS certificate in /var/lib/do
Nov 23 15:39:36 geekflare dockerd[8840]: time="2019-11-23T15:39:36.820439024-05:00" level=error msg="Schwarmkomponente konnte nicht gestartet werden" error="Fehler beim Laden des TLS-Zertifikats
Nov 23 15:39:36 geekflare dockerd[8840]: time="2019-11-23T15:39:36.820821712-05:00" level=info msg="Daemon hat Initialisierung abgeschlossen"
Nov 23 15:39:36 geekflare systemd[1]: Docker Application Container Engine gestartet.
Nov 23 15:39:36 geekflare dockerd[8840]: time="2019-11-23T15:39:36.883382952-05:00" level=info msg="API listen on <strong>/home/geekflare/docker.sock</strong>"

Führen Sie den Befehl ls am Pfad der Datei docker.sock aus, um sicherzustellen, dass diese Datei beim Start des Docker-Dienstes erstellt wurde.

geekflare@geekflare:~$ ls -l
gesamt 466832
-rw-r--r-- 1 geekflare geekflare 0 Oct 23 05:32 ]
drwxr-xr-x 9 tomcat tomcat 4096 Nov 18 14:30 apache-tomcat-9.0.27
-rw-r--r-- 1 geekflare geekflare 10982406 Oct 7 06:21 apache-tomcat-9.0.27.tar.gz
drwxr-xr-x 8 geekflare geekflare 4096 Okt 23 06:05 chef-repo
-rw-r--r-- 1 geekflare geekflare 252269838 Jul 1 15:16 chef-server-core_13.0.17-1_amd64.deb
-rw-r--r-- 1 geekflare geekflare 129713682 27. Dez. 2018 chef-workstation_0.2.43-1_amd64.deb
drwxr-xr-x 2 geekflare geekflare 4096 Okt 23 2018 Desktop
-rw-r--r-- 1 geekflare geekflare 726 Jul 27 15:10 Dockerfile
srw-rw---- 1 root docker 0 Nov 23 15:39 <strong>docker.sock</strong>
drwxr-xr-x 2 geekflare geekflare 4096 Okt 23 2018 Dokumente
drwxr-xr-x 2 geekflare geekflare 4096 Jul 20 18:20 Downloads
-rw-r--r-- 1 geekflare geekflare 8980 Okt 23 2018 examples.desktop

Sie haben den Speicherort der Docker Sock-Datei erfolgreich aktualisiert.

Wenn Sie Docker lernen möchten, aber viel zu tun haben, dann sollten Sie sich diesen Crashkurs ansehen.

  • Avi
    Autor
    Avi ist ein Technik-Enthusiast mit Fachkenntnissen in Trendtechnologien wie DevOps, Cloud Computing, Big Data und vielen mehr. Seine Leidenschaft ist es, Spitzentechnologien zu lernen und sein Wissen mit anderen zu teilen, indem er... mehr lesen
Dank an unsere Sponsoren
Weitere großartige Lektüre über DevOps
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder