第一本Docker书学习小记
- docker run 命令中可以直接使用某个镜像的id来启动对应的容器。
- docker build PATH 构建命令中的PATH是用于获取Dockerfile文件以及作为上下文环境的根目录。
- 可以在Dockerfile文件的开头处配合ARG命令来设定变量,以便于在 docker build --build-arg xxx 命令构建时传入,同时可以利用传入变量的值更新来控制后续所有命令不使用缓存cache而重新构建。
- Dockerfile文件中的每一行构建命令都是相互独立的环境,如果在上一条命令中使用 cd 来切换目录,并不会影响下一条命令的工作目录,如需改变,则需要使用 workdir 命令来改变。
- Dockerfile中的compose命令仅仅用于说明该镜像内进程使用了80端口,实际是否使用并没有强制要求。它影响的是docker build -P 构建时自动映射出去expose暴露的端口。如果没有进行expose端口暴露,-P选项什么都不做。
- cmd/entrypoint中使用[ ]数组语法指定参数时不会额外加上 /bash/sh -c 的字符串,如果不使用[ ]数组语法指定参数时,则书本4.5.10节entrypoint中的示例:"sudo docker run –t -i jamtur01/static_web -g "daemon off;" 会很快退出而失败,不用[ ]数组语法指定的命令/usr/sbin/nginx则会被冠以前缀 /bash/sh -c,而 -g "daemon off;" 这个参数会被传递给/bash/sh -c作为shell的参数而不是nginx的参数,然后nginx没有启用前台运行,依旧是后台运行后立即返回shell,shell运行结束,随后容器很快退出。
- 在Dockerfile文件中使用workdir时,会切换镜像的工作目录,使用了多个workdir时,容器实际启动时的工作目录以最后一个为准,workdir命令所切换的path如果不存在,则会创建。docker run -w newPath 命令在拉起一个容器时不会覆盖Dockerfile文件中使用的workdir(书本说覆盖有误导嫌疑),实际上传入newPath只会在容器拉起后将容器的工作目录切换到newPath中。
- 在Dockerfile中使用user指令来设置用户名时,需要事先使用 RUN useradd -s /bin/bash user 添加好对应的用户,否则会提示docker: Error response from daemon: unable to find user myuser: no matching entries in passwd file错误,也可以在docker run -u 123 拉起容器时,使用-u选项传入一个用户id,这个id无需事先添加。
原文地址:https://www.cnblogs.com/pluse/p/14422815.html