2015-05-26 18 views
14

Supposed Ho un contenitore di Docker che voglio correre, allora posso chiamareCome faccio ad avviare automaticamente un contenitore Docker all'avvio del sistema?

$ docker run ... 

e tutto va bene. Esiste un modo integrato per eseguire un contenitore in modo che venga riavviato automaticamente, se il sistema si arresta in modo anomalo e si riavvia?

Se è così, è disponibile anche in Docker Compose?

+0

Sto votando per chiudere questa domanda come off-topic perché è già su ServerFault all'indirizzo http: // serverfa ult.com/questions/633067/how-do-i-auto-start-docker-containers-at-system-boot –

+2

@DanDascalescu questa domanda dovrebbe rimanere qui: "se la tua domanda in generale copre ... strumenti software comunemente usati dai programmatori ... allora sei nel posto giusto per fare la tua domanda! " molto più incline a fare clic su un collegamento stack rispetto a serverfault come programmatore –

risposta

27

Sì, la finestra mobile ha restart policies come docker run --restart=always che gestirà questo. Questo è disponibile anche nello compose.yml config file come restart: always.

+2

Questa è la prima risposta e accettata, tuttavia probabilmente la maggior parte delle persone che cercano quella funzione desiderano davvero eseguire il proprio contenitore come un servizio. La [risposta di @kon usando 'Systemd' come gestore di servizi] (http://stackoverflow.com/a/39493500/3197383) è una delle migliori soluzioni a tale scopo e richiede più upvotes. –

+1

Questo non ha funzionato da me. Ho un contenitore chiamato "crmpicco-mysql" e ho eseguito 'docker run --restart = always crmpicco-mysql' e ho ricevuto l'errore:' Impossibile trovare l'immagine 'crmpicco-mysql: latest' local'. – crmpicco

+0

Il tuo errore non è correlato. È possibile che si desideri pubblicare una domanda separata, ma sembra che si stiano confondendo i nomi delle immagini della finestra mobile ei nomi dei contenitori della finestra mobile. Il comando 'docker run' si aspetta il nome di un'immagine che puoi elencare tramite' immagini docker'. –

20

Se si desidera che il contenitore venga avviato anche se nessun utente ha eseguito un accesso (come la VM di VirtualBox che solo avvio e non desidero accedere ogni volta). Ecco i passaggi che ho eseguito per Ubuntu 16.04 LTS. Per fare un esempio, ho installato un contenitore DB Oracle:

$ docker pull alexeiled/docker-oracle-xe-11g 
$ docker run -d --name=MYPROJECT_oracle_db --shm-size=2g -p 1521:1521 -p 8080:8080 alexeiled/docker-oracle-xe-11g 
$ vim /etc/systemd/system/docker-MYPROJECT-oracle_db.service 

e aggiungere il seguente contenuto:

[Unit] 
Description=Redis container 
Requires=docker.service 
After=docker.service 

[Service] 
Restart=always 
ExecStart=/usr/bin/docker start -a MYPROJECT_oracle_db 
ExecStop=/usr/bin/docker stop -t 2 MYPROJECT_oracle_db 

[Install] 
WantedBy=default.target 

e attivare il servizio all'avvio

sudo systemctl enable docker-MYPROJECT-oracle_db.service 

Per maggiori informazioni https://docs.docker.com/engine/admin/host_integration/

Problemi correlati