Comment changer l'emplacement du fichier chaussette Docker ?
Modifier l'emplacement du fichier docker.sock : Un guide pas à pas
Vous vous interrogez sur la procédure à suivre pour modifier le chemin d'accès du fichier docker.sock ? Cet article vous guidera à travers les étapes nécessaires.
Comprendre le Docker Socket
Par défaut, le fichier socket de Docker réside dans le répertoire /var/run/docker.sock.
Il sert de canal de communication principal avec le démon Docker, le processus fondamental de Docker. Ce socket agit comme le point d'entrée de l'API Docker. Le Docker CLI l'utilise par défaut pour exécuter les commandes Docker.
Permettez-moi de vous présenter la méthode pour modifier l'emplacement de ce fichier socket.
Arrêt du Service Docker
Avant toute modification, il est impératif d'arrêter le service Docker s'il est en cours d'exécution. Pour confirmer son arrêt, exécutez la commande status.
[email protected]:~$ sudo service docker stop [email protected]:~$ sudo service docker status ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: inactive (dead) since Sat 2019-11-23 15:37:00 EST; 4s ago Docs: https://docs.docker.com Process: 1474 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=0/SUCCESS) Main PID: 1474 (code=exited, status=0/SUCCESS) Nov 10 01:56:49 toptips.fr 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 toptips.fr 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 toptips.fr 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 toptips.fr dockerd[1474]: time="2019-11-10T01:57:23.635519865-05:00" level=info msg="Container 3141793b98f315dc90a57d81006 Nov 10 01:57:24 toptips.fr dockerd[1474]: time="2019-11-10T01:57:24.091797103-05:00" level=info msg="ignoring event" module=libcontainerd Nov 23 15:36:56 toptips.fr systemd[1]: Stopping Docker Application Container Engine... Nov 23 15:36:56 toptips.fr dockerd[1474]: time="2019-11-23T15:36:56.992795411-05:00" level=info msg="Processing signal 'terminated'" Nov 23 15:36:58 toptips.fr dockerd[1474]: time="2019-11-23T15:36:58.234014533-05:00" level=info msg="ignoring event" module=libcontainerd Nov 23 15:37:00 toptips.fr dockerd[1474]: time="2019-11-23T15:37:00.403572098-05:00" level=info msg="ignoring event" module=libcontainerd Nov 23 15:37:00 toptips.fr systemd[1]: Stopped Docker Application Container Engine.
Modification des fichiers docker.conf et docker.socket
Dans l'exemple suivant, le chemin du socket Docker sera modifié de /var/run/docker.sock vers /home/toptips.fr/docker.sock.
- Il faut commencer par modifier le fichier
docker.confsitué dans le répertoire/etc/init/en y indiquant le nouvel emplacement du socket. Concentrez-vous sur la ligne définissant le chemin duDOCKER_SOCKET.
[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/toptips.fr/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
- Ensuite, modifiez le fichier
docker.socket, localisé dans/lib/systemd/system/, en y indiquant le nouvel emplacement du fichierdocker.sock.
[email protected]:~$ sudo gedit /lib/systemd/system/docker.socket [Unit] Description=Docker Socket for the API PartOf=docker.service [Socket] ListenStream=/home/toptips.fr/docker.sock SocketMode=0660 SocketUser=root SocketGroup=docker [Install] WantedBy=sockets.target
Pour appliquer les changements (nouvel emplacement du socket Docker), exécutez la commande suivante :
[email protected]:~$ sudo systemctl daemon-reload
Redémarrage du Service Docker
Relancez le service Docker et vérifiez son état pour confirmer son démarrage réussi. Le journal d'état affiché dans le terminal confirmera le nouvel emplacement du fichier docker.sock.
[email protected]:~$ sudo service docker start [email protected]:~$ sudo service docker status docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2019-11-23 15:39:36 EST; 3s ago Docs: https://docs.docker.com Main PID: 8840 (dockerd) Tasks: 17 Memory: 47.6M CGroup: /system.slice/docker.service └─8840 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Nov 23 15:39:35 toptips.fr dockerd[8840]: time="2019-11-23T15:39:35.091941184-05:00" level=warning msg="Your kernel does not support cgroup rt runtime" Nov 23 15:39:35 toptips.fr dockerd[8840]: time="2019-11-23T15:39:35.093149218-05:00" level=info msg="Loading containers: start." Nov 23 15:39:35 toptips.fr dockerd[8840]: time="2019-11-23T15:39:35.957842188-05:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon Nov 23 15:39:36 toptips.fr dockerd[8840]: time="2019-11-23T15:39:36.078753190-05:00" level=info msg="Loading containers: done." Nov 23 15:39:36 toptips.fr 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 toptips.fr 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 toptips.fr dockerd[8840]: time="2019-11-23T15:39:36.820439024-05:00" level=error msg="swarm component could not be started" error="error while loading TLS certific Nov 23 15:39:36 toptips.fr dockerd[8840]: time="2019-11-23T15:39:36.820821712-05:00" level=info msg="Daemon has completed initialization" Nov 23 15:39:36 toptips.fr systemd[1]: Started Docker Application Container Engine. Nov 23 15:39:36 toptips.fr dockerd[8840]: time="2019-11-23T15:39:36.883382952-05:00" level=info msg="API listen on /home/toptips.fr/docker.sock"
Pour confirmer la création du fichier à l'emplacement souhaité, exécutez la commande ls sur le chemin du docker.sock.
[email protected]:~$ ls -l total 466832 -rw-r--r-- 1 toptips.fr toptips.fr 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 toptips.fr toptips.fr 10982406 Oct 7 06:21 apache-tomcat-9.0.27.tar.gz drwxr-xr-x 8 toptips.fr toptips.fr 4096 Oct 23 06:05 chef-repo -rw-r--r-- 1 toptips.fr toptips.fr 252269838 Jul 1 15:16 chef-server-core_13.0.17-1_amd64.deb -rw-r--r-- 1 toptips.fr toptips.fr 129713682 Dec 27 2018 chef-workstation_0.2.43-1_amd64.deb drwxr-xr-x 2 toptips.fr toptips.fr 4096 Oct 23 2018 Desktop -rw-r--r-- 1 toptips.fr toptips.fr 726 Jul 27 15:10 Dockerfile srw-rw---- 1 root docker 0 Nov 23 15:39 docker.sock drwxr-xr-x 2 toptips.fr toptips.fr 4096 Oct 23 2018 Documents drwxr-xr-x 2 toptips.fr toptips.fr 4096 Jul 20 18:20 Downloads -rw-r--r-- 1 toptips.fr toptips.fr 8980 Oct 23 2018 examples.desktop
Voilà, vous avez réussi à modifier l'emplacement du fichier socket Docker.
Si vous souhaitez approfondir vos connaissances sur Docker, un cours intensif pourrait vous être bénéfique.
Avez-vous apprécié cet article ? N'hésitez pas à le partager.