一 FROM三种格式
FROM <image> [AS <name>]
FROM <image>[:<tag>] [AS <name>]
FROM <image>[@<digest>] [AS <name>]
二 ARG是唯一一个可用于FROM前的指令
1 示例
ARG CODE_VERSION=latest
FROM base:${CODE_VERSION}
CMD /code/run-app
FROM extras:${CODE_VERSION}
CMD /code/run-extras
2 示例
ARG VERSION=latest
FROM busybox:$VERSION
ARG VERSION
RUN echo $VERSION > image_version
三 实战1
1 Dockerfile
ARG CODE_VERSION=latest
FROM busybox:${CODE_VERSION}
RUN echo "hello"
FROM alpine:${CODE_VERSION}
RUN echo "world"
2 测试
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 6ad733544a63 7 days ago 1.13MB
alpine latest 053cde6e8953 7 days ago 3.96MB
[root@localhost ~]# cd df
[root@localhost df]# ll
total 4
-rw-r--r--. 1 root root 228 Nov 11 16:48 Dockerfile
[root@localhost df]# ls
Dockerfile
[root@localhost df]# vim Dockerfile
[root@localhost df]# docker build -t vker/arg .
Sending build context to Docker daemon 2.048kB
Step 1/5 : ARG CODE_VERSION=latest
--->
Step 2/5 : FROM busybox:${CODE_VERSION}
---> 6ad733544a63
Step 3/5 : RUN echo "hello"
---> Running in f7fa327289a3
hello
---> b841c0328a0c
Removing intermediate container f7fa327289a3
Step 4/5 : FROM alpine:${CODE_VERSION}
---> 053cde6e8953
Step 5/5 : RUN echo "world"
---> Running in f214d3bed25f
world
---> 3a10f9de8220
Removing intermediate container f214d3bed25f
Successfully built 3a10f9de8220
Successfully tagged vker/arg:latest
[root@localhost df]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vker/arg latest 3a10f9de8220 6 seconds ago 3.96MB
<none> <none> b841c0328a0c 8 seconds ago 1.13MB
busybox latest 6ad733544a63 7 days ago 1.13MB
alpine latest 053cde6e8953 7 days ago 3.96MB
[root@localhost df]# docker inspect b8
[
{
"Id": "sha256:b841c0328a0c0754eec7f5b6a137e3df85273993803dea0bcd108c40495d3797",
"RepoTags": [],
"RepoDigests": [],
"Parent": "sha256:6ad733544a6317992a6fac4eb19fe1df577d4dec7529efec28a5bd0edad0fd30",
"Comment": "",
"Created": "2017-11-11T09:56:05.183037956Z",
"Container": "f7fa327289a3c33e3a4409bfd05e6d531057242c220ade341074170dcf9e8a8c",
"ContainerConfig": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"echo \"hello\""
],
"ArgsEscaped": true,
"Image": "sha256:6ad733544a6317992a6fac4eb19fe1df577d4dec7529efec28a5bd0edad0fd30",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": [],
"Labels": null
},
"DockerVersion": "17.09.0-ce",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"sh"
],
"ArgsEscaped": true,
"Image": "sha256:6ad733544a6317992a6fac4eb19fe1df577d4dec7529efec28a5bd0edad0fd30",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": [],
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 1129289,
"VirtualSize": 1129289,
"GraphDriver": {
"Data": {
"RootDir": "/var/lib/docker/overlay/ed5d277761174e507cead0c30199fcfcf1e19e1cc476bbf70ea401fffda8a0ca/root"
},
"Name": "overlay"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:0271b8eebde3fa9a6126b1f2335e170f902731ab4942f9f1914e77016540c7bb"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
四 实战2
[root@localhost df]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vker/arg latest 3a10f9de8220 6 minutes ago 3.96MB
<none> <none> b841c0328a0c 6 minutes ago 1.13MB
busybox latest 6ad733544a63 7 days ago 1.13MB
alpine latest 053cde6e8953 7 days ago 3.96MB
[root@localhost df]# docker rmi 3a b8
Untagged: vker/arg:latest
Deleted: sha256:3a10f9de822086cc0f880a0cc09b88528eda7656687e9d9c066f3b294e321f5e
Deleted: sha256:b841c0328a0c0754eec7f5b6a137e3df85273993803dea0bcd108c40495d3797
[root@localhost df]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 6ad733544a63 7 days ago 1.13MB
alpine latest 053cde6e8953 7 days ago 3.96MB
[root@localhost df]# vim Dockerfile
[root@localhost df]# cat Dockerfile
ARG VERSION=latest
FROM busybox:$VERSION
ARG VERSION
RUN echo $VERSION > image_version
[root@localhost df]# docker build -t vker/arg .
Sending build context to Docker daemon 2.048kB
Step 1/4 : ARG VERSION=latest
--->
Step 2/4 : FROM busybox:$VERSION
---> 6ad733544a63
Step 3/4 : ARG VERSION
---> Running in 8939dbe998e2
---> ac5b7017cdf9
Removing intermediate container 8939dbe998e2
Step 4/4 : RUN echo $VERSION > image_version
---> Running in 9c6f12bad08d
---> 1cda70c9bb58
Removing intermediate container 9c6f12bad08d
Successfully built 1cda70c9bb58
Successfully tagged vker/arg:latest
[root@localhost df]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vker/arg latest 1cda70c9bb58 7 seconds ago 1.13MB
busybox latest 6ad733544a63 7 days ago 1.13MB
alpine latest 053cde6e8953 7 days ago 3.96MB
[root@localhost df]# docker run -it 1c
/ # ls
bin etc image_version root tmp var
dev home proc sys usr
/ # cat image_version
latest
/ # [root@localhost df]# vim Dockerfile
[root@localhost df]# docker build -t vker/arg:0.1 .
Sending build context to Docker daemon 2.048kB
Step 1/3 : ARG VERSION=latest
--->
Step 2/3 : FROM busybox:$VERSION
---> 6ad733544a63
Step 3/3 : RUN echo $VERSION > image_version
---> Running in 854528ede093
---> 7821096bf139
Removing intermediate container 854528ede093
Successfully built 7821096bf139
Successfully tagged vker/arg:0.1
[root@localhost df]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vker/arg 0.1 7821096bf139 11 seconds ago 1.13MB
vker/arg latest 1cda70c9bb58 3 minutes ago 1.13MB
busybox latest 6ad733544a63 7 days ago 1.13MB
alpine latest 053cde6e8953 7 days ago 3.96MB
[root@localhost df]# docker run -it 78
/ # ls
bin etc image_version root tmp var
dev home proc sys usr
/ # cat image_version
/ # [root@localhost df]# vim Dockerfile
[root@localhost df]# cat Dockerfile
ARG VERSION=latest
FROM busybox:$VERSION
RUN echo $VERSION > image_version