搜索结果
0000-00-00
关于dockerfaq 问答转载声明
0000-00-00
既然一个容器一个应用,那么我想在该容器中用计划任务cron 怎么办?
from datetime import datetime print cron job has run at 0 with environment variable .format str datetime.now 这task.py 可以在构建镜像时放进去,也可以挂载宿主目录。在这里,我以挂载宿主目录举例。构建镜像
dockerbuild -t cronjob:latest . 运行镜像
dockerrun --name cronjob -d -v pwd /task.py:/app/task.py -v pwd /log/:/var/log/ cronjob:latest 需要注意的是,应该在构建主机上赋予task.py 文件可执行权限。
0000-00-00
如何初始化卷?
使用/data/hello.txt 文件了。但是,如果容器是严重依赖于这个hello.txt 文件的话,这样做就会出问题。容器会因为hello.txt 文件不存在,而报错退出,导致根本没
有dockercp 的机会。这种情况,我们可以变通一下。dockerrun --rm -v pwd:/source -v mydata:/data busybox cp /source/hello.txt /data/ dockerrun -d --name web -v mydata:/data nginx 这里我们先启动了一个busybox 容器,分别挂载要复制的源
0000-00-00
如何列出容器和所使用的卷的关系?
要感谢强大的go template ,可以使用下面的命令来显示:
dockerinspect --format .name > with .mounts range . .name end end
dockerps -aq 注意这里的换行和空格是
有意如此的,这样就可以再返回结果控制缩进格式。其结果将是如下形式:
dockerinspect --format .name > with .mounts range . .name end end
dockerps -aq /deviceapi1 > /devicedashboard-debug1 > /deviceredis1 > deviceredis-data /devicemongo1 > devicemongo-data 61453e46c3409f42e938324d7feffc6aeb6b7ce16d2080566e3b128c910c9570 /prometheusprometheus1 > fc0185ed3fc637295de810efaff7333e8ff2f6050d7f9368a22e19fb2c1e3c3f
是回到了十多年的u 盘时代。这同样是不推荐的,镜像的发布、更新维护应该使用registry 。无论是自己架设私有registry 服务,还是使用公有registry 服务,如
dockerhub 。
0000-00-00
dockerfile 怎么写?
0000-00-00
那我把所 有命令都合并到一个run 就对了吧?
是这么写的:copy package.json /usr/src/app/ run npm install copy . /usr/src/app 从层数上看,确实多了一层。但实际上,这三行分开是故意这样做的,其目的就是合理分层,充分利用
docker分层存储的概念,以增
加构建、部署的效率。在
dockerbuild 的构建过程中,如果某层之前构建过,而且该层未发生改变的情况下,那么
docker就会
0000-00-00
context 到底是一个什么概念?
context ,上下文,是
dockerbuild 中很重要的一个概念。构建镜像必须指定context :
dockerbuild -t xxx 或者docker-compose.yml 中的app: build: context: dockerfile: dockerfile 这里都需要指定context 。context 是工作目录,但不要和构建镜像的dockerfile 中的workdir 弄混,context 是
dockerbuild 命令的工作目录。
dockerbuild 命令实际上是客户端,真正构建镜像并非由该命令直接完成。
dockerbuild 命
0000-00-00
entrypoint 和cmd 到底 有什么不同?
才可以启动主进程,而启动的办法就是调用entrypoint ,并且把cmd 作为参数传进去运行。也就是下面的概念:entrypoint cmd 假设有个myubuntu 镜像entrypoint 是sh -c ,而我们
dockerrun -it myubuntu uname -a 。那么uname -a 就是运行时指定的cmd ,那么
docker实际运行的就是结合起来的结果:sh -c uname -a 如果没有指定entrypoint ,那么就只执行cmd ;如果
0000-00-00
拿到一个镜像,如何获得镜像的dockerfile ?
直接去
dockerhub 上看:大多数
dockerhub 上的镜像都会
有dockerfile ,直接在
dockerhub 的镜像页面就可以看到dockerfile 的链接;如果是自己公司做的,最简单的办法就是打个电话、发个消息问一下。别看这个说法看起来很傻,不少人都宁可自己琢磨也不去问;如果没
有dockerfile ,一般这类镜像就不应该考虑使


