Ti stai chiedendo come sia possibile modificare il percorso del file docker.sock?
Che cos’è il Docker Socket?
Il file socket di Docker, per impostazione predefinita, risiede in /var/run/docker.sock.
Esso funge da canale di comunicazione con il demone Docker principale (il processo), rappresentando il punto di accesso per l’API di Docker. La Docker CLI lo utilizza per eseguire i comandi relativi a Docker.
Vediamo ora come spostare questo file socket.
Arrestare Docker
Per prima cosa, se il servizio Docker è attivo sul tuo sistema, dovrai arrestarlo. Per verificare che si sia effettivamente fermato, esegui il comando di stato.
[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 winadmin.it 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 winadmin.it 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 winadmin.it 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 winadmin.it dockerd[1474]: time="2019-11-10T01:57:23.635519865-05:00" level=info msg="Container 3141793b98f315dc90a57d81006 Nov 10 01:57:24 winadmin.it dockerd[1474]: time="2019-11-10T01:57:24.091797103-05:00" level=info msg="ignoring event" module=libcontainerd Nov 23 15:36:56 winadmin.it systemd[1]: Stopping Docker Application Container Engine... Nov 23 15:36:56 winadmin.it dockerd[1474]: time="2019-11-23T15:36:56.992795411-05:00" level=info msg="Processing signal 'terminated'" Nov 23 15:36:58 winadmin.it dockerd[1474]: time="2019-11-23T15:36:58.234014533-05:00" level=info msg="ignoring event" module=libcontainerd Nov 23 15:37:00 winadmin.it dockerd[1474]: time="2019-11-23T15:37:00.403572098-05:00" level=info msg="ignoring event" module=libcontainerd Nov 23 15:37:00 winadmin.it systemd[1]: Stopped Docker Application Container Engine.
Modifica dei file docker.conf e docker.socket
In questa guida, sposteremo il file da /var/run/docker.sock a /home/winadmin.it/docker.sock.
- Modifica il file docker.conf che si trova nella directory /etc/init/, specificando il nuovo percorso. Dovrai modificare un’unica riga che contiene la variabile DOCKER_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 <strong>DOCKER_SOCKET=/home/winadmin.it/docker.sock </strong>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
- Modifica il file docker.socket, presente in /lib/systemd/system/, specificando il nuovo percorso del file docker.sock.
[email protected]:~$ sudo gedit /lib/systemd/system/docker.socket [Unit] Description=Docker Socket for the API PartOf=docker.service [Socket] <strong>ListenStream=/home/winadmin.it/docker.sock </strong> SocketMode=0660 SocketUser=root SocketGroup=docker [Install] WantedBy=sockets.target
Esegui il seguente comando per applicare le modifiche apportate alla posizione del file Docker Socket:
[email protected]:~$ sudo systemctl daemon-reload
Avviare Docker
Ora riavviamo il servizio Docker e verifichiamo il suo stato per confermare l’avvio corretto. In fondo al log di stato, potrai visualizzare il percorso aggiornato del file 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 winadmin.it 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 winadmin.it dockerd[8840]: time="2019-11-23T15:39:35.093149218-05:00" level=info msg="Loading containers: start." Nov 23 15:39:35 winadmin.it 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 winadmin.it dockerd[8840]: time="2019-11-23T15:39:36.078753190-05:00" level=info msg="Loading containers: done." Nov 23 15:39:36 winadmin.it 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 winadmin.it 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 winadmin.it 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 winadmin.it dockerd[8840]: time="2019-11-23T15:39:36.820821712-05:00" level=info msg="Daemon has completed initialization" Nov 23 15:39:36 winadmin.it systemd[1]: Started Docker Application Container Engine. Nov 23 15:39:36 winadmin.it dockerd[8840]: time="2019-11-23T15:39:36.883382952-05:00" level=info msg="API listen on <strong>/home/winadmin.it/docker.sock</strong>"
Per ulteriore verifica, esegui il comando `ls` nel percorso del file docker.sock. Questo ti confermerà che il file è stato creato all’avvio del servizio Docker.
[email protected]:~$ ls -l total 466832 -rw-r--r-- 1 winadmin.it winadmin.it 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 winadmin.it winadmin.it 10982406 Oct 7 06:21 apache-tomcat-9.0.27.tar.gz drwxr-xr-x 8 winadmin.it winadmin.it 4096 Oct 23 06:05 chef-repo -rw-r--r-- 1 winadmin.it winadmin.it 252269838 Jul 1 15:16 chef-server-core_13.0.17-1_amd64.deb -rw-r--r-- 1 winadmin.it winadmin.it 129713682 Dec 27 2018 chef-workstation_0.2.43-1_amd64.deb drwxr-xr-x 2 winadmin.it winadmin.it 4096 Oct 23 2018 Desktop -rw-r--r-- 1 winadmin.it winadmin.it 726 Jul 27 15:10 Dockerfile srw-rw---- 1 root docker 0 Nov 23 15:39 <strong>docker.sock</strong> drwxr-xr-x 2 winadmin.it winadmin.it 4096 Oct 23 2018 Documents drwxr-xr-x 2 winadmin.it winadmin.it 4096 Jul 20 18:20 Downloads -rw-r--r-- 1 winadmin.it winadmin.it 8980 Oct 23 2018 examples.desktop
Hai così modificato con successo la posizione del file Docker Socket.
Se desideri approfondire la tua conoscenza di Docker ma hai poco tempo, ti consiglio di dare un’occhiata a questo corso intensivo.
L’articolo ti è stato utile? Condividilo con altri!