Entries Category “Docker”

Sun 27 March 2016

Dockerfile参数学习

镜像和容器 容器是镜像的实例。一个镜像可以对应多个容器。每次使用docker run 时都会重新创建该镜像的一个容器,我们可以为该命令指定--name 来为所产生的容器指定名字: docker run -d --name serve ubuntu 这样根据ubuntu这个镜像产生的容器就叫serve。 。当容器运行时,我们对容器的修改只会写人到容器的文件系统,而不会影响到对应镜像。所以, 前一次run形成的改动不会影响到后一次run所创建的容器。想要这些修改对image生效, 可以使用docker commit ├─ 可写层(container) 内核层 - 镜像层 ─ ├─ 可写层(container) ├─ 可写层(container) 内核层 - 镜像层 -可写层(container) CMD和ENTRYPOINT的区别 首先两者都可以让你在容器运行的时候执行一条命令,而且这两个字段在Dockerfile中只能指定一次,如果指定多次,那么则以最后一次为准。 再来说两者的区别: 假如我们在运行容器的命令docker run read more
Sun 27 March 2016

关于Docker的一些杂货

如何在外部获取容器的日志? 可以使用docker logs -f 的方式在宿主机显示容器进程所产生的日志,就像我们使用tail那样。但是如果我们需要访问的并不是容器主进程所记录的日志呢?比如说,现在有一个很简单的web应用,我们选择让他运行在Docker容器里面,web服务器使用了gunicorn,它支持使用参数--access-file=filename来将该web应用的访问请求记录到指定的日志中去。当我们需要方便的获取这些访问记录或者实时查看的时候,应该怎么做? 当我们的web应用运行时,gunicorn所记录的日志只存在于docker系统的读写层(容器container),而不会影响到只读层(镜像image)。如果我们想要较为方便的得到容器中的日志文件,可以使用Docker提供的的volume。你可以理解为将宿主系统的文件夹挂载至容器中从而达到实时共享文件夹的目的。 你可以在很多地方指定volume, 比如: 1. Dockerfile 的VOLUME命令 # Dockerfile RUN mkdir -p /data/logs/webapp VOLUME /data/logs/webapp 当你使用该Dockerfile去build一个镜像,并使用该镜像来运行了一个容器实例的时候,宿主系统的某个文件夹就会被挂载为该容器的/data ... read more
 

Tags