继续dockerfile文档的阅读
This commit is contained in:
@@ -304,7 +304,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y ...
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt-get update && apt-get install -y ...
|
||||
```
|
||||
# ADD
|
||||
## ADD
|
||||
ADD指令拥有两种形式:
|
||||
```dockerfile
|
||||
ADD [--chown=<user>:<group>] [--checksum=<checksum>] <src>... <dest>
|
||||
@@ -323,4 +323,58 @@ ADD hom?.txt /mydir/
|
||||
```
|
||||
`dest`是一个绝对路径,或是相对于`WORKDIR`的相对路径,`src`将会被复制到目标容器中。
|
||||
如果想要ADD包含特殊字符的文件或目录(例如`[`或`]`),需要对这些路径进行转义。
|
||||
所有新文件和目录创建时,UID和GID都是0,如果想要为新建文件或目录指定其他的值,可以使用`--chown`选项来指定`username:groupname`或`uid:gid
|
||||
### ADD --chown
|
||||
所有新文件和目录创建时,UID和GID都是0,如果想要为新建文件或目录指定其他的值,可以使用`--chown`选项来指定`username:groupname`或`uid:gid.
|
||||
在仅仅指定了username或UID而没有指定groupname或GID的情况下,将会把GID设置为和UID相同的值。
|
||||
ADD指令的使用示例如下:
|
||||
```dockerfile
|
||||
ADD --chown=55:mygroup files* /somedir/
|
||||
ADD --chown=bin files* /somedir/
|
||||
ADD --chown=1 files* /somedir/
|
||||
ADD --chown=10:11 files* /somedir/
|
||||
```
|
||||
- 如果`src`是一个本地archive并且以一种可识别的格式压缩,那么其会被解压为一个目录,从remote获取的资源不会被解压。
|
||||
- 如果制定了多个`src`,则`dest`必须是目录,并且`dest`必须以`/`结尾。
|
||||
- 如果`dest`没有指定`/`作为结尾,那么`dest`被视作一个常规文件。
|
||||
- 如果`dest`不存在,那么其会自动创建路径中所有的缺失目录。
|
||||
|
||||
### ADD \<git ref\> \<dir\>
|
||||
该形式允许添加一个git仓库到镜像中,而不需要镜像中存在git命令。
|
||||
```dockerfile
|
||||
ADD [--keep-git-dir=<boolean>] <git ref> <dir>
|
||||
```
|
||||
`--keep-git-dir`选项代表是否保存git仓库中的.git目录,该选项的默认值是`false`.
|
||||
## COPY
|
||||
COPY指令可以按如下两种形式编写:
|
||||
```dockerfile
|
||||
COPY [--chown=<user>:<group>] <src>... <dest>
|
||||
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]
|
||||
```
|
||||
如果路径中含有空格,使用第二种形式。
|
||||
COPY命令从`src`中复制文件和目录并且将其添加到容器文件系统中,添加路径为`dest`.
|
||||
COPY的使用示例如下所示:
|
||||
```dockerfile
|
||||
COPY hom* /mydir/
|
||||
```
|
||||
类似`ADD --chown`,`COPY`命令也支持`COPY --chown`的用法.
|
||||
### COPY --from
|
||||
COPY支持`--from=<name>`选项,可以将`source`设置为先前的build stage而不是build context。**如果找不到具有相同名称的build stage,则会采用具有相同名称的image**。
|
||||
### ENTRYPOINT
|
||||
`ENTRYPOINT`命令具有两种格式:
|
||||
- ***exec***格式:
|
||||
```dockerfile
|
||||
ENTRYPOINT ["executable", "param1", "param2"]
|
||||
```
|
||||
- ***shell***格式:
|
||||
```dockerfile
|
||||
ENTRYPOINT command param1 param2
|
||||
```
|
||||
ENTRYPOINT允许像一个可执行程序一样配置容器。
|
||||
例如,如下示例使用默认内容启动了一个nginx实例,监听80端口:
|
||||
```dockerfile
|
||||
docker run -i -t --rm -p 80:80 nginx
|
||||
```
|
||||
`docker run <image>`命令之后的命令行参数将添加到***exec***形式ENTRYPOINT命令的所有元素之后,其允许参数被传递给entry point。
|
||||
例如,`docker run <image> -d`将会把`-d`传递给entry point。
|
||||
> 可以通过`docker run --entrypoint`命令来覆盖ENTRYPOINT指令。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user