dockfile杂项

工程源代码+工程的配置文件 在外面配置好

1 工程的配置文件,是工程的一部分

2 要贯彻内聚原则, 用1句挂载整个工程。

在外面集中配置好在一个路径下,一起挂进去或者COPY进去。

防止先COPY了体积小的“配置文件”,然后发现-v挂源码执行不了,于是又COPY了体积大的工程源码。

根据docker image的覆盖机制,如果整个目录覆盖,那么本来有的,覆盖之后也没有了。

 

ADD与COPY

HOST端 

绝对路径 ——ADD,

相对dockerfile路径下的相对路径 ./  ——用COPY

但COPY不能用../访问dockerfile所在路径的上级路径

 

IMAGE端:

COPY要写绝对路径,一定要检查正确

docker-compse -v 时,两边都绝对路径。

如果COPY总提示错误,查看一下.dockerignore 

 

 

ENTRYPOINT与CMD

都是启动容器后才执行的语句(创建镜像时不执行。如果想创建镜像时执行,直接用RUN)

每种只能有1句:如果有多个CMD,只会执行最后1个。但是CMD里可以 用 && 执行多条。但其实执行多条命令,应该直接写成1个sh

ENTRYPOINT会先执行,再执行CMD。CMD不会覆盖ENTRYPOINT

也可以不写在dockerfile里。docker-compose.yml里 等价的语句是

entrypoint  command  (小写)

 

停止、删除全部容器

docker stop $(docker ps -q) & docker rm $(docker ps -aq)

删除none镜像

docker rmi $(docker images | grep "none")

卸载nginx

如果docker-compose up失败,提示端口占用,可能是host上正在运行着什么,比如nginx

卸载要这样写sudo apt-get remove nginx nginx-common

查看运行时内存CPU占用

docker stats $(docker ps | awk '{if(NR>1) print $NF}')

 

posted @ 2017-12-09 08:54  永远的幻想  阅读(227)  评论(0编辑  收藏  举报