Docker中的RUN CMD和ENTRYPOINT
总结下Docker中的RUN CMD和ENTRYPOINT区别
命令
用途
备注
RUN
执行命令并创建新的镜像层
在当前镜像的顶部执行命令,并通过创建新的镜像层,经常用于安装软件包,Dockerfile 中常常包含多个 RUN 指令
CMD
设置容器启动后默认执行的命令及其参数
此命令会在容器启动且 docker run 没有指定其他命令时运行(CMD 能够被 docker run 后面跟的命令行参数替换)
ENTRYPOINT
配置容器启动时运行的命令
让容器以应用程序或者服务的形式运行
RUNRUN 指令通常用于安装应用和软件包。
RUN 在当前镜像的顶部执行命令,并通过创建新的镜像层。Dockerfile 中常常包含多个 RUN 指令。
RUN 有两种格式:
Shell 格式:RUN
Exec 格式:RUN ["executable", "param1", "param2"]
下面是使用 RUN 安装多个包的例子:
RUN apt-get update && apt-ge ...
Ubuntu 16.04搭建适用于CTF的Docker靶场
因CTF比赛需要和设备闲置 学习搭建Docker靶场
搭建环境
OS: Ubuntu 16.04
设备类型: VM
宿主机:ESXI 6.5
开始卸载原有Docker$ apt-get remove docker \ docker-engine \ docker.io
安装Ubuntu 16.04 + 上的 Docker CE 默认使用overlay2存储层驱动,无需手动配置。
使用 APT 安装由于apt源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。
$ apt-get update -y && apt-get upgrade -y$ apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common
鉴于国内网络问题,建议使用国内源,官方源请在注释中查看。为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。
$ curl ...