2
votes

Container Docker est quitté après l'exécution

J'ai le Dockerfile suivant:

2019.05.08 14:22:59 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
2019.05.08 14:22:59 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2019.05.08 14:22:59 INFO  app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/opt/sonarqube/elasticsearch]: /opt/sonarqube/elasticsearch/bin/elasticsearch
2019.05.08 14:22:59 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2019.05.08 14:22:59 INFO  app[][o.e.p.PluginsService] no modules loaded
2019.05.08 14:22:59 INFO  app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2019.05.08 14:23:01 WARN  app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 1
2019.05.08 14:23:01 INFO  app[][o.s.a.SchedulerImpl] Process [es] is stopped
2019.05.08 14:23:01 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped

Quand j'exécute la création d'image:

[
{
    "Id": "sha256:266ee2202a5d23c7deed92b67c70793d681ff3f46a9b8901586464a9785f0f03",
    "RepoTags": [
        "sonarqube-test:latest"
    ],
    "RepoDigests": [],
    "Parent": "sha256:19fe6021b3c114dc32bb70b276a2aa4c95d05eeba1d98920842290c5682378f4",
    "Comment": "",
    "Created": "2019-05-08T14:20:48.968804549Z",
    "Container": "752779a26450df746105d84c3172e56aef52cf7d7f12f10b594ae6987cc0b147",
    "ContainerConfig": {
        "Hostname": "d0b3d88572d1",
        "Domainname": "",
        "User": "root",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "ExposedPorts": {
            "9000/tcp": {}
        },
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=C.UTF-8",
            "JAVA_HOME=/docker-java-home",
            "JAVA_VERSION=8u212",
            "JAVA_DEBIAN_VERSION=8u212-b01-1~deb9u1",
            "SONAR_VERSION=7.7",
            "SONARQUBE_HOME=/opt/sonarqube",
            "SONARQUBE_JDBC_USERNAME=sonar",
            "SONARQUBE_JDBC_PASSWORD=sonar",
            "SONARQUBE_JDBC_URL="
        ],
        "Cmd": [
            "/bin/sh",
            "-c",
            "chmod -R 655 /opt/sonarqube/extensions/plugins/ &&  chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/"
        ],
        "ArgsEscaped": true,
        "Image": "sha256:19fe6021b3c114dc32bb70b276a2aa4c95d05eeba1d98920842290c5682378f4",
        "Volumes": {
            "/opt/sonarqube/data": {}
        },
        "WorkingDir": "/opt/sonarqube",
        "Entrypoint": [
            "./bin/run.sh"
        ],
        "OnBuild": [],
        "Labels": {}
    },
    "DockerVersion": "17.05.0-ce",
    "Author": "",
    "Config": {
        "Hostname": "d0b3d88572d1",
        "Domainname": "",
        "User": "root",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "ExposedPorts": {
            "9000/tcp": {}
        },
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=C.UTF-8",
            "JAVA_HOME=/docker-java-home",
            "JAVA_VERSION=8u212",
            "JAVA_DEBIAN_VERSION=8u212-b01-1~deb9u1",
            "SONAR_VERSION=7.7",
            "SONARQUBE_HOME=/opt/sonarqube",
            "SONARQUBE_JDBC_USERNAME=sonar",
            "SONARQUBE_JDBC_PASSWORD=sonar",
            "SONARQUBE_JDBC_URL="
        ],
        "Cmd": null,
        "ArgsEscaped": true,
        "Image": "sha256:19fe6021b3c114dc32bb70b276a2aa4c95d05eeba1d98920842290c5682378f4",
        "Volumes": {
            "/opt/sonarqube/data": {}
        },
        "WorkingDir": "/opt/sonarqube",
        "Entrypoint": [
            "./bin/run.sh"
        ],
        "OnBuild": [],
        "Labels": {}
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Size": 976584087,
    "VirtualSize": 976584087,
    "GraphDriver": {
        "Data": {
            "RootDir": "/var/lib/docker/overlay/ad0d706f550d36e9ffd088d7e6ebf3454e8679a3587457cb0686719fbb20313b/root"
        },
        "Name": "overlay"
    },
    "RootFS": {
        "Type": "layers",
        "Layers": [
            "sha256:fbb641a8b94349e89886f65d79928e4673530e2a2b4d33c2c95e0426713f78e4",
            "sha256:604829a174eb966a2102e2e68c7669e1fe56721e8d7ea27f9a286aa33be8be20",
            "sha256:12cb127eee44270330891b1b610ce34e81f53a91a22e3a7f53f0632391d99892",
            "sha256:b17cc31e431beb2f39988dff23d04f85ba4b446fc0a13f304774852fa3c87d85",
            "sha256:af5ae48417766c4fa9b5ce9fc30a245c11dcb568c553bcf810c2fc137f62a97a",
            "sha256:e38df31d449cc619dbcab21468926927fdf4eff01498c8090cfddc0fb21e2a8a",
            "sha256:f350d0146bb3e9534f9bf10bfcdda4e413719644c78729f67667e16ffbd90325",
            "sha256:f7d12d4716672cbfdc98d3e431e63f8a5b236ab84ff80057dfadc6d1d0813fef",
            "sha256:3cc1c13e6e626d0073da455dc51b17a905ea5fc48a26e8d3e4d61a4218c105a9",
            "sha256:c6e01c4cf63e8d9b7d5f3de0a7a8d007bff05b3281dc559ebee890a9f79220a3",
            "sha256:e2c38440cb8a6f84bee3e3b2c45504812721cfa68d16fb601f8079873da8db35",
            "sha256:729909524637bf4631190a3112d993b0df9c1039d533f23452257bbe1eea883c",
            "sha256:f96562dd3433e564ae287d48ec2edf22f72cfdb60447e5df0d1caab63cfc2c27",
            "sha256:320c8f5ca5a033919c934ed8e82f8323e6fd0b38278a56a164c2718aa259b89c"
        ]
    }
}
]

Le conteneur est créé et quitté.

Le docker inspecte:

docker run -d -p 9000:9000 sonarqube-test

Le docker enregistre pour cet ID:

FROM sonarqube

ADD https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/

USER root
RUN  chmod -R 655 /opt/sonarqube/extensions/plugins/ &&  chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/

La racine user est par défaut et le conteneur s'exécute s'il est avec -it au lieu de -d en passant / bin / bash comme ceci: docker run -it sonarqube-test / bin / bash .

Le plugin a été correctement copié dans le répertoire et modifié pour l'utilisateur sonarqube.

Est-ce que quelqu'un sait pourquoi le conteneur est quitté?


0 commentaires

3 Réponses :


-2
votes

Si vous avez un ENTRYPOINT , votre / bin / bash à la fin du docker-run ne fonctionne pas avec -d (avec -it fonctionne parfaitement).

Vous devez ajouter exec tail -f / dev / null ou avec true; dormir 1000; fait à la fin de votre ENTRYPOINT

exec tail -f / dev / null est le plus efficace, vous pouvez vérifier ici: Un drapeau dans le docker pour être toujours en place

Voici un dockers avec cette solution: https://github.com/sequenceiq/hadoop-docker/blob/ master / bootstrap.sh

Ceci est une solution officielle fedora , ils créent un CMD ["/ bin / bash "] à la fin: https://gora-club.com/ / docker-brew-fedora / blob / 4dbc2ccd3b4d52258981eaf12043025054d53023 / x86_64 // Dockerfile


5 commentaires

Vous ne voulez généralement pas d’un conteneur qui ne fait rien. Le questionneur non plus. Si vous regardez leur docker inspect et que la sortie de la commande leur image de base a un ENTRYPOINT , cela ne fonctionne tout simplement pas correctement.


Puis-je voir votre ENTRYPOINT ./bin/run.sh ? Peut-être que vous pouvez ajouter à la fin exec tail -f / dev / null


le fichier dont @ PabloLópezGallego parle se trouve dans le référentiel d'origine de l'image ( .com / SonarSource / docker-sonarqube / tree /… ) et n'a rien à voir avec votre problème. Il est évident d'après votre message que vous n'écrasez pas ce script de démarrage.


@Mihai lorsqu'un POINT D'ENTREE est nécessaire, je le change pour créer mon image plus efficacement.


@ PabloLópezGallego et vous n'êtes pas le seul. Mais dans ce cas, vous avez mal lu le message. Cela peut arriver



0
votes

Vous pouvez déjà définir l'utilisateur lorsque vous AJOUTEZ le fichier:

FROM sonarqube

ADD --chown=sonarqube:sonarqube https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/

J'ai testé cela et cela fonctionne.


3 commentaires

La question est: "Est-ce que quelqu'un sait pourquoi le conteneur est sorti?" vous ne répondez pas à la question, vous ne postez qu'une solution possible du code. Mais dans ce cas, vous avez mal lu le message. Cela peut arriver


Vous avez une faute de frappe dans votre commande: un point après chown "chown". au lieu de "chown". Essayez de copier-coller la commande dans la solution pour éviter les fautes de frappe.


J'ai copié-collé la commande mais j'ai donné l'erreur que j'ai signalée. Je ne sais pas pourquoi pour vous cela a fonctionné et pendant min pas. Peut-être la version de Docker. Mais ce qu'il a résolu, c'est de donner l'autorisation d'exécution qui manquait.



-1
votes

Pour résoudre ce problème, ajoutez l'autorisation d'exécution manquante qui devrait ressembler à ceci:

FROM sonarqube

ADD https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/

USER root
RUN  chmod -R 555 /opt/sonarqube/extensions/plugins/ &&  chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/


0 commentaires