zoukankan      html  css  js  c++  java
  • 第一本Docker书学习小记

    1. docker run 命令中可以直接使用某个镜像的id来启动对应的容器。
    2. docker build PATH 构建命令中的PATH是用于获取Dockerfile文件以及作为上下文环境的根目录。
    3. 可以在Dockerfile文件的开头处配合ARG命令来设定变量,以便于在 docker build --build-arg xxx 命令构建时传入,同时可以利用传入变量的值更新来控制后续所有命令不使用缓存cache而重新构建。
    4. Dockerfile文件中的每一行构建命令都是相互独立的环境,如果在上一条命令中使用 cd 来切换目录,并不会影响下一条命令的工作目录,如需改变,则需要使用 workdir 命令来改变。
    5. Dockerfile中的compose命令仅仅用于说明该镜像内进程使用了80端口,实际是否使用并没有强制要求。它影响的是docker build -P 构建时自动映射出去expose暴露的端口。如果没有进行expose端口暴露,-P选项什么都不做。
    6. 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运行结束,随后容器很快退出。
    7. 在Dockerfile文件中使用workdir时,会切换镜像的工作目录,使用了多个workdir时,容器实际启动时的工作目录以最后一个为准,workdir命令所切换的path如果不存在,则会创建。docker run -w newPath 命令在拉起一个容器时不会覆盖Dockerfile文件中使用的workdir(书本说覆盖有误导嫌疑),实际上传入newPath只会在容器拉起后将容器的工作目录切换到newPath中。
    8. 在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无需事先添加。
  • 相关阅读:
    1、编写一个简单的C++程序
    96. Unique Binary Search Trees
    python 操作redis
    json.loads的一个很有意思的现象
    No changes detected
    leetcode 127 wordladder
    django uwsgi websocket踩坑
    you need to build uWSGI with SSL support to use the websocket handshake api function !!!
    pyinstaller 出现str error
    数据库的读现象
  • 原文地址:https://www.cnblogs.com/pluse/p/14422815.html
Copyright © 2011-2022 走看看