为什么没有使用“docker run image command”启动容器的日志?
我使用docker run genezys/gitlab:7.5.2
命令来创build并启动一个容器:
[root@localhost ~]# docker run genezys/gitlab:7.5.2 /opt/gitlab/embedded/bin/runsvdir-start: line 34: ulimit: max user processes: cannot modify limit: Operation not permitted /opt/gitlab/embedded/bin/runsvdir-start: line 37: /proc/sys/fs/file-max: Read-only file system [2015-05-05T05:43:02+00:00] INFO: Forking chef instance to converge... ......
我可以看到有在terminal输出的日志。
但是当我用docker run genezys/gitlab:7.5.2 /bin/true
命令:
[root@localhost ~]# docker run genezys/gitlab:7.5.2 /bin/true [root@localhost ~]#
没有输出日志。
为什么没有使用docker run image command
启动容器的日志?
那是因为/bin/true
CMD(来自docker run genezys/gitlab:7.5.2 /bin/true
)会覆盖Dockerfile中定义的原始CMD:
# Default is to run runit & reconfigure CMD ["/usr/local/bin/gitlab.sh"]
由于GitLab永远不会运行(使用/bin/true
),它从不输出任何日志。
docker run
有一个COMMAND
参数:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker运行“重写docker文件图像默认值”提到:
四个Dockerfile命令在运行时不能被覆盖:
FROM
,MAINTAINER
,RUN
和ADD
。
docker run
其他一切都有相应的覆盖 。
这包括CMD
:
回顾Docker命令行中的可选命令:
$ sudo docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
此命令是可选的,因为创buildIMAGE的人可能已经使用Dockerfile
CMD
指令提供了默认的COMMAND
。
作为操作员(从图像运行容器的人员),只要指定一个新的COMMAND
,就可以覆盖该CMD
指令。如果图像也指定了一个
ENTRYPOINT
那么CMD
或者COMMAND
作为参数附加到ENTRYPOINT
。
- 在Docker中,Gitlab从6.x迁移到8
- 用npm设置Rails的GitLab CI
- gitlab-runner和docker executor找不到官方的图片,比如maven:3.3.9-jdk-8
- Gitlab CI /var/run/docker.sock:写入:损坏的pipe道
- 我如何使用git客户端来访问gitlab docker?
- 在本地osx上丢失了数据docker gitlab
- 在Synology NAS上使用Docker在GitLab上启用SSL
- gitlab-ci runner的Docker执行器| 我怎样才能看到docker容器在哪里生成?
- 具有Docker执行器克隆问题的OmniBus GitLab CE Multirunner