docker - 容器 Docker 运行后退出
问题描述
我有以下 Dockerfile:
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/
当我运行图像构建时:
docker run -d -p 9000:9000 sonarqube-test
容器被创建并退出。
码头工人检查:
[
{
"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"
]
}
}
]
此 ID 的 docker 日志:
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
root 用户是默认用户,如果容器使用 -it 而不是 -d 则通过像这样传递 /bin/bash 来执行:docker run -it sonarqube-test /bin/bash
。
该插件已正确复制到目录并针对用户 sonarqube 进行了修改。
有谁知道为什么要退出容器?
解决方案
您可以在添加文件时设置用户:
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/
我对此进行了测试,并且可以正常工作。
推荐阅读
- html - 悬停放大和缩小背景无法正常工作
- javascript - 打印身份证
- java - 我在 json 答案中看到字符串“urlToImage”,但我的 gsonfactory 没有解析它!为什么?
- c++ - [class.union]/3 的注释中的“Absent default member initializers, ...”句子的目的是什么?
- azure-active-directory - Azure AD - 如何将 SPA 的自定义注册和登录组件链接到 Azure AD 的底层流程
- javascript - 如何使用 while(!feof) 只选择一行的第二个和第四个值?
- javascript - Discord.js:如何临时激活外部 js 文件中的事件
- javascript - 将脚本输出重定向到 docker 日志
- python - 为什么这个 DFS 代码只能在生成器中调用它?
- python - 我无法从 QCalendarWidget() 正确获取价值