466 votes

Je perds mes données à la sortie du conteneur

En dépit de Docker didacticiel Interactif et faq - je perdre mes données lorsque le conteneur des sorties.

J'ai installé le Panneau comme décrit ici: http://docs.docker.io/en/latest/installation/ubuntulinux sans aucun problème sur ubuntu 13.04.

Mais Il de perdre toutes les données lors de sorties.

**iman@test:~$ sudo docker version** 
Client version: 0.6.4 
Go version (client): go1.1.2 
Git commit (client): 2f74b1c 
Server version: 0.6.4 
Git commit (server): 2f74b1c 
Go version (server): go1.1.2 
Last stable version: 0.6.4 
**iman@test:~$ uname -a** 
Linux test 3.8.0-19-generic #30-Ubuntu SMP Wed May 1 16:35:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 
**iman@test:~$ lsb_release -a** 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description:    Ubuntu 13.04 
Release:    13.04 
Codename:   raring 
**iman@test:~$ sudo docker run ubuntu ping** 
2013/10/25 08:05:47 Unable to locate ping 
**iman@test:~$ sudo docker run ubuntu apt-get install ping** 
Reading package lists... 
Building dependency tree... 
The following NEW packages will be installed: 
  iputils-ping 
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 
Need to get 56.1 kB of archives. 
After this operation, 143 kB of additional disk space will be used. 
Get:1 http://archive.ubuntu.com/ubuntu/ precise/main iputils-ping amd64 3:20101006-1ubuntu1 [56.1 kB] 
debconf: delaying package configuration, since apt-utils is not installed 
Fetched 56.1 kB in 0s (195 kB/s) 
Selecting previously unselected package iputils-ping. 
(Reading database ... 7545 files and directories currently installed.) 
Unpacking iputils-ping (from .../iputils-ping_3%3a20101006-1ubuntu1_amd64.deb) ... 
Setting up iputils-ping (3:20101006-1ubuntu1) ... 
**iman@test:~$ echo $?** 
0 
**iman@test:~$ sudo docker run ubuntu ping** 
2013/10/25 08:06:11 Unable to locate ping 
**iman@test:~$ sudo docker run ubuntu touch /home/test** 
**iman@test:~$ sudo docker run ubuntu ls /home/test** 
ls: cannot access /home/test: No such file or directory 

J'ai aussi testé avec bash:

**iman@test:~$ sudo docker run -i -t ubuntu bash** 
**root@f357e2faab77:/# ping** 
bash: ping: command not found 
**root@f357e2faab77:/# apt-get install ping** 
Reading package lists... Done 
Building dependency tree... Done 
Note, selecting 'iputils-ping' instead of 'ping' 
The following NEW packages will be installed: 
  iputils-ping 
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 
Need to get 56.1 kB of archives. 
After this operation, 143 kB of additional disk space will be used. 
Get:1 http://archive.ubuntu.com/ubuntu/ precise/main iputils-ping amd64 3:20101006-1ubuntu1 [56.1 kB] 
Fetched 56.1 kB in 0s (1690 kB/s)  
debconf: delaying package configuration, since apt-utils is not installed 
Selecting previously unselected package iputils-ping. 
(Reading database ... 7545 files and directories currently installed.) 
Unpacking iputils-ping (from .../iputils-ping_3%3a20101006-1ubuntu1_amd64.deb) ... 
Setting up iputils-ping (3:20101006-1ubuntu1) ... 
**root@f357e2faab77:/# ping** 
Usage: ping [-LRUbdfnqrvVaAD] [-c count] [-i interval] [-w deadline] 
            [-p pattern] [-s packetsize] [-t ttl] [-I interface] 
            [-M pmtudisc-hint] [-m mark] [-S sndbuf] 
            [-T tstamp-options] [-Q tos] [hop1 ...] destination 
**root@f357e2faab77:/# exit** 
**iman@test:~$ sudo docker run -i -t ubuntu bash** 
**root@c9bfe8518464:/# ping** 
bash: ping: command not found 
root@c9bfe8518464:/#  

J'ai cherché pour cette question, mais il semble que personne n'a ce problème!

Ai-je oublié quelque chose?

451voto

Unferth Points 338

Vous devez valider les modifications que vous apportez au conteneur, puis l'exécuter. Essaye ça:

 sudo docker pull ubuntu

sudo docker run ubuntu apt-get install -y ping
 

Ensuite, récupérez l'ID du conteneur en utilisant cette commande:

 sudo docker ps -l
 

Valider les modifications dans le conteneur:

 sudo docker commit <container_id> iman/ping 
 

Puis lancez le conteneur:

 sudo docker run iman/ping ping www.google.com
 

Cela devrait marcher.

429voto

ZeissS Points 4049

Lorsque vous utilisez docker run pour démarrer un conteneur, un nouveau conteneur est créé en fonction de l'image que vous avez spécifiée.

Outre les autres réponses utiles ici, notez que vous pouvez redémarrer un conteneur existant après sa fermeture et que vos modifications sont toujours présentes.

 docker start f357e2faab77 # restart it in the background
docker attach f357e2faab77 # reattach the terminal & stdin
 

62voto

salathe Points 26305

En plus de Unferth de réponse, il est recommandé de créer un Dockerfile.

Dans un répertoire vide, créez un fichier appelé "Dockerfile" avec le contenu suivant.

FROM ubuntu
RUN apt-get install ping
ENTRYPOINT ["ping"]

Créer une image en utilisant le Dockerfile. Nous allons utiliser une balise, donc nous n'avons pas besoin de rappeler le code hexadécimal de numéro d'image.

$ docker build -t iman/ping .

Et puis exécutez l'image dans un conteneur.

$ docker run iman/ping stackoverflow.com

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X