ENTRYPOINT和CMD

ENTRYPOINT和CMD,第1张

原文: https://zhuanlan.zhihu.com/p/30555962

从根本上说, ENTRYPOINT和CMD都是让用户指定一个可执行程序, 这个可执行程序在container启动后自动启动. 实际上, 如果你想让自己制作的镜像自动运行程序(不需要在docker run后面添加命令行指定运行的命令), 你必须在Dockerfile里面, 使用ENTRYPOINT或者CMD命令

比如执行运行一个没有调用ENTRYPOINT或者CMD的docker镜像, 一定返回错误

大部分Linu发行版的基础镜像里面调用CMD命令, 指定容器启动后执行/bin/sh或/bin/bash. 这样镜像启动默认进入交互式的shell

[图片上传失败...(image-10e0a4-1649389009146)]

译注: 3个不同的Linux镜像(ubuntu, busybox, debian)都在Dockerfile的最后调用 CMD '/bin/bash'

启动Linux发行版的基础container后, 默认调用shell程序, 符合大多数人的习惯.

但是, 作为开发者, 你希望在docker镜像启动后, 自动运行其他程序. 所以, 你需要用CMD或者ENTRYPOINT命令显式地指定具体的命令.

在写Dockerfile时, ENTRYPOINT或者CMD命令会自动覆盖之前的ENTRYPOINT或者CMD命令.

在docker镜像运行时, 用户也可以在命令指定具体命令, 覆盖在Dockerfile里的命令.

比如, 我们写了一个这样的Dockerfile:

如果根据这个Dockerfile构建一个新image, 名字叫demo

可以看出 ping 命令在docker启动后自己执行, 但是我们可以在命令行启动docker镜像时, 执行其他命令行参数, 覆盖默认的CMD

docker启动后, 并没有执行 ping 命令, 而是运行了 hostname 命令

和CMD类似, 默认的ENTRYPOINT也在docker run时, 也可以被覆盖. 在运行时, 用--entrypoint覆盖默认的ENTRYPOINT

因为CMD命令很容易被docker run命令的方式覆盖, 所以, 如果你希望你的docker镜像的功能足够灵活, 建议在Dockerfile里调用CMD命令. 比如, 你可能有一个通用的Ruby镜像, 这个镜像启动时默认执行irb ( CMD irb ).

如果你想利用这个Ruby镜像执行任何Ruby脚本, 只需要执行这句话:

译注: ruby -e 'puts "Hello" 覆盖了 irb 命令

相反, ENTRYPOINT的作用不同, 如果你希望你的docker镜像只执行一个具体程序, 不希望用户在执行docker run的时候随意覆盖默认程序. 建议用ENTRYPOINT.

Docker在很多情况下被用来打包一个程序. 想象你有一个用python脚本实现的程序, 你需要发布这个python程序. 如果用docker打包了这个python程序, 你的最终用户就不需要安装python解释器和python的库依赖. 你可以把所有依赖工具打包进docker镜像里, 然后用

ENTRYPOINT指向你的Python脚本本身. 当然你也可以用CMD命令指向Python脚本. 但是通常用ENTRYPOINT可以表明你的docker镜像只是用来执行这个python脚本,也不希望最终用户用这个docker镜像做其他 *** 作.

在后文会介绍如何组合使用ENTRYPOINT和CMD. 他们各自独特作用会表现得更加明显.

药物的发现阶段。目的是找出有潜力成为药物的候选化合物。

通过了解疾病的发病过程及机理,为新药开发提供明确的靶标。通过从已有的天然药物,或通过靶标,定向设计出对于靶标有作用的先导化合物。lead-compound

围绕天然药物或者其他方面得到的先导化合物,通过对这些化合物活性数据与构效关系分析,如利平斯基五倍率法则,进一步指导后续化合物结构优化和修饰,以得到更好的化合物。

通过构效关系及活性研究,筛选出来具有满足要求(药物设计目的)的最优化合物,通过某些指标,如类药性,生物利用度,血脑屏障透过系数等。通过大规模数据、算法进行预测,以选择合适的化合物。

此时药物已进入开发阶段。首先需要完成临床前的毒理学研究,向药监部门提交“实验用新药”申请 investigational new drug, IND 。

首先需要提供一批次的原料药以用于毒理研究(100-1000g)。【此阶段需要尽快完成,只要药物合成路线(或提取方式)能够满足批量获取,一般就能够获得批准,包括成本等此时不必主要考虑】

但同样,随着药物研发项目的后续推进,工艺部门也应当根据需要(商业化等)不断优化合成路线与方法,开发合理的生产工艺与合成路线,满足从I—III期临床用药与商业化的需求。

了解药物在体内的吸收、分布、代谢、排泄的相关数据。用于指导研究给药方式(口服、注射等),给药频率与剂量。

证明药物对目标疾病有特定的治疗效果。并根据药代动力学的研究结果,评估药物的安全治疗剂量范围。

毒理研究种类较多,一般来说包括急性、亚急性、慢性毒性,或致癌、致突变、生殖毒性等的研究。

根据药物开发的时间需求,毒理学的研究在时间维度上可以进行相应的调整。

根据之前的临床前研究结果,根据药物的药代动力学数据,及药物的治疗目的,选择合适的给药方式与处方制剂。并对于设计好的制剂,也应进行同样的安全性及动力学评估。

当一个化合物通过了临床前研究阶段,就需要向药监部门提交新药临床研究申请。以开展药物的临床研究。

此时需要提供先前实验的材料:化合物的结构,给药方式,毒理学研究等;以及临床实验的相关计划:在何地,由谁以及如何进行临床试验。

所有的临床方案必须经过伦理审评委员会(InstitutionalReview Board,IRB)的审查和通过,并在后续执行过程中,每年向药监部门及伦理审评委员会汇报临床实验的进程和结果。

在美国,如果新药申请在提交后的30天内FDA没有驳回,那么该申请则视为有效,可以进行人体实验。在中国则需要NMPA(原CFDA)批准。

将药物第一次用于人体以研究药物性质的实验,一般也称为耐受性实验。Ⅰ期临床试验一般需要征集20-100名 正常和健康的志愿者 (对于肿瘤药物而言则通常为肿瘤病人)。

在严格控制的条件下,给不同的剂量(安全性得到进一步评估后可以进行多剂量给药)于志愿者,住院以进行24小时的密切监护,监测药物的血液浓度,其吸收、分布、代谢和排泄以及药效持续时间的数据,有益或不良反应,评价药物在人体内的性质。为将来为病人使用提供合适剂量。

为了证实药物的治疗目的,则会进一步执行Ⅱ期临床试验,也是在 病人 身上做的实验。 Ⅱ期的临床试验通常需要100-500名病人进行实验。

通过检测与Ⅰ期临床试验相似的药代动力学数据,以及药效,确定药物在实际病人上的有效性与安全性。

Ⅱ期临床试验一般采用随机盲法对照试验(也可采用其他形式),及在病人和医生都不知道的情况下,分别给不同病人给予对照组与实验组的药物。

Ⅲ期临床以商业化生产工艺提供用药。而原料药与制剂工艺,也应推到至这一阶段,一般来说,此时的药物生产应考虑多个方面,包括:产品质量,成本,安全性,稳定性,可持续性,及环境影响。

Ⅲ期临床一般需要1000-5000名病人。相比起Ⅱ期临床试验,则是在更大范围的病人身上进行实验,以获得大样本的数据。根据统计学分析,判断药物有效性与安全性。以及药物相比市场上的老药(同类型治疗目的的已上市的药物),新药是否有更好的治疗效果。

除此之外,三期临床实验还应关注 老年人 儿童用药 (若该药适用)。一般从安全性考虑,老年人与儿童相比,对药物耐受更低。一般儿童参加的临床试验,在Ⅲ期临床试验后进行。

一般来说三期临床可能持续数年时间。

在完成全部三期临床实验后,并分析所有数据,证实药物的有效性与安全性后,则可以向药监部门递交新药申请。一般新药申请程序比较复杂,且相关文件过多,处理时间也比较长。参考FDA,规定新药申请应在6月内审批完成。

在获得药监部门批准新药申请文件后,药物即可正式上市,供医生与病人选择。但新药持有者需持续向药监部门递交药物副作用及质量管理相关资料。某些药物还会要求做 IV期临床试验,以观测长期副作用。

四期临床又称为,药物上市后监测研究。药物在大规模人群使用后,还需对其疗效与不良反应进行评估,药监部门要求根据这一结果来修订药品使用说明书,包括药物配伍使用,药物使用禁忌。如果上市后发现有之前未被发现的不良反应,药品还会被药监部门要求加注警告,严重者甚至被要求下架。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11037329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存