diff --git a/Demo/Dockerfile.CMD b/Demo/Dockerfile.CMD index d92548f..1491aeb 100644 --- a/Demo/Dockerfile.CMD +++ b/Demo/Dockerfile.CMD @@ -4,14 +4,17 @@ WORKDIR /app # 注意:只执行最后一个CMD # CMD /bin/sh -c 'echo 我是CMD指令shell方式执行后写入的内容' - -CMD ["/bin/sh", "-c", "echo exec方式执行后写入的内容"] +# CMD ["/bin/sh", "-c", "read -p 输入任意键退出容器 "] +# eCMD ["-c", "read -p 输入任意键退出容器 "] +ENTRYPOINT ["read", "-p xxxxxxxx"] +# ENTRYPOINT ["/bin/sh", "-c", "read -p 'Enter any key to exit the container' "] # 提供默认参数,与 ENTRYPOINT 指令配合使用 # CMD ["-c", "echo 为 ENTRYPOINT 提供默认参数"] # ENTRYPOINT [ "/bin/sh" ] # 注意:后台运行的话,因为执行完成cmd命令后,进程结束。容器就自动退出了。 +# 可以使用阻塞命令:如等待用户输入等,来阻止容器自动退出 # docker build --rm -f Dockerfile.CMD -t study:buildcmd1 . # docker run --rm -it --name cmd.study study:buildcmd1 \ No newline at end of file diff --git a/Demo/学习.md b/Demo/学习.md index 0b02059..ab96349 100644 --- a/Demo/学习.md +++ b/Demo/学习.md @@ -29,7 +29,7 @@ docker run -it ubuntu:18.04 /bin/bash ``` -+ 基于本地模板,使用 `docker import ` 导入 ++ 基于本地模板,使用 `docker import` 导入 ``` shell # 1 将现有容器,导出为模板文件 @@ -119,8 +119,6 @@ tar包: Powershell示例:Get-Content Dockerfile | docker build - ``` - - Options | 名称与速记 | 默认 | 描述 | @@ -182,7 +180,7 @@ Options # 加载 Dockerfile 文件 => [internal] load build definition from Dockerfile 0.0s # 把 dockerfile 文件传输到Docker守护进程服务,大小为 149B - => => transferring dockerfile: 149B 0.0s + => => transferring dockerfile: 149B 0.0s # 加载.dockerignore(Dockerfile目录下,不上传文件配置文件) 文件 => [internal] load .dockerignore 0.0s # 传输构建上下文(会传Docfile目录及子目录中除.dockerignore配置外的所有文件及文件夹) @@ -204,9 +202,9 @@ Options # 构建第二阶段 # 执行命令 - => [2/2] ADD ./project/ /usr/local/app/ 3.6s + => [2/2] ADD ./project/ /usr/local/app/ 3.6s # 导出镜像 - => exporting to image 0.3s + => exporting to image 0.3s # 导出镜像层 => => exporting layers 0.0s # 写入镜像文件 @@ -291,7 +289,8 @@ exec形式可以避免 shell 字符串冗余,以及使用不包含指定 shell # 该指令将在当前镜像之上的新层中执行任何命令并提交结果。生成的已提交映像将用于下一步中。 ``` -```shell +``` shell + # 示例 FROM busybox WORKDIR /app @@ -307,6 +306,7 @@ RUN ["/bin/sh", "-c", "echo exec方式执行后写入的内容 > demo2.txt"] # cat demo.txt 查看内容 ``` + + CMD > CMD命令设置容器启动后默认执行的命令及其参数,但CMD设置的命令能够被docker run命令后面的命令行参数替换。 @@ -317,4 +317,3 @@ CMD ["executable","param1","param2"] (执行形式,这是首选形式) CMD ["param1","param2"](作为ENTRYPOINT 的默认参数) CMD command param1 param2 (外壳形式) ``` -