<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Container e docker-compose - Docker Tutorial</title>
	<atom:link href="https://dockertutorial.it/category/tutorial/container-e-docker-compose/feed/" rel="self" type="application/rss+xml" />
	<link>https://dockertutorial.it</link>
	<description></description>
	<lastBuildDate>Wed, 30 Nov 2022 10:45:26 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://dockertutorial.it/wp-content/uploads/2020/04/cropped-New-Project-2-32x32.png</url>
	<title>Container e docker-compose - Docker Tutorial</title>
	<link>https://dockertutorial.it</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">186986242</site>	<item>
		<title>Container &#8211; cosa sono e come si creano</title>
		<link>https://dockertutorial.it/container/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=container</link>
		
		<dc:creator><![CDATA[Fabio Ros]]></dc:creator>
		<pubDate>Sun, 01 Nov 2020 17:13:27 +0000</pubDate>
				<category><![CDATA[Container e docker-compose]]></category>
		<guid isPermaLink="false">https://dockertutorial.it/?p=611</guid>

					<description><![CDATA[<p>Abbiamo visto che un container è un&#8217;immagine in esecuzione. Di fatto si tratta di un processo che gira in modo isolato sull&#8217;host dove gira Docker....</p>
<p>L'articolo <a rel="nofollow" href="https://dockertutorial.it/container/">Container &#8211; cosa sono e come si creano</a> proviene da <a rel="nofollow" href="https://dockertutorial.it">Docker Tutorial</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Abbiamo visto che un container è un&#8217;immagine in esecuzione. Di fatto si tratta di <strong>un processo che gira in modo isolato sull&#8217;host</strong> dove gira Docker. </p>



<p>Te lo sei perso? <a href="https://dockertutorial.it/container-le-basi/" target="_blank" rel="noreferrer noopener">Dai un occhiata qui!</a></p>



<p>Il comando per eseguire un nuovo container è <code>docker container run nome_immagine</code> ( o <code>docker run nome_immagine</code> per retrocompatibilità ).<br>Lascio un link alla documentazione, sia per la <a rel="noreferrer noopener" href="https://docs.docker.com/engine/reference/commandline/container_run/" target="_blank">prima</a>, sia per la <a rel="noreferrer noopener" href="https://docs.docker.com/engine/reference/run/" target="_blank">seconda </a>versione.<br>Il sito ufficiale mette a disposizione anche una <a rel="noreferrer noopener" href="https://docs.docker.com/engine/reference/run/" target="_blank">pagina di reference</a> che spiega approfonditamente tale aspetto.</p>



<p>Abbiamo già visto indirettamente in alcune occasioni l&#8217;utilizzo di docker container run, però è giunto il momento di andare più in profondità e capire cosa significa lanciare un nuovo container e quali sono le eventuali funzionalità che possiamo sfruttare.</p>



<h2>Creare un container</h2>



<p>Quando lanciamo un container, lanciamo un processo isolato. Esso è dotato del <strong>proprio file system</strong>, la <strong>propria interfaccia di rete</strong> e il <strong>proprio albero di processi </strong>che esegue nell&#8217;host ma in modo del tutto indipendente.</p>



<p>La struttura del comando di esecuzione di un container è la seguente:</p>



<pre class="wp-block-preformatted"><code>docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]</code></pre>



<p>dove:</p>



<ul><li> <code>docker container run</code> è il comando run del sottomenu di docker</li><li>OPTIONS è l&#8217;elenco dei flag utilizzati per l&#8217;esecuzione del comando</li><li>IMAGE è il tag dell&#8217;immagine che utilizziamo per lanciare un container</li><li>COMMAND l&#8217;eventuale istruzione con la quale vogliamo eseguire il container se quella prevista nel Dockerfile non ci soddisfa cosi com&#8217;è</li><li>ARG è l&#8217;insieme dei parametri da passare eventualmente al container </li></ul>



<p>Con il comando docker container run &#8211;help è possibile visualizzare l&#8217;elenco dei flag come segue:</p>



<pre class="wp-block-preformatted">docker container run --help
Usage: docker container run [OPTIONS] IMAGE [COMMAND] [ARG…]
Run a command in a new container
Options:
--add-host list Add a custom host-to-IP mapping (host:ip)
-a, --attach list Attach to STDIN, STDOUT or STDERR
--blkio-weight uint16 Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
--blkio-weight-device list Block IO weight (relative device weight) (default [])
--cap-add list Add Linux capabilities
--cap-drop list Drop Linux capabilities
--cgroup-parent string Optional parent cgroup for the container
--cidfile string Write the container ID to the file
--cpu-period int Limit CPU CFS (Completely Fair Scheduler) period
--cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota
--cpu-rt-period int Limit CPU real-time period in microseconds
--cpu-rt-runtime int Limit CPU real-time runtime in microseconds
-c, --cpu-shares int CPU shares (relative weight)
--cpus decimal Number of CPUs
--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
-d, --detach Run container in background and print container ID
--detach-keys string Override the key sequence for detaching a container
--device list Add a host device to the container
--device-cgroup-rule list Add a rule to the cgroup allowed devices list
--device-read-bps list Limit read rate (bytes per second) from a device (default [])
--device-read-iops list Limit read rate (IO per second) from a device (default [])
--device-write-bps list Limit write rate (bytes per second) to a device (default [])
--device-write-iops list Limit write rate (IO per second) to a device (default [])
--disable-content-trust Skip image verification (default true)
--dns list Set custom DNS servers
--dns-option list Set DNS options
--dns-search list Set custom DNS search domains
--domainname string Container NIS domain name
--entrypoint string Overwrite the default ENTRYPOINT of the image
-e, --env list Set environment variables
--env-file list Read in a file of environment variables
--expose list Expose a port or a range of ports
--gpus gpu-request GPU devices to add to the container ('all' to pass all GPUs)
--group-add list Add additional groups to join
--health-cmd string Command to run to check health
--health-interval duration Time between running the check (ms|s|m|h) (default 0s)
--health-retries int Consecutive failures needed to report unhealthy
--health-start-period duration Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s)
--health-timeout duration Maximum time to allow one check to run (ms|s|m|h) (default 0s)
--help Print usage
-h, --hostname string Container host name
--init Run an init inside the container that forwards signals and reaps processes
-i, --interactive Keep STDIN open even if not attached
--ip string IPv4 address (e.g., 172.30.100.104)
--ip6 string IPv6 address (e.g., 2001:db8::33)
--ipc string IPC mode to use
--isolation string Container isolation technology
--kernel-memory bytes Kernel memory limit
-l, --label list Set meta data on a container
--label-file list Read in a line delimited file of labels
--link list Add link to another container
--link-local-ip list Container IPv4/IPv6 link-local addresses
--log-driver string Logging driver for the container
--log-opt list Log driver options
--mac-address string Container MAC address (e.g., 92:d0:c6:0a:29:33)
-m, --memory bytes Memory limit
--memory-reservation bytes Memory soft limit
--memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap
--memory-swappiness int Tune container memory swappiness (0 to 100) (default -1)
--mount mount Attach a filesystem mount to the container
--name string Assign a name to the container
--network network Connect a container to a network
--network-alias list Add network-scoped alias for the container
--no-healthcheck Disable any container-specified HEALTHCHECK
--oom-kill-disable Disable OOM Killer
--oom-score-adj int Tune host's OOM preferences (-1000 to 1000)
--pid string PID namespace to use
--pids-limit int Tune container pids limit (set -1 for unlimited)
--platform string Set platform if server is multi-platform capable
--privileged Give extended privileges to this container
-p, --publish list Publish a container's port(s) to the host
-P, --publish-all Publish all exposed ports to random ports
--read-only Mount the container's root filesystem as read only
--restart string Restart policy to apply when a container exits (default "no")
--rm Automatically remove the container when it exits
--runtime string Runtime to use for this container
--security-opt list Security Options
--shm-size bytes Size of /dev/shm
--sig-proxy Proxy received signals to the process (default true)
--stop-signal string Signal to stop a container (default "SIGTERM")
--stop-timeout int Timeout (in seconds) to stop a container
--storage-opt list Storage driver options for the container
--sysctl map Sysctl options (default map[])
--tmpfs list Mount a tmpfs directory
-t, --tty Allocate a pseudo-TTY
--ulimit ulimit Ulimit options (default [])
-u, --user string Username or UID (format: [:])
--userns string User namespace to use
--uts string UTS namespace to use
-v, --volume list Bind mount a volume
--volume-driver string Optional volume driver for the container
--volumes-from list Mount volumes from the specified container(s)
-w, --workdir string Working directory inside the container</pre>



<p>Ci sono molti flag, ma a mio avviso i più utili sono:</p>



<ul><li><strong>-d </strong>:  (detached) una volta lanciato il container, il terminale viene rilasciato e il processo continua a girare in background. Il comportamento di default prevede che il container venga eseguito in foreground.</li></ul>



<ul><li><strong>&#8211;rm</strong> : il container viene rimosso automaticamente una volta terminata l&#8217;esecuzione</li><li><strong>&#8211;env</strong> : passa una lista di variabili d&#8217;ambiente al container</li><li><strong>&#8211;env-file</strong> : passa un file con la lista delle variabili d&#8217;ambiente al container</li><li><strong>-p</strong> : pubblica verso l&#8217;esterno le porte del container specificandone il binding nella forma -p &lt;porta dell&#8217;host&gt;:&lt;porta del <span style="text-decoration: underline;">container</span>&gt;</li></ul>



<h2>Cosa succede quando lanciamo un container?</h2>



<p>Quando lanciamo un nuovo container, viene prima cercata l&#8217;immagine in locale.<br>Se l&#8217;immagine non viene trovata in locale, viene cercata nel registry di default (Docker Hub) o eventualmente in quello specificato.<br>Se non specifichiamo un tag, viene scaricata l&#8217;immagine con il tag &#8220;latest&#8221;.</p>



<p>Solo a questo punto il container è pronto per essere istanziato.</p>



<p>Docker assegna al container un ip virtuale nella rete privata all&#8217;interno del docker engine.<br>Dopo vengono eseguiti gli eventuali bind verso l&#8217;host e il container viene lanciato utilizzando CMD e entrypoint. </p>



<p></p>



<p>C&#8217;è molta carne al fuoco, direi che è giunto il momento di un <a href="https://dockertutorial.it/servire-una-pagina-con-nginx-e-docker">esempio</a>.</p>



<p>—<br><strong>Prosegui su:</strong>&nbsp;<a href="https://dockertutorial.it/servire-una-pagina-con-nginx-e-docker">Servire una pagina statica con NGINX e Docker</a></p>



<p>Immagine:&nbsp;<a href="https://it.freepik.com/foto-vettori-gratuito/annata" target="_blank" rel="noreferrer noopener"></a><a href="https://it.freepik.com/foto/albero">Foto creata da wirestock &#8211; it.freepik.com</a></p>
<p>L'articolo <a rel="nofollow" href="https://dockertutorial.it/container/">Container &#8211; cosa sono e come si creano</a> proviene da <a rel="nofollow" href="https://dockertutorial.it">Docker Tutorial</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">611</post-id>	</item>
		<item>
		<title>Servire una pagina con Nginx e Docker</title>
		<link>https://dockertutorial.it/servire-una-pagina-con-nginx-e-docker/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=servire-una-pagina-con-nginx-e-docker</link>
		
		<dc:creator><![CDATA[Fabio Ros]]></dc:creator>
		<pubDate>Thu, 03 Dec 2020 18:40:32 +0000</pubDate>
				<category><![CDATA[Container e docker-compose]]></category>
		<category><![CDATA[Tutorial]]></category>
		<guid isPermaLink="false">https://dockertutorial.it/?p=630</guid>

					<description><![CDATA[<p>Per vedere tutti gli aspetti che secondo me sono essenziali, ho scelto di istanziare un container a partire dall&#8217;immagine di Nginx. Per chi non lo...</p>
<p>L'articolo <a rel="nofollow" href="https://dockertutorial.it/servire-una-pagina-con-nginx-e-docker/">Servire una pagina con Nginx e Docker</a> proviene da <a rel="nofollow" href="https://dockertutorial.it">Docker Tutorial</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Per vedere tutti gli aspetti che secondo me sono essenziali, ho scelto di istanziare un container a partire dall&#8217;<a href="https://hub.docker.com/_/nginx">immagine di Nginx</a>.</p>



<p>Per chi non lo conoscesse, Nginx (pronunciato engine-x) è un progetto open source che implementa un reverse proxy per i protocolli HTTP, HTTPS, SMTP, POP3 e IMAP, un load balancer, cache HTTP e un web server. </p>



<p>Il nostro obiettivo è quello di mostrare la pagina di default di Nginx servendola da un container Docker.</p>



<p>Per questo esercizio io sto usando la versione: <code><a href="https://github.com/nginxinc/docker-nginx/blob/c411fdefd6655144f6cdab425026a8a427adc273/mainline/alpine/Dockerfile">1.19.5-alpine</a></code>.</p>



<p>La documentazione che viene messa a disposizione nella pagina del docker hub spiega svariati aspetti dell&#8217;utilizzo di tale immagine, ma per non fare confusione ne usiamo solo alcune.</p>



<h2>Lanciare il container</h2>



<p>Per lanciare il primo container con Nginx eseguiamo questo comando:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
docker container run -it --rm -d -p 8080:80 --name web nginx:1.19.5-alpine
</pre></div>


<p>con questo comando, stiamo dicendo diverse cose:</p>



<ul class="is-style-default"><li><strong>docker container run</strong>: comando per lanciare un nuovo container<ul><li>run crea sempre un nuovo container, tuttavia è possibile utilizzare le funzioni start e unpause come abbiamo visto <a href="https://dockertutorial.it/container-le-basi/">qui</a>.</li></ul></li><li>&#8211;<strong>it</strong>: combinazione di -i e -t<ul><li>-i: il container viene eseguito in modo interattivo ovvero mantiene lo standard input attivo, anche se il container viene eseguito in background</li><li>-t: è possibile interagire con il container poiché viene allocata una (pseudo-)interfaccia tty</li></ul></li><li><strong>&#8211;rm</strong>: il container verrà cancellato automaticamente una volta che esso avrà terminato l&#8217;esecuzione</li><li><strong>-d</strong>: una volta istanziato il container, l&#8217;esecuzione continuerà in background rilasciando quindi il terminale</li><li><strong>-p 8080:80</strong>: la porta 80 del container verrà dirottata nella porta 8080 dell&#8217;host</li><li><strong>&#8211;name web</strong>: al container sarà associato il nome &#8220;web&#8221;</li><li><strong>nginx:1.19.5-alpine</strong>: tag dell&#8217;immagine da cui istanziamo il container.<ul><li>se, come in questo caso, non specifichiamo un registry prima del nome, l&#8217;immagine verrà cercata prima tra quelle in locale e poi nel docker hub (che è il registry di default)</li></ul></li></ul>



<p>Dopo aver eseguito questo comando, possiamo vedere la pagina di default di Nginx all&#8217;indirizzo <a href="http://0.0.0.0:8080" rel="nofollow">http://0.0.0.0:8080</a>. </p>



<h2>Aggiungiamo un volume</h2>



<p>Ora possiamo modificare il comportamento mettendo una nostra pagina al posto di quella di default.</p>



<p>Senza addentrarci troppo nelle logiche di Nginx, per adesso basta tenere a mente che i file devono essere inseriti nella cartella raggiungibile a questo percorso: <code>/usr/share/nginx/html</code>.</p>



<p>A questo punto, basta <strong>creare un file index.html</strong> e provare ad<strong> iniettarlo in quella posizione</strong>!<br>Io ho creato questo file index.html e lo ho salvato nella cartella &#8220;contenuto-mio-sito&#8221; al percorso: <code>~/contenuto-mio-sito</code> .</p>



<pre class="wp-block-preformatted">&lt;!DOCTYPE&nbsp;html&gt;
&lt;html&gt;
&lt;body&gt;
&lt;h1&gt;La mia pagina&lt;/h1&gt;
&lt;p&gt;Esempio da DockerTutorial.it&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>



<p>Ora dobbiamo prima fermare il container creato in precedenza con </p>



<pre class="wp-block-preformatted">docker container stop web</pre>



<p id="block-adbe8023-16c4-4d68-acd8-a23efd5f3c32">Creare un Dockerfile con il seguente contenuto nella cartella in cui abbiamo creato il file index.html</p>



<pre id="block-4cacd232-a32c-4edc-8ff5-86fc7a7bcdff" class="wp-block-preformatted"><code>FROM nginx:1.19.5-alpine</code><br><code>COPY ./index.html /usr/share/nginx/html/index.html</code></pre>



<p id="block-8ae06cab-d627-422f-9837-1b523d50942e">fare la build e poi</p>



<pre id="block-8d8c4169-c293-447f-92fe-d7e93930000a" class="wp-block-preformatted">docker image build -t esempio-nginx:0.0.1 .</pre>



<p id="block-a3fd4d07-60d8-493e-89d7-563261f541d4">e poi istanziare il nuovo container con il bind dei file.</p>



<pre class="wp-block-preformatted">docker container run -it --rm -d -p 8080:80 --name web -v ~/contenuto-mio-sito:/usr/share/nginx/html esempio-nginx:0.0.1</pre>



<p id="block-6208fca4-bcad-43e2-a735-0e81dc5165c5">visitando la pagina <a href="http://0.0.0.0:8080/" rel="nofollow">http://0.0.0.0:8080</a> ora vedremo il la nostra pagina html.</p>



<h2 id="block-d752398f-6db3-4774-be73-252cb805f24f">Aggiungiamo le variabili d&#8217;ambiente</h2>



<p id="block-4e14a25a-0b82-4236-bab9-20b3fb285e51">Per provare ad utilizzare le variabili d&#8217;ambiente, proviamo a servire la pagina su una porta diversa.<br>Nella documentazione esposta nel dockerhub relativamente a Nginx, possiamo vedere che la variabile si chiama: NGINX_PORT.</p>



<p>Come prima cosa interrompiamo l&#8217;esecuzione del container creato precedentemente</p>



<pre class="wp-block-preformatted">docker container stop web</pre>



<p>Poi a<strong>ggiungiamo la variabile d&#8217;ambiente</strong> inline con <strong>-e NGINX_PORT=85</strong></p>



<pre id="block-4c6f8721-e76f-4519-be95-a6ec14e5ccfa" class="wp-block-preformatted">docker container run -it --rm -d -e NGINX_PORT=85 -p 8080:85 --name web -v ~/contenuto-mio-sito:/usr/share/nginx/html esempio-nginx:0.0.1</pre>



<p>Visitando l&#8217;indirizzo <a href="http://0.0.0.0:8080/" rel="nofollow">http://0.0.0.0:8080</a> otterremo sempre lo stesso risultato.</p>



<h2 id="block-9422d7e4-17bc-4a3b-ba97-df9156dafd37">Gestione dei log</h2>



<p>È possibile analizzare i log di un container utilizzando docker container logs &lt;nome o id del container&gt; (<a href="https://docs.docker.com/engine/reference/commandline/container_logs/" target="_blank" rel="noreferrer noopener">link alla documentazione</a>).</p>



<p>Nel nostro caso:</p>



<pre class="wp-block-preformatted">docker container logs web</pre>



<h2 id="block-b3b1568d-3220-4063-8452-7eef1d962170">Rimozione container</h2>



<p>Per rimuovere un container è sufficiente eseguire docker container rm &lt;nome o id del container&gt;</p>



<pre class="wp-block-preformatted">docker rm web</pre>



<p>Se si desidera rimuovere un container in esecuzione, è necessario applicare il flag -f che forza la rimozione. </p>



<pre class="wp-block-preformatted">docker rm -f web</pre>



<p id="block-09985fa2-58b6-4c66-8c68-33b62ed9a4e8">—<br><strong>Prosegui su:</strong>&nbsp;<a href="https://dockertutorial.it/accedere-a-un-container">Accedere a un container</a></p>



<p id="block-301dae09-f019-4a70-bb15-fa6efb6ea8e5">Immagine:&nbsp;<a href="https://it.freepik.com/foto/albero">Foto creata da wirestock &#8211; it.freepik.com</a></p>
<p>L'articolo <a rel="nofollow" href="https://dockertutorial.it/servire-una-pagina-con-nginx-e-docker/">Servire una pagina con Nginx e Docker</a> proviene da <a rel="nofollow" href="https://dockertutorial.it">Docker Tutorial</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">630</post-id>	</item>
		<item>
		<title>Accedere a un container</title>
		<link>https://dockertutorial.it/accedere-a-un-container/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=accedere-a-un-container</link>
		
		<dc:creator><![CDATA[Fabio Ros]]></dc:creator>
		<pubDate>Sun, 01 Nov 2020 17:46:31 +0000</pubDate>
				<category><![CDATA[Container e docker-compose]]></category>
		<category><![CDATA[Tutorial]]></category>
		<guid isPermaLink="false">https://dockertutorial.it/?p=615</guid>

					<description><![CDATA[<p>Spesso capita la necessità di dover accedere a un container per verificarne alcuni aspetti del funzionamento. Anche se Docker non da nativamente un modo per...</p>
<p>L'articolo <a rel="nofollow" href="https://dockertutorial.it/accedere-a-un-container/">Accedere a un container</a> proviene da <a rel="nofollow" href="https://dockertutorial.it">Docker Tutorial</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p id="block-11d0c169-8dc4-4ecd-a4e7-5bc83982c376">Spesso capita la necessità di dover accedere a un container per verificarne alcuni aspetti del funzionamento.</p>



<p id="block-da8ab729-05ba-423f-ae45-0890fc09b97c">Anche se Docker non da nativamente un modo per accedere a un container, possiamo utilizzare un trucco ovvero eseguire un nuovo processo su quel container che esegue una shell.</p>



<p id="block-55809d14-6efc-4ba6-bea2-36f2286c238c">Il comando che docker mette a disposizione per lanciare un nuovo processo è: <code>docker container exec &lt;nome o id del container&gt; &lt;comando&gt;</code></p>



<p id="block-5c4a8c7d-aa84-407e-a84b-1268bfba7be6">Per interagire con un container, tendenzialmente si esegue una shell che in questo caso è invocata mediante il comando sh.</p>



<p id="block-d907f637-0abe-4bcd-9dc8-ff2760fe4bee">Supponendo di avere il container della sezione precedente in esecuzione (altrimenti lanciarlo come da istruzioni <a href="https://dockertutorial.it/servire-una-pagina-con-nginx-e-docker" target="_blank" rel="noreferrer noopener">previste qui</a>), eseguiamo:</p>



<pre id="block-b2989057-f12a-4556-800b-be722afcbab5" class="wp-block-preformatted">docker container exec web sh</pre>



<p id="block-629c2b74-39a0-4fa6-90a3-bdd87efa2cbf">Ci accorgiamo presto che l&#8217;esecuzione termina subito, senza darci modo di interagire con il container. Questo accade perché dobbiamo avere un&#8217;esecuzione interattiva e un tty per poterci interagire. Anche in questo caso, abbiamo bisogno dei flag -i e -t. Se ritentiamo l&#8217;esecuzione con questi flag come segue</p>



<pre id="block-8fae7ce6-e6d1-4d0c-a023-7938a01eda81" class="wp-block-preformatted">docker container exec -it web sh</pre>



<p id="block-79360ca9-9c48-4adf-b324-759a5903f218">Otteniamo un accesso alla shell.</p>



<p id="block-1ea3d7b3-a20f-4ec7-bedf-91213c53aff0">Per uscire dalla shell basta utilizzare la shortcut <code>Ctrl+d</code></p>



<p></p>



<p id="block-6f7fd898-79c3-4023-b490-0ecd9c12336b">—<br><strong>Prosegui su:</strong>&nbsp;<a href="https://dockertutorial.it/accedere-a-un-container">Accedere a un container</a></p>



<p id="block-f345c710-918c-4de9-86b0-2f53d71914d4">Immagine: <a href="https://it.freepik.com/foto/neve">Neve foto creata da wirestock &#8211; it.freepik.com</a></p>
<p>L'articolo <a rel="nofollow" href="https://dockertutorial.it/accedere-a-un-container/">Accedere a un container</a> proviene da <a rel="nofollow" href="https://dockertutorial.it">Docker Tutorial</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">615</post-id>	</item>
	</channel>
</rss>
