美文网首页
Docker In Action 小记1

Docker In Action 小记1

作者: 黄耀东_c1d2 | 来源:发表于2018-11-15 22:41 被阅读0次

    命令相关

    1. detach 使用了-t选项打开的交互式容器 的方法:长安ctrl,然后分别按下P键和Q键,则当前容器会被detach,并退回宿主机的shell。
    2. docker logs命令可用来显示容器日志。容器输入到标准输出及标准错误输出的内容都会被docker logs日志记录下来。但是docker logs日志不会自动截断,因此对于长期运行的程序可能会带来性能问题。
    docker logs container_name 
    
    1. 创建没有独立PID命名空间的容器的方法:在docker execdocker run命令中加上 --pid 参数,并将其值设置为 host

    2. docker create命令:创建一个容器,并使之停留在stop状态。使用该命令可以获取以交互模式运行的docker容器的ID

    3. docker rundocker create命令可以带上一个--cidfile参数,并赋予其一个不存在的文件名,以将新建的容器的ID输入到指定文件中。如果指定的文件已经存在,则docker不会创建新容器。

    4. 在创建容器时,可以加上--read-only选项,创建一个带有只读文件系统的容器。该参数可确保容器中的文件不会被改变。由于镜像启动时可能需要写入一些文件。若设置了该参数可能会导致容器启动失败,对此,需要利用-v参数设置一些可写的volumes以供程序正常运行。

    5. 创建容器时,--env-e)参数能指定容器的环境变量,格式为

    --env VIRABLE_NAME = VIRABLE_VALUE
    
    1. 创建容器时指定 --restart参数可以设定容器在失败时的重启策略。多次重试之间,等待时间采用指数回退发计算。重启策略及容器失败时退出码详解可见这篇文章。设置了次参数后,若容器运行终止,则容器会进入restarting状态。

    2. 容器创建时,可使用--entrypoint参数覆盖dockerfile中的ENTRYPOINT指令。此时命令行参数会成为entrypoint指令的参数。

    3. 容器创建时,指定--rm参数,可在容器进入exited状态后释放容器占用的资源。

    原理相关

    1. docker容器在八个方面进行了隔离:
    • PID namespace : 进程标识及能力
    • UTS namespace : 主机及域名
    • MNT namespace : 文件系统访问及结构结构
    • IPC namespace : 通过共享内存进行的进程间通信
    • NET namespace : 网络访问及结构
    • USR namespace : 用户名及标识
    • chroot() : 控制文件系统根路径
    • cgroups : 资源的保护
    1. PID namespace : 一个可以用来标识进程的数字的集合

    2. 常见的资源冲突问题:

    • 两个进程绑定了同一个网络端口
    • 两个进程使用了相同的临时文件名,该文件名受文件锁保护无法被共享。
    • 两个进程需使用不同版本的全局共享软件库
    • 两个相同的程序需要使用相同的PID文件
    • 新的程序修改了已存在的程序使用着的一个全局变量,导致老程序崩溃
    1. docker容器状态转换机:


      容器状态转换
    2. docker容器的启动顺序需要与docker容器间的依赖顺序相反(例如,容器A 有一个link参数将容器B link到A之上,则容器B需要在容器A之前启动,否则docker会报错。)。因此docker不可能构建一个有循环依赖关系的容器拓扑。

    相关文章

      网友评论

          本文标题:Docker In Action 小记1

          本文链接:https://www.haomeiwen.com/subject/ejqffqtx.html