入口点 指令

master
bicijinlian 3 years ago
parent dd310eac62
commit 206aff1b69

@ -0,0 +1,23 @@
# 注释: ENTRYPOINT 入口指令
FROM ubuntu
# ENTRYPOINT ["top"]
# ENTRYPOINT ["top", "-b","-c"]
ENTRYPOINT ["top"]
CMD ["-c","-b"]
# 构建镜像
# docker build -f Dockerfile.ENTRYPOINT -t study.dockerfile.entrypoint:latest -t study.dockerfile.entrypoint:0.0.1 .
# docker run -it --rm study.dockerfile.entrypoint
# --entrypoint 覆盖 ENTRYPOINT指令
# docker run -it --rm --entrypoint="ls" study.dockerfile.entrypoint
# --entrypoint不能包含命令参数如下是错误的
# docker run -it --rm --entrypoint="top -b -c" study.dockerfile.entrypoint
# --entrypoint不能包含命令里的参数应该放在[COMMAND]位置,正确例子:
# docker run -it --rm --entrypoint="top" study.dockerfile.entrypoint -b -c

@ -0,0 +1,11 @@
# 部署Docker WebApi
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS EnvStudy
ENV Dockerfile_version=0.0.1
EXPOSE 80/TCP
WORKDIR /app
COPY WebApiPublish/ /app/
ENTRYPOINT ["dotnet", "DockerStudyApi.dll"]
# docker build -f Dockerfile.WebApi -t env/dockerfile.webapi:latest -t env/dockerfile.webapi:0.0.1 .
# docker run --restart=always -p 6400:80 -d --name dockerfile.webapi.contain env/dockerfile.webapi
# 查看日志 docker logs contain_id -f //使用 -f 参数 实时输出ctl + c 退出(不影响容器运行)

@ -1,6 +1,6 @@
# Docker镜像学习
> [官网文档](https://docs.docker.com/engine/reference/commandline/build/) [BuildFile](https://docs.docker.com/engine/reference/builder/)
> [官网文档](https://docs.docker.com/engine/reference/commandline/build/) [DockerFile](https://docs.docker.com/engine/reference/builder/)
## 镜像构建流程
@ -501,8 +501,106 @@ docker run -p 80:80/tcp -p 80:80/udp ...
# docker run --rm -it study.dockerfile.arg
```
+ ONBUILD
+ ADD
> 两种方法:路径中包含空格时,后一种是必须的;包含特殊字符时,需使用转义符;--chown在windows 镜像中无效。
>
> ```textile
> ADD [--chown=<user>:<group>] <src>... <dest>
> ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]
> ```
>
> 1、该指令从宿主机文件、目录或远程文件URL复制到镜像中指定的文件(夹)中。
>
> 2、可以指定多个资源但如果它们是文件或目录则它们的路径被解释为相对于生成上下文的源。
>
> 3、每个路径中可以包含通配符通配符遵守 [Go文件路径匹配](https://golang.org/pkg/path/filepath#Match) 规则。
>
> 4、源路径和目标路径均可使用相对路径源是相对于`构建 上下文件目录`目标是相对于WROKDIR设置的 `当前工作目录`
>
> ```dockerfile
> # *任意 ?任意单个字符,
> # 宿主机构建上下文目录中以hom开头的所有文件添加到镜像绝对目录/mydir/
> ADD hom* /mydir/
>
> # 宿主机构建上下文目录中以“hom+任意字符.txt”所有文件添加到镜像绝对目录/mydir/
> ADD hom?.txt /mydir/
>
> #目标路径为相对路径时,相对的是 WORKDIR 当前工作目录
> ADD test.txt relativeDir/
> ADD test.txt /absoluteDir/
>
> # 使用转义字符
> ADD arr[[]0].txt /mydir/
>
> #使用远程文件
> ADD https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png /mydir/
>
> # 使用用户组
> ADD --chown=55:mygroup files* /somedir/
> ADD --chown=bin files* /somedir/
> ADD --chown=1 files* /somedir/
> ADD --chown=10:11 files* /somedir/
> ```
>
> 使用以下规则:
>
> 1、源路径必须在`构建上下文目录`中,不能超过范围。比如 ADD ../demo.txt /mydir/
>
> 2、以/结尾的URL源则从URL推断文件名并将文件下载后添加。不能推断的无效。
>
> 3、不以/结尾的URL源则从URL下载后添加。
>
> 4、源路径如果是目录则复制该目录的全部内容包括文件系统元数据。目录本身不复制只复制目录内容。
>
> 5、源如果是可识别的压缩格式tar、gzip、bzip2 或 xz的本地tar 存档则将其解压缩为目录。来自远程URL 的资源不会解压缩。复制或解压缩目录时,它的行为与 tar -x 相同.
>
> 6、源如果是任何其他非压缩类型的文件则将其与其元数据一起单独复制。在这种情况下如果以尾部斜杠结尾它将被视为一个目录。
>
> 7、如果直接指定了多个资源或由于使用了通配符则必须是目录并且必须以斜杠结尾
>
> 8、如果不以尾部斜杠结尾则将被视为常规文件并且将内容添加。
>
> 9、目标路径如果不存在则将目录与其路径中所有缺少的目录一起创建
+ COPY
> 与ADD相同只是不会自动解压压缩文件
+ ENTRYPOINT
> 语法:
>
> ```dockerfile
> ENTRYPOINT ["executable", "param1", "param2"]
> ENTRYPOINT command param1 param2
> ```
>
> 1、ENTRYPOINT 在容器启动时执行命令与CMD指令类似。
>
> 2、多个ENTRYPOINT 只执行最后一个
>
> 3、可与CMD指令配合使用此时CMD指令提供默认参数形如 CMD [“param1”,“param2”]
>
> 4、可在容器启动命令中使用--entrypoint参数覆盖。通过 --entrypoint 传的必须是可执行的二进制程序, 即不会以sh -c 形式执行。
```dockerfile
#例
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
#例子
FROM ubuntu
ENTRYPOINT exec top -b
```
+ SHELL
+ ONBUILD
> 类似触发器:在以此镜像为基础镜像的镜像,在构建时执行。
>
> 对于当前镜像的构建没有一点影响;在子镜像构建时默认执行。
+ 小结
暂无

Loading…
Cancel
Save