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)/" && 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 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